diff --git a/gold/ChangeLog b/gold/ChangeLog index b51509a5fa..7044e28412 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 c96c6fbefa..660fc4d457 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.