aboutsummaryrefslogtreecommitdiff
path: root/gas/symbols.c
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@airs.com>1993-07-15 16:02:21 +0000
committerIan Lance Taylor <ian@airs.com>1993-07-15 16:02:21 +0000
commitc978e704a9a21709c255feb5aa49ead641ee158e (patch)
treea6d3b8fb3970b2e99ac2c35a5a9dcdf782b95aef /gas/symbols.c
parentf09aae8404ef1d9ed3a677c59c418162060c35a9 (diff)
downloadgdb-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.c15
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. */