aboutsummaryrefslogtreecommitdiff
path: root/bfd/elflink.c
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2016-02-01 15:49:52 -0800
committerH.J. Lu <hjl.tools@gmail.com>2016-02-01 15:49:52 -0800
commitaef28989904e92e391fee905e51abc6bb2fd4de0 (patch)
tree990f90c03f730e0fcd622f28d69ee6b489f64a06 /bfd/elflink.c
parent713cdcbf65e53e17e3d63799938675bf4a5b38ec (diff)
downloadgdb-aef28989904e92e391fee905e51abc6bb2fd4de0.zip
gdb-aef28989904e92e391fee905e51abc6bb2fd4de0.tar.gz
gdb-aef28989904e92e391fee905e51abc6bb2fd4de0.tar.bz2
Don't add DT_NEEDED for unmatched symbol
Don't add DT_NEEDED if a symbol from a library loaded via DT_NEEDED doesn't match the symbol referenced by regular object. bfd/ PR ld/19553 * elflink.c (elf_link_add_object_symbols): Don't add DT_NEEDED if a symbol from a library loaded via DT_NEEDED doesn't match the symbol referenced by regular object. ld/testsuite/ PR ld/19553 * testsuite/ld-elf/indirect.exp: Run tests for PR ld/19553. * testsuite/ld-elf/pr19553.map: New file. * testsuite/ld-elf/pr19553.map: Likewise. * testsuite/ld-elf/pr19553a.c: Likewise. * testsuite/ld-elf/pr19553b.c: Likewise. * testsuite/ld-elf/pr19553b.out: Likewise. * testsuite/ld-elf/pr19553c.c: Likewise. * testsuite/ld-elf/pr19553c.out: Likewise. * testsuite/ld-elf/pr19553d.c: Likewise. * testsuite/ld-elf/pr19553d.out: Likewise.
Diffstat (limited to 'bfd/elflink.c')
-rw-r--r--bfd/elflink.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/bfd/elflink.c b/bfd/elflink.c
index e71cb50..ac03ce5 100644
--- a/bfd/elflink.c
+++ b/bfd/elflink.c
@@ -4562,8 +4562,10 @@ error_free_dyn:
break;
}
- /* Don't add DT_NEEDED for references from the dummy bfd. */
+ /* Don't add DT_NEEDED for references from the dummy bfd nor
+ for unmatched symbol. */
if (!add_needed
+ && matched
&& definition
&& ((dynsym
&& h->ref_regular_nonweak