Don't handle every plugin symbol as defined.

Gold was fetching --start-lib/--end-lib members if that member defined
or used a currently undefined symbol.
This commit is contained in:
Rafael Ávila de Espíndola 2016-03-03 14:42:21 -05:00
parent 82838bd626
commit a06ed37d75
2 changed files with 7 additions and 0 deletions

View File

@ -1,3 +1,8 @@
2015-03-03 Rafael Ávila de Espíndola <rafael.espindola@gmail.com>
* plugin.cc (do_should_include_member): Ignore LDPK_UNDEF and
LDPK_WEAKUNDEF symbols.
2015-03-03 Evgenii Stepanov <eugenis@google.com>
* plugin.h (Pluginobj::get_symbol_resolution_info): Add version

View File

@ -1179,6 +1179,8 @@ Sized_pluginobj<size, big_endian>::do_should_include_member(
for (int i = 0; i < this->nsyms_; ++i)
{
const struct ld_plugin_symbol& sym = this->syms_[i];
if (sym.def == LDPK_UNDEF || sym.def == LDPK_WEAKUNDEF)
continue;
const char* name = sym.name;
Symbol* symbol;
Archive::Should_include t = Archive::should_include_member(symtab,