From c978e704a9a21709c255feb5aa49ead641ee158e Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Thu, 15 Jul 1993 16:02:21 +0000 Subject: * 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. --- gas/symbols.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'gas/symbols.c') 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. */ -- cgit v1.1