bfd/
authorNathan Sidwell <nathan@codesourcery.com>
Mon, 21 Apr 2008 17:54:25 +0000 (17:54 +0000)
committerNathan Sidwell <nathan@codesourcery.com>
Mon, 21 Apr 2008 17:54:25 +0000 (17:54 +0000)
* elfxx-mips.c (_bfd_mips_vxworks_adjust_dynamic_symbol): Don't
set the value of undefined symbols in shared objects.
(_bfd_mips_vxworks_finish_dynamic_symbol): Clear value for
undefined symbols unless pointer equality is needed.
ld/testsuite/
* ld-vxworks/plt-mips1.s: New.
* ld-vxworks/plt-mips1.d: New.

bfd/ChangeLog
bfd/elfxx-mips.c
ld/testsuite/ChangeLog
ld/testsuite/ld-vxworks/plt-mips1.d [new file with mode: 0644]
ld/testsuite/ld-vxworks/plt-mips1.s [new file with mode: 0644]

index 1ac4be903065db23df34ee488a49ce28ce85947f..7171a0c4f29f5d2b081f2eeba537aec97d6d3371 100644 (file)
@@ -1,3 +1,10 @@
+2008-04-21  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * elfxx-mips.c (_bfd_mips_vxworks_adjust_dynamic_symbol): Don't
+       set the value of undefined symbols in shared objects.
+       (_bfd_mips_vxworks_finish_dynamic_symbol): Clear value for
+       undefined symbols unless pointer equality is needed.
+
 2008-04-18  Dennis Roberts  <dennis.roberts@sunquestinfo.com>
 
        * aix5ppc-core.c: Define macros for the default architecture and
index 396e578a2560b8bec26a5640ad3f705625c192b9..5173c0af4da98fa385cb8808d233c6d7cafde881 100644 (file)
@@ -7466,15 +7466,14 @@ _bfd_mips_vxworks_adjust_dynamic_symbol (struct bfd_link_info *info,
       htab->splt->size += htab->plt_entry_size;
 
       /* If the output file has no definition of the symbol, set the
-        symbol's value to the address of the stub.  For executables,
-        point at the PLT load stub rather than the lazy resolution stub;
-        this stub will become the canonical function address.  */
-      if (!h->def_regular)
+        symbol's value to the address of the stub.  Point at the PLT
+        load stub rather than the lazy resolution stub; this stub
+        will become the canonical function address.  */
+      if (!info->shared && !h->def_regular)
        {
          h->root.u.def.section = htab->splt;
          h->root.u.def.value = h->plt.offset;
-         if (!info->shared)
-           h->root.u.def.value += 8;
+         h->root.u.def.value += 8;
        }
 
       /* Make room for the .got.plt entry and the R_JUMP_SLOT relocation.  */
index 627d9332a82f859dfce939e56b81c0e526a9968f..b2d61e0ec4847a887dfde42121727d182bdd3b41 100644 (file)
@@ -1,3 +1,8 @@
+2008-04-21  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * ld-vxworks/plt-mips1.s: New.
+       * ld-vxworks/plt-mips1.d: New.
+
 2008-04-16  David S. Miller  <davem@davemloft.net>
 
        * ld-sparc/gotop32.dd: New.
diff --git a/ld/testsuite/ld-vxworks/plt-mips1.d b/ld/testsuite/ld-vxworks/plt-mips1.d
new file mode 100644 (file)
index 0000000..d580df2
--- /dev/null
@@ -0,0 +1,10 @@
+# target: mips*-*-*
+# source: plt-mips1.s
+# ld: -shared -z now
+# readelf: -s
+
+#...
+    [0-9]*: 00000000     0 FUNC    GLOBAL DEFAULT  UND Foo
+#...
+    [0-9]*: 00000000     0 FUNC    GLOBAL DEFAULT  UND Foo
+#...
diff --git a/ld/testsuite/ld-vxworks/plt-mips1.s b/ld/testsuite/ld-vxworks/plt-mips1.s
new file mode 100644 (file)
index 0000000..2f79504
--- /dev/null
@@ -0,0 +1 @@
+        lw      $25,%call16(Foo)($28)