Copy st_other for linker script symbol assignments
authorAlan Modra <amodra@gmail.com>
Tue, 8 Jul 2014 05:54:06 +0000 (15:24 +0930)
committerAlan Modra <amodra@gmail.com>
Tue, 8 Jul 2014 10:12:03 +0000 (19:42 +0930)
commitbffebb6ba5b4ddbca7353626d682f9f974584dbf
tree093877e73fca460e1b1f378024e210b46ddc1f00
parent161ac41e03a819bc34e8c70a3fd1bc26f43858a2
Copy st_other for linker script symbol assignments

This fixes a problem seen on powerpc64le ELFv2 when creating a
function symbol alias with ld --defsym.  st_other needs to be copied
from the source symbol to the alias in order to set up the local entry
offset for the alias.  I decided to make this change in the generic
ELF code rather than in elf64-ppc.c since it looks like other targets
that use st_other bits might benefit too.

bfd/
* elflink.c (_bfd_elf_copy_link_hash_symbol_type): Copy st_other
bits from source to dest.
* linker.c (_bfd_generic_copy_link_hash_symbol_type): Update comment.
* targets.c (struct bfd_target <_bfd_copy_link_hash_symbol_type>):
Likewise.
* bfd-in2.h: Regenerate.
ld/testsuite/
* ld-powerpc/defsym.s, * ld-powerpc/defsym.d: New test.
* ld-powerpc/powerpc.exp: Run it.
bfd/ChangeLog
bfd/bfd-in2.h
bfd/elflink.c
bfd/linker.c
bfd/targets.c
ld/testsuite/ChangeLog
ld/testsuite/ld-powerpc/defsym.d [new file with mode: 0644]
ld/testsuite/ld-powerpc/defsym.s [new file with mode: 0644]
ld/testsuite/ld-powerpc/powerpc.exp