bfd/
authorRichard Sandiford <rdsandiford@googlemail.com>
Mon, 13 Aug 2007 21:16:39 +0000 (21:16 +0000)
committerRichard Sandiford <rdsandiford@googlemail.com>
Mon, 13 Aug 2007 21:16:39 +0000 (21:16 +0000)
* elfxx-mips.c (mips_elf_link_hash_table): Add computed_got_sizes.
(mips_elf_record_global_got_symbol): Increment local_gotno for
each forced-local symbol.
(_bfd_mips_elf_check_relocs): Pass forced-local call symbols to
mips_elf_record_global_got_symbol for VxWorks too.
(_bfd_mips_elf_always_size_sections): Set computed_got_sizes
to true after computing the GOT size.
(_bfd_mips_elf_hide_symbol): Increase local_gotno whenever
got.offset == 1.  Only adjust global_gotno if computed_got_sizes.
For VxWorks, add a local entry when hiding a symbol that needs a
plt but has not been marked as needing a global got entry.
(_bfd_mips_elf_link_hash_table_create): Set computed_got_sizes to
false.

ld/testsuite/
* ld-mips-elf/vxworks-forced-local-1.d,
* ld-mips-elf/vxworks-forced-local-1.s,
* ld-mips-elf/vxworks-forced-local-1.ver: New test.
* ld-mips-elf/mips-elf.exp: Run it.
* ld-mips-elf/tlsdyn-o32-2.d: Adjust for removal of unnecessary
local GOT entry.
* ld-mips-elf/tlsdyn-o32-2.got: Likewise.
* ld-mips-elf/tlsdyn-o32-3.d: Likewise.
* ld-mips-elf/tlsdyn-o32-3.got: Likewise.
* ld-mips-elf/vxworks1-lib.dd: Likewise.
* ld-mips-elf/vxworks1-lib.rd: Likewise.

13 files changed:
bfd/ChangeLog
bfd/elfxx-mips.c
ld/testsuite/ChangeLog
ld/testsuite/ld-mips-elf/mips-elf.exp
ld/testsuite/ld-mips-elf/tlsdyn-o32-2.d
ld/testsuite/ld-mips-elf/tlsdyn-o32-2.got
ld/testsuite/ld-mips-elf/tlsdyn-o32-3.d
ld/testsuite/ld-mips-elf/tlsdyn-o32-3.got
ld/testsuite/ld-mips-elf/vxworks-forced-local-1.d [new file with mode: 0644]
ld/testsuite/ld-mips-elf/vxworks-forced-local-1.s [new file with mode: 0644]
ld/testsuite/ld-mips-elf/vxworks-forced-local-1.ver [new file with mode: 0644]
ld/testsuite/ld-mips-elf/vxworks1-lib.dd
ld/testsuite/ld-mips-elf/vxworks1-lib.rd

index ba0c3fc81ccf50507aa298f15d957e87dfe0eeb1..da56f36af27a8d20f40a21fbdb67968a6fc14123 100644 (file)
@@ -1,3 +1,19 @@
+2007-08-13  Richard Sandiford  <richard@codesourcery.com>
+
+       * elfxx-mips.c (mips_elf_link_hash_table): Add computed_got_sizes.
+       (mips_elf_record_global_got_symbol): Increment local_gotno for
+       each forced-local symbol.
+       (_bfd_mips_elf_check_relocs): Pass forced-local call symbols to
+       mips_elf_record_global_got_symbol for VxWorks too.
+       (_bfd_mips_elf_always_size_sections): Set computed_got_sizes
+       to true after computing the GOT size.
+       (_bfd_mips_elf_hide_symbol): Increase local_gotno whenever
+       got.offset == 1.  Only adjust global_gotno if computed_got_sizes.
+       For VxWorks, add a local entry when hiding a symbol that needs a
+       plt but has not been marked as needing a global got entry.
+       (_bfd_mips_elf_link_hash_table_create): Set computed_got_sizes to
+       false.
+
 2007-08-12  Daniel Jacobowitz  <dan@codesourcery.com>
 
        * coffgen.c (coff_get_normalized_symtab): Correct cast.
index fb8e1f73d7cfa49268d5fdfc09ea507ac4e69422..5abb968a96d10e0aa1a119c554e336a30a2d9100 100644 (file)
@@ -323,6 +323,8 @@ struct mips_elf_link_hash_table
   bfd_vma rld_value;
   /* This is set if we see any mips16 stub sections.  */
   bfd_boolean mips16_stubs_seen;
+  /* True if we've computed the size of the GOT.  */
+  bfd_boolean computed_got_sizes;
   /* True if we're generating code for VxWorks.  */
   bfd_boolean is_vxworks;
   /* True if we already reported the small-data section overflow.  */
@@ -2691,7 +2693,7 @@ mips_elf_create_local_got_entry (bfd *abfd, struct bfd_link_info *info,
 
   memcpy (*loc, &entry, sizeof entry);
 
-  if (g->assigned_gotno >= g->local_gotno)
+  if (g->assigned_gotno > g->local_gotno)
     {
       (*loc)->gotidx = -1;
       /* We didn't allocate enough space in the GOT.  */
@@ -2876,11 +2878,15 @@ mips_elf_record_global_got_symbol (struct elf_link_hash_entry *h,
   if (h->got.offset != MINUS_ONE)
     return TRUE;
 
-  /* By setting this to a value other than -1, we are indicating that
-     there needs to be a GOT entry for H.  Avoid using zero, as the
-     generic ELF copy_indirect_symbol tests for <= 0.  */
   if (tls_flag == 0)
-    h->got.offset = 1;
+    {
+      /* By setting this to a value other than -1, we are indicating that
+        there needs to be a GOT entry for H.  Avoid using zero, as the
+        generic ELF copy_indirect_symbol tests for <= 0.  */
+      h->got.offset = 1;
+      if (h->forced_local)
+       g->local_gotno++;
+    }
 
   return TRUE;
 }
@@ -6528,7 +6534,7 @@ _bfd_mips_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
              /* VxWorks call relocations point the function's .got.plt
                 entry, which will be allocated by adjust_dynamic_symbol.
                 Otherwise, this symbol requires a global GOT entry.  */
-             if (!htab->is_vxworks
+             if ((!htab->is_vxworks || h->forced_local)
                  && !mips_elf_record_global_got_symbol (h, abfd, info, g, 0))
                return FALSE;
 
@@ -7312,6 +7318,7 @@ _bfd_mips_elf_always_size_sections (bfd *output_bfd,
       g->tls_assigned_gotno = g->global_gotno + g->local_gotno;
       htab_traverse (g->got_entries, mips_elf_initialize_tls_index, g);
     }
+  htab->computed_got_sizes = TRUE;
 
   return TRUE;
 }
@@ -9671,6 +9678,7 @@ _bfd_mips_elf_hide_symbol (struct bfd_link_info *info,
   asection *got;
   struct mips_got_info *g;
   struct mips_elf_link_hash_entry *h;
+  struct mips_elf_link_hash_table *htab;
 
   h = (struct mips_elf_link_hash_entry *) entry;
   if (h->forced_local)
@@ -9678,6 +9686,7 @@ _bfd_mips_elf_hide_symbol (struct bfd_link_info *info,
   h->forced_local = force_local;
 
   dynobj = elf_hash_table (info)->dynobj;
+  htab = mips_elf_hash_table (info);
   if (dynobj != NULL && force_local && h->root.type != STT_TLS
       && (got = mips_elf_got_section (dynobj, TRUE)) != NULL
       && (g = mips_elf_section_data (got)->u.got_info) != NULL)
@@ -9715,20 +9724,30 @@ _bfd_mips_elf_hide_symbol (struct bfd_link_info *info,
              gg->assigned_gotno--;
            }
        }
-      else if (g->global_gotno == 0 && g->global_gotsym == NULL)
-       /* If we haven't got through GOT allocation yet, just bump up the
-          number of local entries, as this symbol won't be counted as
-          global.  */
-       g->local_gotno++;
       else if (h->root.got.offset == 1)
        {
-         /* If we're past non-multi-GOT allocation and this symbol had
-            been marked for a global got entry, give it a local entry
-            instead.  */
-         BFD_ASSERT (g->global_gotno > 0);
+         /* check_relocs didn't know that this symbol would be
+            forced-local, so add an extra local got entry.  */
          g->local_gotno++;
-         g->global_gotno--;
+         if (htab->computed_got_sizes)
+           {
+             /* We'll have treated this symbol as global rather
+                than local.  */
+             BFD_ASSERT (g->global_gotno > 0);
+             g->global_gotno--;
+           }
        }
+      else if (htab->is_vxworks && h->root.needs_plt)
+       {
+         /* check_relocs didn't know that this symbol would be
+            forced-local, so add an extra local got entry.  */
+         g->local_gotno++;
+         if (htab->computed_got_sizes)
+           /* The symbol is only used in call relocations, so we'll
+              have assumed it only needs a .got.plt entry.  Increase
+              the size of .got accordingly.  */
+           got->size += MIPS_ELF_GOT_SIZE (dynobj);
+        }
     }
 
   _bfd_elf_link_hash_hide_symbol (info, &h->root, force_local);
@@ -10189,6 +10208,7 @@ _bfd_mips_elf_link_hash_table_create (bfd *abfd)
   ret->use_rld_obj_head = FALSE;
   ret->rld_value = 0;
   ret->mips16_stubs_seen = FALSE;
+  ret->computed_got_sizes = FALSE;
   ret->is_vxworks = FALSE;
   ret->small_data_overflow_reported = FALSE;
   ret->srelbss = NULL;
index af099088e83af5f6248e7cde7c683d818d8672e6..5e0310f09b47ab2f3dd4b1cecfc1d2e9f3f691b6 100644 (file)
@@ -1,3 +1,17 @@
+2007-08-13  Richard Sandiford  <richard@codesourcery.com>
+
+       * ld-mips-elf/vxworks-forced-local-1.d,
+       * ld-mips-elf/vxworks-forced-local-1.s,
+       * ld-mips-elf/vxworks-forced-local-1.ver: New test.
+       * ld-mips-elf/mips-elf.exp: Run it.
+       * ld-mips-elf/tlsdyn-o32-2.d: Adjust for removal of unnecessary
+       local GOT entry.
+       * ld-mips-elf/tlsdyn-o32-2.got: Likewise.
+       * ld-mips-elf/tlsdyn-o32-3.d: Likewise.
+       * ld-mips-elf/tlsdyn-o32-3.got: Likewise.
+       * ld-mips-elf/vxworks1-lib.dd: Likewise.
+       * ld-mips-elf/vxworks1-lib.rd: Likewise.
+
 2007-08-13  Alan Modra  <amodra@bigpond.net.au>
 
        * ld-powerpc/relbrlt.s (.text.pad2): Adjust space.
index ca496c3935fac209f753e58f50a6ff5e5e35fb3d..663ce35b719b8f5ad8e76d192f5c968ddad226a2 100644 (file)
@@ -44,6 +44,7 @@ if {[istarget "mips*-*-vxworks"]} {
     }
     run_ld_link_tests $mipsvxtests
     run_dump_test "vxworks1-static"
+    run_dump_test "vxworks-forced-local-1"
     return
 }
 
index 0c466b695ba3b294bba1aa5856975ac0c362c3a8..3637049c5e329219751e2d67ba94aa533461c4d9 100644 (file)
@@ -11,20 +11,20 @@ Disassembly of section .text:
   .*:  afbe0008        sw      s8,8\(sp\)
   .*:  03a0f021        move    s8,sp
   .*:  afbc0000        sw      gp,0\(sp\)
-  .*:  8f998030        lw      t9,-32720\(gp\)
-  .*:  27848048        addiu   a0,gp,-32696
+  .*:  8f99802c        lw      t9,-32724\(gp\)
+  .*:  27848044        addiu   a0,gp,-32700
   .*:  0320f809        jalr    t9
   .*:  00000000        nop
   .*:  8fdc0000        lw      gp,0\(s8\)
   .*:  00000000        nop
-  .*:  8f998030        lw      t9,-32720\(gp\)
-  .*:  2784803c        addiu   a0,gp,-32708
+  .*:  8f99802c        lw      t9,-32724\(gp\)
+  .*:  27848038        addiu   a0,gp,-32712
   .*:  0320f809        jalr    t9
   .*:  00000000        nop
   .*:  8fdc0000        lw      gp,0\(s8\)
   .*:  00000000        nop
-  .*:  8f998030        lw      t9,-32720\(gp\)
-  .*:  27848034        addiu   a0,gp,-32716
+  .*:  8f99802c        lw      t9,-32724\(gp\)
+  .*:  27848030        addiu   a0,gp,-32720
   .*:  0320f809        jalr    t9
   .*:  00000000        nop
   .*:  8fdc0000        lw      gp,0\(s8\)
@@ -33,10 +33,10 @@ Disassembly of section .text:
   .*:  24638000        addiu   v1,v1,-32768
   .*:  00621821        addu    v1,v1,v0
   .*:  7c02283b        rdhwr   v0,\$5
-  .*:  8f838050        lw      v1,-32688\(gp\)
+  .*:  8f83804c        lw      v1,-32692\(gp\)
   .*:  00000000        nop
   .*:  00621821        addu    v1,v1,v0
-  .*:  8f838044        lw      v1,-32700\(gp\)
+  .*:  8f838040        lw      v1,-32704\(gp\)
   .*:  00000000        nop
   .*:  00621821        addu    v1,v1,v0
   .*:  7c02283b        rdhwr   v0,\$5
@@ -61,20 +61,20 @@ Disassembly of section .text:
   .*:  afbe0008        sw      s8,8\(sp\)
   .*:  03a0f021        move    s8,sp
   .*:  afbc0000        sw      gp,0\(sp\)
-  .*:  8f998030        lw      t9,-32720\(gp\)
-  .*:  27848048        addiu   a0,gp,-32696
+  .*:  8f99802c        lw      t9,-32724\(gp\)
+  .*:  27848044        addiu   a0,gp,-32700
   .*:  0320f809        jalr    t9
   .*:  00000000        nop
   .*:  8fdc0000        lw      gp,0\(s8\)
   .*:  00000000        nop
-  .*:  8f998030        lw      t9,-32720\(gp\)
-  .*:  2784803c        addiu   a0,gp,-32708
+  .*:  8f99802c        lw      t9,-32724\(gp\)
+  .*:  27848038        addiu   a0,gp,-32712
   .*:  0320f809        jalr    t9
   .*:  00000000        nop
   .*:  8fdc0000        lw      gp,0\(s8\)
   .*:  00000000        nop
-  .*:  8f998030        lw      t9,-32720\(gp\)
-  .*:  27848034        addiu   a0,gp,-32716
+  .*:  8f99802c        lw      t9,-32724\(gp\)
+  .*:  27848030        addiu   a0,gp,-32720
   .*:  0320f809        jalr    t9
   .*:  00000000        nop
   .*:  8fdc0000        lw      gp,0\(s8\)
@@ -83,10 +83,10 @@ Disassembly of section .text:
   .*:  24638000        addiu   v1,v1,-32768
   .*:  00621821        addu    v1,v1,v0
   .*:  7c02283b        rdhwr   v0,\$5
-  .*:  8f838050        lw      v1,-32688\(gp\)
+  .*:  8f83804c        lw      v1,-32692\(gp\)
   .*:  00000000        nop
   .*:  00621821        addu    v1,v1,v0
-  .*:  8f838044        lw      v1,-32700\(gp\)
+  .*:  8f838040        lw      v1,-32704\(gp\)
   .*:  00000000        nop
   .*:  00621821        addu    v1,v1,v0
   .*:  7c02283b        rdhwr   v0,\$5
index ba617bbe367890c66bbecd610b2108d00242dcd8..eb4d2c1a26fb989049dd280d3b74fc3921fe2b15 100644 (file)
@@ -4,17 +4,17 @@
 DYNAMIC RELOCATION RECORDS
 OFFSET   TYPE              VALUE 
 00000000 R_MIPS_NONE       \*ABS\*
-10000058 R_MIPS_TLS_DTPMOD32  tlsbin_gd
-1000005c R_MIPS_TLS_DTPREL32  tlsbin_gd
-1000004c R_MIPS_TLS_DTPMOD32  tlsvar_gd
-10000050 R_MIPS_TLS_DTPREL32  tlsvar_gd
-10000054 R_MIPS_TLS_TPREL32  tlsvar_ie
-10000060 R_MIPS_TLS_TPREL32  tlsbin_ie
+10000054 R_MIPS_TLS_DTPMOD32  tlsbin_gd
+10000058 R_MIPS_TLS_DTPREL32  tlsbin_gd
+10000048 R_MIPS_TLS_DTPMOD32  tlsvar_gd
+1000004c R_MIPS_TLS_DTPREL32  tlsvar_gd
+10000050 R_MIPS_TLS_TPREL32  tlsvar_ie
+1000005c R_MIPS_TLS_TPREL32  tlsbin_ie
 
 
 Contents of section .got:
  10000020 00000000 80000000 00000000 00000000  .*
- 10000030 00000000 00000000 00000000 00000000  .*
- 10000040 0040053c 00000001 00000000 00000000  .*
+ 10000030 00000000 00000000 00000000 0040053c  .*
+ 10000040 00000001 00000000 00000000 00000000  .*
  10000050 00000000 00000000 00000000 00000000  .*
- 10000060 00000000 00000000 00000000 00000000  .*
+ 10000060 00000000 00000000 00000000           .*
index 31f1666f5da81a848e1388f72f32cfd8a039e4b2..9e7da50a33b1c32dd060084fd616afbd1ac2d056 100644 (file)
@@ -11,20 +11,20 @@ Disassembly of section .text:
   .*:  afbe0008        sw      s8,8\(sp\)
   .*:  03a0f021        move    s8,sp
   .*:  afbc0000        sw      gp,0\(sp\)
-  .*:  8f998030        lw      t9,-32720\(gp\)
-  .*:  27848048        addiu   a0,gp,-32696
+  .*:  8f99802c        lw      t9,-32724\(gp\)
+  .*:  27848044        addiu   a0,gp,-32700
   .*:  0320f809        jalr    t9
   .*:  00000000        nop
   .*:  8fdc0000        lw      gp,0\(s8\)
   .*:  00000000        nop
-  .*:  8f998030        lw      t9,-32720\(gp\)
-  .*:  2784803c        addiu   a0,gp,-32708
+  .*:  8f99802c        lw      t9,-32724\(gp\)
+  .*:  27848038        addiu   a0,gp,-32712
   .*:  0320f809        jalr    t9
   .*:  00000000        nop
   .*:  8fdc0000        lw      gp,0\(s8\)
   .*:  00000000        nop
-  .*:  8f998030        lw      t9,-32720\(gp\)
-  .*:  27848034        addiu   a0,gp,-32716
+  .*:  8f99802c        lw      t9,-32724\(gp\)
+  .*:  27848030        addiu   a0,gp,-32720
   .*:  0320f809        jalr    t9
   .*:  00000000        nop
   .*:  8fdc0000        lw      gp,0\(s8\)
@@ -33,10 +33,10 @@ Disassembly of section .text:
   .*:  24638000        addiu   v1,v1,-32768
   .*:  00621821        addu    v1,v1,v0
   .*:  7c02283b        rdhwr   v0,\$5
-  .*:  8f838050        lw      v1,-32688\(gp\)
+  .*:  8f83804c        lw      v1,-32692\(gp\)
   .*:  00000000        nop
   .*:  00621821        addu    v1,v1,v0
-  .*:  8f838044        lw      v1,-32700\(gp\)
+  .*:  8f838040        lw      v1,-32704\(gp\)
   .*:  00000000        nop
   .*:  00621821        addu    v1,v1,v0
   .*:  7c02283b        rdhwr   v0,\$5
@@ -57,20 +57,20 @@ Disassembly of section .text:
   .*:  afbe0008        sw      s8,8\(sp\)
   .*:  03a0f021        move    s8,sp
   .*:  afbc0000        sw      gp,0\(sp\)
-  .*:  8f998030        lw      t9,-32720\(gp\)
-  .*:  27848048        addiu   a0,gp,-32696
+  .*:  8f99802c        lw      t9,-32724\(gp\)
+  .*:  27848044        addiu   a0,gp,-32700
   .*:  0320f809        jalr    t9
   .*:  00000000        nop
   .*:  8fdc0000        lw      gp,0\(s8\)
   .*:  00000000        nop
-  .*:  8f998030        lw      t9,-32720\(gp\)
-  .*:  2784803c        addiu   a0,gp,-32708
+  .*:  8f99802c        lw      t9,-32724\(gp\)
+  .*:  27848038        addiu   a0,gp,-32712
   .*:  0320f809        jalr    t9
   .*:  00000000        nop
   .*:  8fdc0000        lw      gp,0\(s8\)
   .*:  00000000        nop
-  .*:  8f998030        lw      t9,-32720\(gp\)
-  .*:  27848034        addiu   a0,gp,-32716
+  .*:  8f99802c        lw      t9,-32724\(gp\)
+  .*:  27848030        addiu   a0,gp,-32720
   .*:  0320f809        jalr    t9
   .*:  00000000        nop
   .*:  8fdc0000        lw      gp,0\(s8\)
@@ -79,10 +79,10 @@ Disassembly of section .text:
   .*:  24638000        addiu   v1,v1,-32768
   .*:  00621821        addu    v1,v1,v0
   .*:  7c02283b        rdhwr   v0,\$5
-  .*:  8f838050        lw      v1,-32688\(gp\)
+  .*:  8f83804c        lw      v1,-32692\(gp\)
   .*:  00000000        nop
   .*:  00621821        addu    v1,v1,v0
-  .*:  8f838044        lw      v1,-32700\(gp\)
+  .*:  8f838040        lw      v1,-32704\(gp\)
   .*:  00000000        nop
   .*:  00621821        addu    v1,v1,v0
   .*:  7c02283b        rdhwr   v0,\$5
index addfc0fb1e0f5de4adfd9ea333b7b67f97d5d906..a5242aa8a9056628d614a0cf916b14dbc8e0ac45 100644 (file)
@@ -4,17 +4,17 @@
 DYNAMIC RELOCATION RECORDS
 OFFSET   TYPE              VALUE 
 00000000 R_MIPS_NONE       \*ABS\*
-10000058 R_MIPS_TLS_DTPMOD32  tlsbin_gd
-1000005c R_MIPS_TLS_DTPREL32  tlsbin_gd
-1000004c R_MIPS_TLS_DTPMOD32  tlsvar_gd
-10000050 R_MIPS_TLS_DTPREL32  tlsvar_gd
-10000054 R_MIPS_TLS_TPREL32  tlsvar_ie
-10000060 R_MIPS_TLS_TPREL32  tlsbin_ie
+10000054 R_MIPS_TLS_DTPMOD32  tlsbin_gd
+10000058 R_MIPS_TLS_DTPREL32  tlsbin_gd
+10000048 R_MIPS_TLS_DTPMOD32  tlsvar_gd
+1000004c R_MIPS_TLS_DTPREL32  tlsvar_gd
+10000050 R_MIPS_TLS_TPREL32  tlsvar_ie
+1000005c R_MIPS_TLS_TPREL32  tlsbin_ie
 
 
 Contents of section .got:
- 10000020 00000000 80000000 00000000 00000000  ................
- 10000030 00000000 00000000 00000000 00000000  ................
- 10000040 004005ec 00000001 00000000 00000000  .@..............
- 10000050 00000000 00000000 00000000 00000000  ................
- 10000060 00000000 00000000 00000000 00000000  ................
+ 10000020 00000000 80000000 00000000 00000000  .*
+ 10000030 00000000 00000000 00000000 004005ec  .*
+ 10000040 00000001 00000000 00000000 00000000  .*
+ 10000050 00000000 00000000 00000000 00000000  .*
+ 10000060 00000000 00000000 00000000           .*
diff --git a/ld/testsuite/ld-mips-elf/vxworks-forced-local-1.d b/ld/testsuite/ld-mips-elf/vxworks-forced-local-1.d
new file mode 100644 (file)
index 0000000..dc02a3b
--- /dev/null
@@ -0,0 +1,12 @@
+#as: -mips2 -mvxworks-pic
+#source: vxworks-forced-local-1.s
+#ld: -shared -Tvxworks1.ld --version-script vxworks-forced-local-1.ver
+#readelf: --relocs
+
+Relocation section '\.rela\.dyn' .*
+.*
+0008140c  00000002 R_MIPS_32 *00080810
+00081410  00000002 R_MIPS_32 *00080814
+00081414  00000002 R_MIPS_32 *00080818
+00081418  00000302 R_MIPS_32 *00000000 *bar \+ 0
+#pass
diff --git a/ld/testsuite/ld-mips-elf/vxworks-forced-local-1.s b/ld/testsuite/ld-mips-elf/vxworks-forced-local-1.s
new file mode 100644 (file)
index 0000000..a0c0212
--- /dev/null
@@ -0,0 +1,13 @@
+       .globl  foo1
+       .globl  foo2
+       .globl  foo3
+       lw      $4,%call16(foo1)($gp)
+       lw      $4,%call16(foo2)($gp)
+       lw      $4,%call16(foo3)($gp)
+       lw      $4,%got(bar)($gp)
+foo1:
+       nop
+foo2:
+       nop
+foo3:
+       nop
diff --git a/ld/testsuite/ld-mips-elf/vxworks-forced-local-1.ver b/ld/testsuite/ld-mips-elf/vxworks-forced-local-1.ver
new file mode 100644 (file)
index 0000000..a53c620
--- /dev/null
@@ -0,0 +1 @@
+{ local: foo*; };
index ab060d98dd4a631a386715bfa5e57f761eff4e73..17ea125202349af870d30f47c763d40b6b0ce24c 100644 (file)
@@ -22,7 +22,7 @@ Disassembly of section \.text:
    80c0c:      3c1c0000        lui     gp,0x0
    80c10:      8f9c0000        lw      gp,0\(gp\)
    80c14:      8f9c0000        lw      gp,0\(gp\)
-   80c18:      8f820014        lw      v0,20\(gp\)
+   80c18:      8f820010        lw      v0,16\(gp\)
    80c1c:      8c430000        lw      v1,0\(v0\)
    80c20:      24630001        addiu   v1,v1,1
    80c24:      ac430000        sw      v1,0\(v0\)
index 56bc9a8f04a8d339414bd6baad23515e57c27c3d..12ceb00ec04c8dbfe71679748eeb999f7894b197 100644 (file)
@@ -9,9 +9,8 @@ Relocation section '\.rela\.dyn' at offset .* contains .* entries:
 00081804  00000002 R_MIPS_32                                    00081800
 00081808  .*02 R_MIPS_32         00081808   dglobal \+ 0
 0008180c  .*02 R_MIPS_32         00000000   dexternal \+ 0
-00081424  .*02 R_MIPS_32         00081c00   x \+ 0
-00000000  00000000 R_MIPS_NONE                                  00000000
-#...
+00081420  .*02 R_MIPS_32         00081c00   x \+ 0
+
 Relocation section '\.rela\.plt' at offset .* contains 2 entries:
  Offset     Info    Type            Sym\.Value  Sym\. Name \+ Addend
 00081400  .*7f R_MIPS_JUMP_SLOT  00000000   sexternal \+ 0