2004-04-21 Philip Blundell <pb@nexus.co.uk>
authorPhil Blundell <philb@gnu.org>
Fri, 23 Apr 2004 19:12:55 +0000 (19:12 +0000)
committerPhil Blundell <philb@gnu.org>
Fri, 23 Apr 2004 19:12:55 +0000 (19:12 +0000)
* 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.

bfd/ChangeLog
bfd/elf32-arm.h

index 5177dc3..982b902 100644 (file)
@@ -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
index 39864d4..d6857d4 100644 (file)
@@ -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