diff options
author | Hans-Peter Nilsson <hp@axis.com> | 2005-02-07 03:13:10 +0000 |
---|---|---|
committer | Hans-Peter Nilsson <hp@axis.com> | 2005-02-07 03:13:10 +0000 |
commit | aaac53f5a1cd577c14197f1271304b3ff48fadfa (patch) | |
tree | fedc4cc59269622f8a66f662b2fcb0858cedab27 /gas/write.c | |
parent | 769946806e26b79ea5ef8f8679eae58279b398eb (diff) | |
download | gdb-aaac53f5a1cd577c14197f1271304b3ff48fadfa.zip gdb-aaac53f5a1cd577c14197f1271304b3ff48fadfa.tar.gz gdb-aaac53f5a1cd577c14197f1271304b3ff48fadfa.tar.bz2 |
* write.c (write_object_file): Recognize warning-symbol construct
and skip object- and target- handling for the second symbol.
Diffstat (limited to 'gas/write.c')
-rw-r--r-- | gas/write.c | 16 |
1 files changed, 16 insertions, 0 deletions
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; } } |