aboutsummaryrefslogtreecommitdiff
path: root/gold
diff options
context:
space:
mode:
authorCary Coutant <ccoutant@google.com>2009-03-25 01:34:25 +0000
committerCary Coutant <ccoutant@google.com>2009-03-25 01:34:25 +0000
commit6d4796192d5ba3425f757344a9d67d47a9e768d9 (patch)
tree97ffbe7ee340e61422ec226d89f3a22ad063d77c /gold
parentfc3b640d978b8b07680feb80a69ddd8c05ee69bd (diff)
downloadfsf-binutils-gdb-6d4796192d5ba3425f757344a9d67d47a9e768d9.zip
fsf-binutils-gdb-6d4796192d5ba3425f757344a9d67d47a9e768d9.tar.gz
fsf-binutils-gdb-6d4796192d5ba3425f757344a9d67d47a9e768d9.tar.bz2
* symtab.h (needs_plt_entry): Check for unsatisfied reference from
an executable. (needs_dynamic_reloc): Likewise.
Diffstat (limited to 'gold')
-rw-r--r--gold/ChangeLog6
-rw-r--r--gold/symtab.h8
2 files changed, 12 insertions, 2 deletions
diff --git a/gold/ChangeLog b/gold/ChangeLog
index b51509a..7044e28 100644
--- a/gold/ChangeLog
+++ b/gold/ChangeLog
@@ -1,3 +1,9 @@
+2009-03-24 Cary Coutant <ccoutant@google.com>
+
+ * symtab.h (needs_plt_entry): Check for unsatisfied reference from
+ an executable.
+ (needs_dynamic_reloc): Likewise.
+
2009-03-24 Ian Lance Taylor <iant@google.com>
* yyscript.y (file_cmd): Recognize EXTERN.
diff --git a/gold/symtab.h b/gold/symtab.h
index c96c6fb..660fc4d 100644
--- a/gold/symtab.h
+++ b/gold/symtab.h
@@ -530,6 +530,10 @@ class Symbol
bool
needs_plt_entry() const
{
+ // An undefined symbol from an executable does not need a PLT entry.
+ if (this->is_undefined() && !parameters->options().shared())
+ return false;
+
return (!parameters->doing_static_link()
&& this->type() == elfcpp::STT_FUNC
&& (this->is_from_dynobj()
@@ -561,10 +565,10 @@ class Symbol
if (parameters->doing_static_link())
return false;
- // A reference to a weak undefined symbol from an executable should be
+ // A reference to an undefined symbol from an executable should be
// statically resolved to 0, and does not need a dynamic relocation.
// This matches gnu ld behavior.
- if (this->is_weak_undefined() && !parameters->options().shared())
+ if (this->is_undefined() && !parameters->options().shared())
return false;
// A reference to an absolute symbol does not need a dynamic relocation.