From aaac53f5a1cd577c14197f1271304b3ff48fadfa Mon Sep 17 00:00:00 2001 From: Hans-Peter Nilsson Date: Mon, 7 Feb 2005 03:13:10 +0000 Subject: [PATCH] * write.c (write_object_file): Recognize warning-symbol construct and skip object- and target- handling for the second symbol. --- gas/ChangeLog | 5 +++++ gas/write.c | 16 ++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/gas/ChangeLog b/gas/ChangeLog index d004819..48efc32 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 320e359..f6a1c7e 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; } } -- 2.7.4