Snapshot. Includes first cut at output relocation sections.

This commit is contained in:
Ian Lance Taylor
2006-11-16 00:38:25 +00:00
parent 7495b3afc0
commit c06b7b0ba3
17 changed files with 885 additions and 179 deletions

View File

@@ -106,7 +106,8 @@ Symbol_table::resolve(Sized_symbol<size>* to,
abort();
}
if (to->object() != NULL && to->object()->is_dynamic())
if (to->source() == Symbol::FROM_OBJECT
&& to->object()->is_dynamic())
tobits |= (1 << 1);
switch (to->shnum())
@@ -174,6 +175,15 @@ Symbol_table::resolve(Sized_symbol<size>* to,
break;
}
if ((tobits & (1 << 1)) != (frombits & (1 << 1)))
{
// This symbol is seen in both a dynamic object and a regular
// object. That means that we need the symbol to go into the
// dynamic symbol table, so that the dynamic linker can use the
// regular symbol to override or define the dynamic symbol.
to->set_needs_dynsym_entry();
}
// FIXME: Warn if either but not both of TO and SYM are STT_TLS.
// We use a giant switch table for symbol resolution. This code is