aboutsummaryrefslogtreecommitdiff
path: root/gold/symtab.h
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@airs.com>2009-12-31 05:07:22 +0000
committerIan Lance Taylor <ian@airs.com>2009-12-31 05:07:22 +0000
commiteda294df6d71e405810e6b56e2bab2bff91a1799 (patch)
treecae358d1e57adf539483db13d65defa840bf0397 /gold/symtab.h
parentd7bb5745008bb111becc3dc87e7ce243f59b7170 (diff)
downloadfsf-binutils-gdb-eda294df6d71e405810e6b56e2bab2bff91a1799.zip
fsf-binutils-gdb-eda294df6d71e405810e6b56e2bab2bff91a1799.tar.gz
fsf-binutils-gdb-eda294df6d71e405810e6b56e2bab2bff91a1799.tar.bz2
PR 10979
* common.cc (Sort_commons::operator()): Stabilize sort when both entries are NULL. (Symbol_table::do_allocate_commons_list): When allocating common symbols, skip a symbol which is no longer common. * symtab.h (Symbol::is_common): Test whether the symbol comes from an object before checking its type. * testsuite/common_test_2.c: New file. * testsuite/common_test_3.c: New file. * testsuite/Makefile.am (check_PROGRAMS): Add common_test_2. (common_test_2_SOURCES, common_test_2_DEPENDENCIES): Define. (common_test_2_LDFLAGS, common_test_2_LDADD): Define. (common_test_2_pic.o, common_test_2.so): New targets. (common_test_3_pic.o, common_test_3.so): New targets. * testsuite/Makefile.in: Rebuild.
Diffstat (limited to 'gold/symtab.h')
-rw-r--r--gold/symtab.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/gold/symtab.h b/gold/symtab.h
index 8ee2091..f79fc8d 100644
--- a/gold/symtab.h
+++ b/gold/symtab.h
@@ -478,10 +478,10 @@ class Symbol
bool
is_common() const
{
- if (this->type_ == elfcpp::STT_COMMON)
- return true;
if (this->source_ != FROM_OBJECT)
return false;
+ if (this->type_ == elfcpp::STT_COMMON)
+ return true;
bool is_ordinary;
unsigned int shndx = this->shndx(&is_ordinary);
return !is_ordinary && Symbol::is_common_shndx(shndx);