symbol has a value in the ECOFF symbol but not in the BFD symbol,
keep the value in the ECOFF symbol. This helps gas.
Thu Feb 3 16:49:35 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+ * ecofflink.c (bfd_ecoff_debug_externals): If a small undefined
+ symbol has a value in the ECOFF symbol but not in the BFD symbol,
+ keep the value in the ECOFF symbol. This helps gas.
+
* linker.c (_bfd_generic_link_output_symbols,
_bfd_generic_link_write_global_symbol): Don't require that all
references to a common symbol be themselves common symbols.
if (bfd_is_com_section (sym_ptr->section)
|| sym_ptr->section == &bfd_und_section)
- esym.asym.value = sym_ptr->value;
+ {
+ /* FIXME: gas does not keep the value of a small undefined
+ symbol in the symbol itself, because of relocation
+ problems. */
+ if (esym.asym.sc != scSUndefined
+ || esym.asym.value == 0
+ || sym_ptr->value != 0)
+ esym.asym.value = sym_ptr->value;
+ }
else
esym.asym.value = (sym_ptr->value
+ sym_ptr->section->output_offset