bfd/
authorRichard Sandiford <rdsandiford@googlemail.com>
Sun, 19 Sep 2010 10:07:30 +0000 (10:07 +0000)
committerRichard Sandiford <rdsandiford@googlemail.com>
Sun, 19 Sep 2010 10:07:30 +0000 (10:07 +0000)
* elfxx-mips.c (allocate_dynrelocs): Don't add relocation symbols
to the global GOT on VxWorks.

bfd/ChangeLog
bfd/elfxx-mips.c

index b5675cb9e2521841fbd4a47887187726ae8d1515..d6ffa69df899fc2711ad6f0cd8ce49a25a2d0e16 100644 (file)
@@ -1,3 +1,8 @@
+2010-09-19  Richard Sandiford  <rdsandiford@googlemail.com>
+
+       * elfxx-mips.c (allocate_dynrelocs): Don't add relocation symbols
+       to the global GOT on VxWorks.
+
 2010-09-19  Richard Sandiford  <rdsandiford@googlemail.com>
 
        * elfxx-mips.c (_bfd_mips_elf_check_relocs): On VxWorks,
index a0694e3bccd4bd81a793e1b7afdf610159c014af..6b30f11b620f04ebd2332da8095f248260fba7d8 100644 (file)
@@ -8172,9 +8172,14 @@ allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
       if (do_copy)
        {
          /* Even though we don't directly need a GOT entry for this symbol,
-            a symbol must have a dynamic symbol table index greater that
-            DT_MIPS_GOTSYM if there are dynamic relocations against it.  */
-         if (hmips->global_got_area > GGA_RELOC_ONLY)
+            the SVR4 psABI requires it to have a dynamic symbol table
+            index greater that DT_MIPS_GOTSYM if there are dynamic
+            relocations against it.
+
+            VxWorks does not enforce the same mapping between the GOT
+            and the symbol table, so the same requirement does not
+            apply there.  */
+         if (!htab->is_vxworks && hmips->global_got_area > GGA_RELOC_ONLY)
            hmips->global_got_area = GGA_RELOC_ONLY;
 
          mips_elf_allocate_dynamic_relocations