aboutsummaryrefslogtreecommitdiff
path: root/gas/config/tc-m68k.c
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@airs.com>1992-11-10 18:17:00 +0000
committerIan Lance Taylor <ian@airs.com>1992-11-10 18:17:00 +0000
commit587c4264e020987b332577135abfefdbb3dee699 (patch)
tree876a218a78633b5b4be594612571317a11dba476 /gas/config/tc-m68k.c
parent9ee6289b478ed3f18bf30821ccc8a8d43c54b467 (diff)
downloadgdb-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.c58
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");