Undo dynamic symbol state after regular object sym type mismatch
authorAlan Modra <amodra@gmail.com>
Mon, 17 Apr 2017 09:03:52 +0000 (18:33 +0930)
committerAlan Modra <amodra@gmail.com>
Mon, 17 Apr 2017 13:44:37 +0000 (23:14 +0930)
commitc5d37467b152fe98f02ac1ff8188e32ecd0def95
tree46caf31ba379349fdf89ea75c9841ebad7b44ee9
parentc661778cb6b406d5b55fbf22ff88fbc85ee3f4c2
Undo dynamic symbol state after regular object sym type mismatch

We already handle the case of an object file first defining a symbol
that a later shared library also defines where the symbol types are
incompatible.  This patch handles the reverse, when a later object
file defines an incompatible symbol defined by an earlier shared
library.

bfd/
* elflink.c (_bfd_elf_merge_symbol): Undo dynamic linking
state when a regular object file defines a symbol with
incompatible type to that defined by an earlier shared lib.
ld/
* testsuite/ld-elf/indirect5a.c,
* testsuite/ld-elf/indirect5b.c,
* testsuite/ld-elf/indirect5.map,
* testsuite/ld-elf/indirect5.out: New test.
* testsuite/ld-elf/indirect6a.c: Likewise.
* testsuite/ld-elf/indirect.exp (check_dynamic_syms): New proc.
Run new tests and check dynsyms.
bfd/ChangeLog
bfd/elflink.c
ld/ChangeLog
ld/testsuite/ld-elf/indirect.exp
ld/testsuite/ld-elf/indirect5.map [new file with mode: 0644]
ld/testsuite/ld-elf/indirect5.out [new file with mode: 0644]
ld/testsuite/ld-elf/indirect5a.c [new file with mode: 0644]
ld/testsuite/ld-elf/indirect5b.c [new file with mode: 0644]
ld/testsuite/ld-elf/indirect6a.c [new file with mode: 0644]