aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Lance Taylor <iant@google.com>2007-08-29 05:48:24 +0000
committerIan Lance Taylor <iant@google.com>2007-08-29 05:48:24 +0000
commit429c15693cbc151d24546c397e8c7435f77e1b14 (patch)
tree2fbe418f132287f181c0bd6a12b8b006ad3b4918
parentd037d08851dcb4ce4feb713a7f024ebac5d84cca (diff)
downloadgdb-429c15693cbc151d24546c397e8c7435f77e1b14.zip
gdb-429c15693cbc151d24546c397e8c7435f77e1b14.tar.gz
gdb-429c15693cbc151d24546c397e8c7435f77e1b14.tar.bz2
Any symbol which is in both a regular object and a dynamic object
requires an entry in the dynamic symbol table.
-rw-r--r--gold/resolve.cc9
-rw-r--r--gold/symtab.h5
2 files changed, 4 insertions, 10 deletions
diff --git a/gold/resolve.cc b/gold/resolve.cc
index f80e08f..d021598 100644
--- a/gold/resolve.cc
+++ b/gold/resolve.cc
@@ -189,15 +189,6 @@ Symbol_table::resolve(Sized_symbol<size>* to,
break;
}
- if ((tobits & (1 << 1)) != (frombits & (1 << 1)))
- {
- // This symbol is seen in both a dynamic object and a regular
- // object. That means that we need the symbol to go into the
- // dynamic symbol table, so that the dynamic linker can use the
- // regular symbol to override or define the dynamic symbol.
- to->set_needs_dynsym_entry();
- }
-
// FIXME: Warn if either but not both of TO and SYM are STT_TLS.
// We use a giant switch table for symbol resolution. This code is
diff --git a/gold/symtab.h b/gold/symtab.h
index 15d1f78..816afb3 100644
--- a/gold/symtab.h
+++ b/gold/symtab.h
@@ -178,7 +178,10 @@ class Symbol
// table.
bool
needs_dynsym_entry() const
- { return this->needs_dynsym_entry_; }
+ {
+ return (this->needs_dynsym_entry_
+ || (this->in_reg() && this->in_dyn()));
+ }
// Mark this symbol as needing an entry in the dynamic symbol table.
void