From: Cary Coutant Date: Wed, 25 Mar 2009 01:34:25 +0000 (+0000) Subject: * symtab.h (needs_plt_entry): Check for unsatisfied reference from X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=6d4796192d5ba3425f757344a9d67d47a9e768d9;p=binutils-gdb.git * symtab.h (needs_plt_entry): Check for unsatisfied reference from an executable. (needs_dynamic_reloc): Likewise. --- diff --git a/gold/ChangeLog b/gold/ChangeLog index b51509a5fa8..7044e284127 100644 --- a/gold/ChangeLog +++ b/gold/ChangeLog @@ -1,3 +1,9 @@ +2009-03-24 Cary Coutant + + * symtab.h (needs_plt_entry): Check for unsatisfied reference from + an executable. + (needs_dynamic_reloc): Likewise. + 2009-03-24 Ian Lance Taylor * yyscript.y (file_cmd): Recognize EXTERN. diff --git a/gold/symtab.h b/gold/symtab.h index c96c6fbefa3..660fc4d4577 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.