diff options
author | Cary Coutant <ccoutant@gmail.com> | 2016-09-27 12:08:19 -0700 |
---|---|---|
committer | Cary Coutant <ccoutant@gmail.com> | 2016-09-27 12:08:28 -0700 |
commit | e3f07b5b750554bbbbee1bddc34bb77fd7d31eeb (patch) | |
tree | 96454a34955a2149b805714951a3702e4583c3a2 | |
parent | 07619d52fef6fda58cbc327512a4d8ec60ad5637 (diff) | |
download | gdb-e3f07b5b750554bbbbee1bddc34bb77fd7d31eeb.zip gdb-e3f07b5b750554bbbbee1bddc34bb77fd7d31eeb.tar.gz gdb-e3f07b5b750554bbbbee1bddc34bb77fd7d31eeb.tar.bz2 |
Don't treat as separate symbols if unversioned symbol is undefined.
When we see an unversioned symbol reference in a shared library, followed
by a default definition of the symbol in another shared library, we were
treating them as separate symbols. That should only happen when both are
definitions.
gold/
PR gold/20238
* symtab.cc (Symbol_table::define_default_version): Check that
unversioned symbol is defined.
-rw-r--r-- | gold/ChangeLog | 6 | ||||
-rw-r--r-- | gold/symtab.cc | 1 |
2 files changed, 7 insertions, 0 deletions
diff --git a/gold/ChangeLog b/gold/ChangeLog index d791d29..1e01a4a 100644 --- a/gold/ChangeLog +++ b/gold/ChangeLog @@ -1,3 +1,9 @@ +2016-09-26 Cary Coutant <ccoutant@gmail.com> + + PR gold/20238 + * symtab.cc (Symbol_table::define_default_version): Check that + unversioned symbol is defined. + 2016-09-26 Vlad Zakharov <vzakhar@synopsys.com> * Makefile.in: Regenerate. diff --git a/gold/symtab.cc b/gold/symtab.cc index b31794a..c872f47 100644 --- a/gold/symtab.cc +++ b/gold/symtab.cc @@ -882,6 +882,7 @@ Symbol_table::define_default_version(Sized_symbol<size>* sym, ; else if (pdef->second->is_from_dynobj() && sym->is_from_dynobj() + && pdef->second->is_defined() && pdef->second->object() != sym->object()) ; else |