diff options
author | Ian Lance Taylor <ian@airs.com> | 1993-07-15 16:02:21 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@airs.com> | 1993-07-15 16:02:21 +0000 |
commit | c978e704a9a21709c255feb5aa49ead641ee158e (patch) | |
tree | a6d3b8fb3970b2e99ac2c35a5a9dcdf782b95aef /gas/symbols.c | |
parent | f09aae8404ef1d9ed3a677c59c418162060c35a9 (diff) | |
download | gdb-c978e704a9a21709c255feb5aa49ead641ee158e.zip gdb-c978e704a9a21709c255feb5aa49ead641ee158e.tar.gz gdb-c978e704a9a21709c255feb5aa49ead641ee158e.tar.bz2 |
* Preliminary support for m88k-coff.
* configure.in (m88k-*-coff*): New target. Use coffbfd and
m88kcoff.
* config/m88kcoff.mt: New file.
* read.c (lex_type): New macro LEX_AT to set lex type of '@'.
(pseudo_set): Handle difference of symbols in different fragments
by saving the entire expression as the value of the symbol.
* symbols.c (resolve_symbol_value): Resolve difference
expressions.
* config/obj-coffbfd.c (obj_pseudo_table): If TC_M88K, accept
"sdef" as a synonym for "def".
* config/obj-coffbfd.h: If TC_M88K, include coff/m88k.h and set
TARGET_FORMAT.
(S_IS_LOCAL): Any symbol which includes \001 in the name is local.
* config/tc-m88k.c, config/tc-m88k.h: Numerous changes to bring
m88k port up to date, and to add COFF support.
Diffstat (limited to 'gas/symbols.c')
-rw-r--r-- | gas/symbols.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/gas/symbols.c b/gas/symbols.c index 05db99a..535810f 100644 --- a/gas/symbols.c +++ b/gas/symbols.c @@ -602,6 +602,21 @@ resolve_symbol_value (symp) + symp->sy_frag->fr_address + S_GET_VALUE (symp->sy_value.X_add_symbol))); } + else if (symp->sy_value.X_seg == diff_section) + { + resolve_symbol_value (symp->sy_value.X_add_symbol); + resolve_symbol_value (symp->sy_value.X_subtract_symbol); + if (S_GET_SEGMENT (symp->sy_value.X_add_symbol) + != S_GET_SEGMENT (symp->sy_value.X_subtract_symbol)) + as_bad ("%s is difference of symbols in different sections", + S_GET_NAME (symp)); + S_SET_VALUE (symp, + (symp->sy_value.X_add_number + + symp->sy_frag->fr_address + + S_GET_VALUE (symp->sy_value.X_add_symbol) + - S_GET_VALUE (symp->sy_value.X_subtract_symbol))); + S_SET_SEGMENT (symp, absolute_section); + } else { /* More cases need to be added here. */ |