PPC relocs in shared libraries
Daniel Jacobowitz
drow@mvista.com
Wed Sep 25 16:09:00 GMT 2002
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
More information about the Binutils
mailing list