From: Hans-Peter Nilsson Date: Mon, 7 Feb 2005 03:13:10 +0000 (+0000) Subject: * write.c (write_object_file): Recognize warning-symbol construct X-Git-Tag: gdb-pre-i18n-errorwarning-20050211~66 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=aaac53f5a1cd577c14197f1271304b3ff48fadfa;p=thirdparty%2Fbinutils-gdb.git * write.c (write_object_file): Recognize warning-symbol construct and skip object- and target- handling for the second symbol. --- diff --git a/gas/ChangeLog b/gas/ChangeLog index d004819c405..48efc32fec4 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,8 @@ +2005-02-07 Hans-Peter Nilsson + + * write.c (write_object_file): Recognize warning-symbol construct + and skip object- and target- handling for the second symbol. + 2005-02-02 Jan Beulich * config/tc-ia64.c (dot_pred_rel): Update comment. Handle @-prefixed diff --git a/gas/write.c b/gas/write.c index 320e359fb9a..f6a1c7e53b1 100644 --- a/gas/write.c +++ b/gas/write.c @@ -1882,12 +1882,22 @@ write_object_file (void) if (symbol_rootP) { symbolS *symp; + bfd_boolean skip_next_symbol = FALSE; for (symp = symbol_rootP; symp; symp = symbol_next (symp)) { int punt = 0; const char *name; + if (skip_next_symbol) + { + /* Don't do anything besides moving the value of the + symbol from the GAS value-field to the BFD value-field. */ + symbol_get_bfdsym (symp)->value = S_GET_VALUE (symp); + skip_next_symbol = FALSE; + continue; + } + if (symbol_mri_common_p (symp)) { if (S_IS_EXTERNAL (symp)) @@ -1972,6 +1982,12 @@ write_object_file (void) /* Set the value into the BFD symbol. Up til now the value has only been kept in the gas symbolS struct. */ symbol_get_bfdsym (symp)->value = S_GET_VALUE (symp); + + /* A warning construct is a warning symbol followed by the + symbol warned about. Don't let anything object-format or + target-specific muck with it; it's ready for output. */ + if (symbol_get_bfdsym (symp)->flags & BSF_WARNING) + skip_next_symbol = TRUE; } }