diff options
author | Ian Lance Taylor <ian@airs.com> | 1992-11-10 18:17:00 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@airs.com> | 1992-11-10 18:17:00 +0000 |
commit | 587c4264e020987b332577135abfefdbb3dee699 (patch) | |
tree | 876a218a78633b5b4be594612571317a11dba476 /gas/config/tc-m68k.c | |
parent | 9ee6289b478ed3f18bf30821ccc8a8d43c54b467 (diff) | |
download | gdb-587c4264e020987b332577135abfefdbb3dee699.zip gdb-587c4264e020987b332577135abfefdbb3dee699.tar.gz gdb-587c4264e020987b332577135abfefdbb3dee699.tar.bz2 |
These changes clean things up a bit, and improve Solaris cross
support when using /opt/SUNWspro/SC2.0/acc.
Tue Nov 10 09:50:25 1992 Ian Lance Taylor (ian@cygnus.com)
* obj-coffbfd.c (fill_section): set STYP_NOLOAD bit for .bss
section.
* atof-ieee.c, atof-ns32k.c, tc-*.c: made EXP_CHARS, FLT_CHARS,
comment_chars, line_comment_chars and line_seperator_chars
consistently const, and always initialized them. Included read.h.
Diffstat (limited to 'gas/config/tc-m68k.c')
-rw-r--r-- | gas/config/tc-m68k.c | 58 |
1 files changed, 36 insertions, 22 deletions
diff --git a/gas/config/tc-m68k.c b/gas/config/tc-m68k.c index 8ad6fa7..7b6df19 100644 --- a/gas/config/tc-m68k.c +++ b/gas/config/tc-m68k.c @@ -52,6 +52,8 @@ const char comment_chars[] = "|"; /* Also note that comments like this one will always work. */ const char line_comment_chars[] = "#"; +const char line_separator_chars[] = ""; + /* Chars that can be used to separate mant from exp in floating point nums */ const char EXP_CHARS[] = "eE"; @@ -577,11 +579,17 @@ static char alt_notend_table[256]; * advance the pointer. */ -enum _register m68k_reg_parse(ccp) -register char **ccp; +enum _register +m68k_reg_parse(ccp) + register char **ccp; { char *start = *ccp; +#ifdef REGISTER_PREFIX + if (*start == REGISTER_PREFIX) + ++start; +#endif + if (isalpha(*start) && is_name_beginner(*start)) { char c; @@ -589,12 +597,11 @@ register char **ccp; symbolS *symbolP; c = *p++; - while (isalpha(c) || isdigit(c)) - { - c = *p++; - } + while (isalpha(c) || isdigit(c) || c == '_') + { + c = *p++; + } - ; * -- p = 0; symbolP = symbol_find(start); *p = c; @@ -1965,7 +1972,6 @@ void m68k_ip (instring) break; } /* Its BIG */ if(offs(opP->con1)>0) { - as_warn("Bignum assumed to be binary bit-pattern"); if(offs(opP->con1)>baseo) { as_warn("Bignum too big for %c format; truncated",s[1]); offs(opP->con1)=baseo; @@ -3500,7 +3506,14 @@ void fixS *fixP; long val; { +#ifdef IBM_COMPILER_SUX + /* This is unnecessary but it convinces the native rs6000 + compiler to generate the code we want. */ + char *buf = fixP->fx_frag->fr_literal; + buf += fixP->fx_where; +#else /* IBM_COMPILER_SUX */ char *buf = fixP->fx_where + fixP->fx_frag->fr_literal; +#endif /* IBM_COMPILER_SUX */ switch(fixP->fx_size) { case 1: @@ -4136,19 +4149,6 @@ int ok; break; } break; - case SEG_TEXT: - case SEG_DATA: - case SEG_BSS: - case SEG_UNKNOWN: - case SEG_DIFFERENCE: - if(ok>=10 && ok<=70) { - seg(exp)=SEG_ABSOLUTE; - adds(exp)=0; - subs(exp)=0; - offs(exp)= (ok==10) ? 1 : 0; - as_warn("Can't deal with expression \"%s\": defaulting to %ld",exp->e_beg,offs(exp)); - } - break; case SEG_BIG: if (offs (exp) < 0 /* flonum */ && (ok == 80 /* no bignums */ @@ -4176,7 +4176,21 @@ int ok; } break; default: - as_fatal("failed sanity check."); + case SEG_TEXT: + case SEG_DATA: + case SEG_BSS: + case SEG_UNKNOWN: + case SEG_DIFFERENCE: + if(ok>=10 && ok<=70) { + seg(exp)=SEG_ABSOLUTE; + adds(exp)=0; + subs(exp)=0; + offs(exp)= (ok==10) ? 1 : 0; + as_warn("Can't deal with expression \"%s\": defaulting to %ld",exp->e_beg,offs(exp)); + } + break; + + } if(input_line_pointer!=exp->e_end+1) as_bad("Ignoring junk after expression"); |