diff options
author | Nathan Sidwell <nathan@codesourcery.com> | 2008-04-21 17:54:25 +0000 |
---|---|---|
committer | Nathan Sidwell <nathan@codesourcery.com> | 2008-04-21 17:54:25 +0000 |
commit | 131eb6b75e45eec24860ff6972f23b0e723db75c (patch) | |
tree | f8f82ef6d68275987a3b6466a2dc37ef2ff4be8b | |
parent | 550512b831f018f3c1ceec7abb42f7123b03d77c (diff) | |
download | gdb-131eb6b75e45eec24860ff6972f23b0e723db75c.zip gdb-131eb6b75e45eec24860ff6972f23b0e723db75c.tar.gz gdb-131eb6b75e45eec24860ff6972f23b0e723db75c.tar.bz2 |
bfd/
* 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.
-rw-r--r-- | bfd/ChangeLog | 7 | ||||
-rw-r--r-- | bfd/elfxx-mips.c | 11 | ||||
-rw-r--r-- | ld/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | ld/testsuite/ld-vxworks/plt-mips1.d | 10 | ||||
-rw-r--r-- | ld/testsuite/ld-vxworks/plt-mips1.s | 1 |
5 files changed, 28 insertions, 6 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 1ac4be9..7171a0c 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -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 diff --git a/bfd/elfxx-mips.c b/bfd/elfxx-mips.c index 396e578..5173c0a 100644 --- a/bfd/elfxx-mips.c +++ b/bfd/elfxx-mips.c @@ -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. */ diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog index 627d933..b2d61e0 100644 --- a/ld/testsuite/ChangeLog +++ b/ld/testsuite/ChangeLog @@ -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 index 0000000..d580df2 --- /dev/null +++ b/ld/testsuite/ld-vxworks/plt-mips1.d @@ -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 index 0000000..2f79504 --- /dev/null +++ b/ld/testsuite/ld-vxworks/plt-mips1.s @@ -0,0 +1 @@ + lw $25,%call16(Foo)($28) |