Fix handling of common symbols with plugins.

gold/ChangeLog:
2014-09-17  Rafael Ávila de Espíndola <rafael.espindola@gmail.com>

	* plugin.cc (Sized_pluginobj::do_add_symbols): Ignore isym->size.
	* resolve.cc (Symbol_table::resolve): Don't override common symbols
	during the replacement phase.
This commit is contained in:
Rafael Ávila de Espíndola 2014-09-17 17:53:49 -04:00
parent 3a53193762
commit 6168c2a1c6
3 changed files with 11 additions and 4 deletions

View file

@ -303,11 +303,14 @@ Symbol_table::resolve(Sized_symbol<size>* to,
// If we're processing replacement files, allow new symbols to override
// the placeholders from the plugin objects.
// Treat common symbols specially since it is possible that an ELF
// file increased the size of the alignment.
if (to->source() == Symbol::FROM_OBJECT)
{
Pluginobj* obj = to->object()->pluginobj();
if (obj != NULL
&& parameters->options().plugins()->in_replacement_phase())
&& parameters->options().plugins()->in_replacement_phase()
&& !to->is_common())
{
this->override(to, sym, st_shndx, is_ordinary, object, version);
return;