diff options
Diffstat (limited to 'gold/target-reloc.h')
-rw-r--r-- | gold/target-reloc.h | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/gold/target-reloc.h b/gold/target-reloc.h index f49020a..e44519b 100644 --- a/gold/target-reloc.h +++ b/gold/target-reloc.h @@ -143,12 +143,6 @@ class Default_comdat_behavior } }; -inline bool -is_strong_undefined(const Symbol* sym) -{ - return sym->is_undefined() && sym->binding() != elfcpp::STB_WEAK; -} - // Give an error for a symbol with non-default visibility which is not // defined locally. @@ -190,7 +184,7 @@ issue_undefined_symbol_error(const Symbol* sym) return false; // We don't report weak symbols. - if (sym->binding() == elfcpp::STB_WEAK) + if (sym->is_weak_undefined()) return false; // We don't report symbols defined in discarded sections. @@ -216,6 +210,10 @@ issue_undefined_symbol_error(const Symbol* sym) return false; } + // If the symbol is hidden, report it. + if (sym->visibility() == elfcpp::STV_HIDDEN) + return true; + // When creating a shared library, only report unresolved symbols if // -z defs was used. if (parameters->options().shared() && !parameters->options().defs()) @@ -419,7 +417,7 @@ relocate_section( gold_undefined_symbol_at_location(sym, relinfo, i, offset); else if (sym != NULL && sym->visibility() != elfcpp::STV_DEFAULT - && (is_strong_undefined(sym) || sym->is_from_dynobj())) + && (sym->is_strong_undefined() || sym->is_from_dynobj())) visibility_error(sym); if (sym != NULL && sym->has_warning()) |