diff options
Diffstat (limited to 'gas/macro.c')
-rw-r--r-- | gas/macro.c | 55 |
1 files changed, 21 insertions, 34 deletions
diff --git a/gas/macro.c b/gas/macro.c index 25ce962..5d3b0f2 100644 --- a/gas/macro.c +++ b/gas/macro.c @@ -34,7 +34,7 @@ #define ISSEP(x) \ ((x) == ' ' || (x) == '\t' || (x) == ',' || (x) == '"' || (x) == ';' \ || (x) == ')' || (x) == '(' \ - || ((macro_alternate || macro_mri) && ((x) == '<' || (x) == '>'))) + || ((macro_alternate || flag_mri) && ((x) == '<' || (x) == '>'))) #define ISBASE(x) \ ((x) == 'b' || (x) == 'B' \ @@ -54,10 +54,6 @@ int macro_defined; static int macro_alternate; -/* Whether we are in MRI mode. */ - -static int macro_mri; - /* Whether we should strip '@' characters. */ #define macro_strip_at false @@ -78,13 +74,12 @@ macro_del_f (void *ent) /* Initialize macro processing. */ void -macro_init (int alternate, int mri) +macro_init (int alternate) { macro_hash = htab_create_alloc (16, hash_string_tuple, eq_string_tuple, macro_del_f, notes_calloc, NULL); macro_defined = 0; macro_alternate = alternate; - macro_mri = mri; } void @@ -101,14 +96,6 @@ macro_set_alternate (int alternate) macro_alternate = alternate; } -/* Switch in and out of MRI mode on the fly. */ - -void -macro_mri_mode (int mri) -{ - macro_mri = mri; -} - /* Read input lines till we get to a TO string. Increase nesting depth if we get a FROM string. Put the results into sb at PTR. @@ -205,7 +192,7 @@ buffer_and_nest (const char *from, const char *to, sb *ptr, if (i < ptr->len && (ptr->ptr[i] == '.' || NO_PSEUDO_DOT - || macro_mri)) + || flag_mri)) { if (! flag_m68k_mri && ptr->ptr[i] == '.') i++; @@ -309,7 +296,7 @@ getstring (size_t idx, sb *in, sb *acc) { while (idx < in->len && (in->ptr[idx] == '"' - || (in->ptr[idx] == '<' && (macro_alternate || macro_mri)) + || (in->ptr[idx] == '<' && (macro_alternate || flag_mri)) || (in->ptr[idx] == '\'' && macro_alternate))) { if (in->ptr[idx] == '<') @@ -423,7 +410,7 @@ get_any_string (size_t idx, sb *in, sb *out) sb_add_string (out, buf); } else if (in->ptr[idx] == '"' - || (in->ptr[idx] == '<' && (macro_alternate || macro_mri)) + || (in->ptr[idx] == '<' && (macro_alternate || flag_mri)) || (macro_alternate && in->ptr[idx] == '\'')) { if (macro_alternate && ! macro_strip_at && in->ptr[idx] != '<') @@ -450,7 +437,7 @@ get_any_string (size_t idx, sb *in, sb *out) && in->ptr[idx] != '\t')) && in->ptr[idx] != ',' && (in->ptr[idx] != '<' - || (! macro_alternate && ! macro_mri))) + || (! macro_alternate && ! flag_mri))) { char tchar = in->ptr[idx]; @@ -553,7 +540,7 @@ do_formals (macro_entry *macro, size_t idx, sb *in) idx = sb_skip_white (idx, in); /* This is a formal. */ name = sb_terminate (&formal->name); - if (! macro_mri + if (! flag_mri && idx < in->len && in->ptr[idx] == ':' && (! is_name_beginner (':') @@ -625,7 +612,7 @@ do_formals (macro_entry *macro, size_t idx, sb *in) } } - if (macro_mri) + if (flag_mri) { formal_entry *formal = new_formal (); @@ -764,7 +751,7 @@ get_apost_token (size_t idx, sb *in, sb *name, int kind) idx = get_token (idx, in, name); if (idx < in->len && in->ptr[idx] == kind - && (! macro_mri || macro_strip_at) + && (! flag_mri || macro_strip_at) && (! macro_strip_at || kind == '@')) idx++; return idx; @@ -838,7 +825,7 @@ macro_expand_body (sb *in, sb *out, formal_entry *formals, if (in->ptr[src] == '&') { sb_reset (&t); - if (macro_mri) + if (flag_mri) { if (src + 1 < in->len && in->ptr[src + 1] == '&') src = sub_actual (src + 2, in, &t, formal_hash, '\'', out, 1); @@ -887,7 +874,7 @@ macro_expand_body (sb *in, sb *out, formal_entry *formals, sb_add_char (out, '&'); src++; } - else if (macro_mri && src < in->len && ISALNUM (in->ptr[src])) + else if (flag_mri && src < in->len && ISALNUM (in->ptr[src])) { int ind; formal_entry *f; @@ -917,7 +904,7 @@ macro_expand_body (sb *in, sb *out, formal_entry *formals, src = sub_actual (src, in, &t, formal_hash, '\'', out, 0); } } - else if ((macro_alternate || macro_mri) + else if ((macro_alternate || flag_mri) && is_name_beginner (in->ptr[src]) && (! inquote || ! macro_strip_at @@ -970,7 +957,7 @@ macro_expand_body (sb *in, sb *out, formal_entry *formals, } } else if (in->ptr[src] == '"' - || (macro_mri && in->ptr[src] == '\'')) + || (flag_mri && in->ptr[src] == '\'')) { inquote = !inquote; sb_add_char (out, in->ptr[src++]); @@ -985,7 +972,7 @@ macro_expand_body (sb *in, sb *out, formal_entry *formals, ++src; } } - else if (macro_mri + else if (flag_mri && in->ptr[src] == '=' && src + 1 < in->len && in->ptr[src + 1] == '=') @@ -1070,7 +1057,7 @@ macro_expand (size_t idx, sb *in, macro_entry *m, sb *out) while (f != NULL && f->index < 0) f = f->next; - if (macro_mri) + if (flag_mri) { /* The macro may be called with an optional qualifier, which may be referred to in the macro body as \0. */ @@ -1105,7 +1092,7 @@ macro_expand (size_t idx, sb *in, macro_entry *m, sb *out) scan = idx; while (scan < in->len && !ISSEP (in->ptr[scan]) - && !(macro_mri && in->ptr[scan] == '\'') + && !(flag_mri && in->ptr[scan] == '\'') && (!macro_alternate && in->ptr[scan] != '=')) scan++; if (scan < in->len && !macro_alternate && in->ptr[scan] == '=') @@ -1162,7 +1149,7 @@ macro_expand (size_t idx, sb *in, macro_entry *m, sb *out) formal_entry **pf; int c; - if (!macro_mri) + if (!flag_mri) { err = _("too many positional arguments"); break; @@ -1196,7 +1183,7 @@ macro_expand (size_t idx, sb *in, macro_entry *m, sb *out) while (f != NULL && f->index < 0); } - if (! macro_mri) + if (! flag_mri) idx = sb_skip_comma (idx, in); else { @@ -1217,7 +1204,7 @@ macro_expand (size_t idx, sb *in, macro_entry *m, sb *out) m->name); } - if (macro_mri) + if (flag_mri) { ptr = str_hash_find (m->formal_hash, macro_strip_at ? "$NARG" : "NARG"); @@ -1233,7 +1220,7 @@ macro_expand (size_t idx, sb *in, macro_entry *m, sb *out) } /* Discard any unnamed formal arguments. */ - if (macro_mri) + if (flag_mri) { formal_entry **pf; @@ -1271,7 +1258,7 @@ check_macro (const char *line, sb *expand, sb line_sb; if (! is_name_beginner (*line) - && (! macro_mri || *line != '.')) + && (! flag_mri || *line != '.')) return 0; s = line + 1; |