diff options
-rw-r--r-- | bfd/ChangeLog | 6 | ||||
-rw-r--r-- | bfd/elf32-arm.h | 5 |
2 files changed, 10 insertions, 1 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 5177dc3..982b902 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,9 @@ +2004-04-21 Philip Blundell <pb@nexus.co.uk> + + * elf32-arm.h (elf32_arm_check_relocs): Don't output REL32 + relocs for locally defined symbols during -shared final link. + (elf32_arm_final_link_relocate): Likewise. + 2004-04-22 Jakub Jelinek <jakub@redhat.com> * elf64-x86-64.c (elf64_x86_64_copy_indirect_symbol): Copy also diff --git a/bfd/elf32-arm.h b/bfd/elf32-arm.h index 39864d4..d6857d4 100644 --- a/bfd/elf32-arm.h +++ b/bfd/elf32-arm.h @@ -1361,6 +1361,8 @@ elf32_arm_final_link_relocate (howto, input_bfd, output_bfd, into the output file to be resolved at run time. */ if (info->shared && (input_section->flags & SEC_ALLOC) + && (r_type != R_ARM_REL32 + || !SYMBOL_CALLS_LOCAL (info, h)) && (h == NULL || ELF_ST_VISIBILITY (h->other) == STV_DEFAULT || h->root.type != bfd_link_hash_undefweak) @@ -3041,7 +3043,8 @@ elf32_arm_check_relocs (abfd, info, sec, relocs) if (info->shared && (sec->flags & SEC_ALLOC) != 0 && ((ELF32_R_TYPE (rel->r_info) != R_ARM_PC24 - && ELF32_R_TYPE (rel->r_info) != R_ARM_PLT32) + && ELF32_R_TYPE (rel->r_info) != R_ARM_PLT32 + && ELF32_R_TYPE (rel->r_info) != R_ARM_REL32) || (h != NULL && (! info->symbolic || (h->elf_link_hash_flags |