aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCary Coutant <ccoutant@google.com>2009-08-19 17:53:50 +0000
committerCary Coutant <ccoutant@google.com>2009-08-19 17:53:50 +0000
commit2da73f13b5a30647720a7744350ef84ce7e222d1 (patch)
tree98c5664bc0bc3b8b0dcf5057ed59d9cb2d78f16c
parent2db7050185e8c5248a2b6c41498b44419007db95 (diff)
downloadgdb-2da73f13b5a30647720a7744350ef84ce7e222d1.zip
gdb-2da73f13b5a30647720a7744350ef84ce7e222d1.tar.gz
gdb-2da73f13b5a30647720a7744350ef84ce7e222d1.tar.bz2
* resolve.cc (Symbol_table::resolve): Don't complain about defined
symbols in shared libraries overridden by hidden or internal symbols in the main program.
-rw-r--r--gold/ChangeLog6
-rw-r--r--gold/resolve.cc5
2 files changed, 9 insertions, 2 deletions
diff --git a/gold/ChangeLog b/gold/ChangeLog
index 9084d68..c57002c 100644
--- a/gold/ChangeLog
+++ b/gold/ChangeLog
@@ -1,3 +1,9 @@
+2009-08-19 Cary Coutant <ccoutant@google.com>
+
+ * resolve.cc (Symbol_table::resolve): Don't complain about defined
+ symbols in shared libraries overridden by hidden or internal symbols
+ in the main program.
+
2009-08-19 Chris Demetriou <cgd@google.com>
* testsuite/debug_msg.sh: Match .* rather than ${srcdir} when
diff --git a/gold/resolve.cc b/gold/resolve.cc
index 7299c55..45a4a7a 100644
--- a/gold/resolve.cc
+++ b/gold/resolve.cc
@@ -257,8 +257,9 @@ Symbol_table::resolve(Sized_symbol<size>* to,
// Record that we've seen this symbol in a regular object.
to->set_in_reg();
}
- else if (to->visibility() == elfcpp::STV_HIDDEN
- || to->visibility() == elfcpp::STV_INTERNAL)
+ else if (st_shndx == elfcpp::SHN_UNDEF
+ && (to->visibility() == elfcpp::STV_HIDDEN
+ || to->visibility() == elfcpp::STV_INTERNAL))
{
// A dynamic object cannot reference a hidden or internal symbol
// defined in another object.