This is the mail archive of the
binutils@sources.redhat.com
mailing list for the binutils project.
PPC relocs in shared libraries
- From: Daniel Jacobowitz <drow at mvista dot com>
- To: binutils at sources dot redhat dot com, jakub at redhat dot com, geoffk at geoffk dot org
- Date: Wed, 25 Sep 2002 18:02:09 -0400
- Subject: PPC relocs in shared libraries
H. J.'s binutils releases have had this patch to elf32-ppc.c applied for
some time now:
2001-10-07 Jakub Jelinek <jakub@redhat.com>
* elf32-ppc.c (ppc_elf_check_relocs): Don't output relocations
for debugging sections.
(ppc_elf_relocate_section): Likewise.
diff -ur binutils-2.13.90.0.4/binutils-2.13.90.0.4/bfd/elf32-ppc.c branch-src/bfd/elf32-ppc.c
--- binutils-2.13.90.0.4/binutils-2.13.90.0.4/bfd/elf32-ppc.c 2002-08-14 13:35:11.000000000 -0400
+++ branch-src/bfd/elf32-ppc.c 2002-09-25 17:39:20.000000000 -0400
@@ -2420,7 +2420,7 @@
/* fall through */
default:
- if (info->shared && (sec->flags & SEC_ALLOC) != 0)
+ if (info->shared)
{
#ifdef DEBUG
fprintf (stderr, "ppc_elf_check_relocs need to create relocation for %s\n",
@@ -3178,8 +3178,7 @@
case (int) R_PPC_ADDR14:
case (int) R_PPC_UADDR32:
case (int) R_PPC_UADDR16:
- if (info->shared && r_symndx != 0
- && (input_section->flags & SEC_ALLOC) != 0)
+ if (info->shared && r_symndx != 0)
{
Elf_Internal_Rela outrel;
int skip;
Geoff rejected the patch, saying it was the debugger's job to handle these
relocations. I'm not sure if that's right - I don't see the point in having
to handle them for shared libraries - but GDB needs the code to do so in
order to debug unlinked modules. So, as far as that goes, we're all
together. But in readelf we have this bit (around line 7990):
for (rp = rela; rp < rela + nrelas; ++rp)
{
if (rp->r_offset
!= (bfd_vma) ((unsigned char *) &external->cu_abbrev_offset
- section_begin))
continue;
if (is_32bit_elf)
{
sym = symtab + ELF32_R_SYM (rp->r_info);
if (ELF32_ST_TYPE (sym->st_info) != STT_SECTION)
{
warn (_("Skipping unexpected symbol type %u\n"),
ELF32_ST_TYPE (sym->st_info));
continue;
}
Well, in a shared library these have all been resolved to *ABS* relocs, and
the warning triggers. Should the warning be corrected, or the relocations
removed?
--
Daniel Jacobowitz
MontaVista Software Debian GNU/Linux Developer