2010-02-18 Rafael Ávila de Espíndola <respindola@mozilla.com>

* symtab.cc (Symbol::should_add_dynsym_entry) Return false for
	plugin only symbols.
	(Symbol_table::sized_finalize_symbol) Mark symbol only present
	in plugin files as not needed in the symbol table.
This commit is contained in:
Rafael Ávila de Espíndola 2011-02-18 14:55:33 +00:00
parent 13163d8050
commit badc813953
2 changed files with 21 additions and 0 deletions

View File

@ -1,3 +1,10 @@
2010-02-18 Rafael Ávila de Espíndola <respindola@mozilla.com>
* symtab.cc (Symbol::should_add_dynsym_entry) Return false for
plugin only symbols.
(Symbol_table::sized_finalize_symbol) Mark symbol only present
in plugin files as not needed in the symbol table.
2011-02-11 Sriraman Tallam <tmsriram@google.com>
* output.cc (Output_section::add_input_section): Delay fill

View File

@ -310,6 +310,11 @@ Sized_symbol<size>::allocate_common(Output_data* od, Value_type value)
inline bool
Symbol::should_add_dynsym_entry(Symbol_table* symtab) const
{
// If the symbol is only present on plugin files, the plugin decided we
// don't need it.
if (!this->in_real_elf())
return false;
// If the symbol is used by a dynamic relocation, we need to add it.
if (this->needs_dynsym_entry())
return true;
@ -2593,6 +2598,15 @@ Symbol_table::sized_finalize_symbol(Symbol* unsized_sym)
return false;
}
// If the symbol is only present on plugin files, the plugin decided we
// don't need it.
if (!sym->in_real_elf())
{
gold_assert(!sym->has_symtab_index());
sym->set_symtab_index(-1U);
return false;
}
// Compute final symbol value.
Compute_final_value_status status;
Value_type value = this->compute_final_value(sym, &status);