From: Ian Lance Taylor Date: Fri, 4 Feb 1994 04:18:28 +0000 (+0000) Subject: * ecofflink.c (bfd_ecoff_debug_externals): If a small undefined X-Git-Tag: gdb-4_18~15675 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=cbc174e7abb4e8b38281aacadb21aa929fade447;p=external%2Fbinutils.git * 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. --- diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 63c3738..976140f 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,5 +1,9 @@ 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. diff --git a/bfd/ecofflink.c b/bfd/ecofflink.c index 523a4bf..306f028 100644 --- a/bfd/ecofflink.c +++ b/bfd/ecofflink.c @@ -991,7 +991,15 @@ bfd_ecoff_debug_externals (abfd, debug, swap, relocateable, get_extr, 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