From cbc174e7abb4e8b38281aacadb21aa929fade447 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Fri, 4 Feb 1994 04:18:28 +0000 Subject: [PATCH] * 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. --- bfd/ChangeLog | 4 ++++ bfd/ecofflink.c | 10 +++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 63c37380021..976140ffccc 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 523a4bf6c69..306f028e116 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 -- 2.30.2