diff options
author | Ian Lance Taylor <ian@airs.com> | 1995-08-18 15:09:57 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@airs.com> | 1995-08-18 15:09:57 +0000 |
commit | f8d6e6cd08b07dcd03568b43ae46853248bec573 (patch) | |
tree | ef8bd121758a29d4c88b825e29279db3c2415ab7 /gas/gasp.c | |
parent | b4ec75e09f7b1d80a5252ecc236e1b92660bce7e (diff) | |
download | fsf-binutils-gdb-f8d6e6cd08b07dcd03568b43ae46853248bec573.zip fsf-binutils-gdb-f8d6e6cd08b07dcd03568b43ae46853248bec573.tar.gz fsf-binutils-gdb-f8d6e6cd08b07dcd03568b43ae46853248bec573.tar.bz2 |
* gasp.c (include_print_where_line): Always subtract 1 from
linecount before printing it.
(process_file): In MRI mode, lines beginning with '*' or '!' are
comments.
(do_reg): In MRI mode, don't require parentheses.
(do_include): In MRI mode, don't requires quotes. If the file can
not be found in the include path, try opening it in the current
directory. Print the file name correctly in the error message.
(chartype_init): In MRI mode, set FIRSTBIT for '.'.
(main): Set comment_char to ';' when entering MRI mode.
Diffstat (limited to 'gas/gasp.c')
-rw-r--r-- | gas/gasp.c | 40 |
1 files changed, 34 insertions, 6 deletions
@@ -1276,7 +1276,7 @@ include_print_where_line (file) while (p <= sp) { - fprintf (file, "%s:%d ", sb_name (&p->name), p->linecount - ((p == sp) ? 1 : 0)); + fprintf (file, "%s:%d ", sb_name (&p->name), p->linecount - 1); p++; } } @@ -2177,6 +2177,13 @@ process_file () if (condass_on ()) fprintf (outfile, "\n"); } + else if (mri + && (line.ptr[0] == '*' + || line.ptr[0] == '!')) + { + /* MRI line comment. */ + fprintf (outfile, sb_name (&line)); + } else { l = grab_label (&line, &label_in); @@ -2325,9 +2332,15 @@ do_reg (idx, in) { /* remove reg stuff from inside parens */ sb what; - idx = skip_openp (idx, in); + if (!mri) + idx = skip_openp (idx, in); + else + idx = sb_skip_white (idx, in); sb_new (&what); - while (idx < in->len && in->ptr[idx] != ')') + while (idx < in->len + && (mri + ? ! eol (idx, in) + : in->ptr[idx] != ')')) { sb_add_char (&what, in->ptr[idx]); idx++; @@ -3836,12 +3849,22 @@ do_include (idx, in) { sb t; sb cat; - char *text; include_path *includes; + sb_new (&t); sb_new (&cat); - idx = getstring (idx, in, &t); + if (! mri) + idx = getstring (idx, in, &t); + else + { + idx = sb_skip_white (idx, in); + while (idx < in->len && ! ISWHITE (in->ptr[idx])) + { + sb_add_char (&t, in->ptr[idx]); + ++idx; + } + } for (includes = paths_head; includes; includes = includes->next) { @@ -3856,7 +3879,8 @@ do_include (idx, in) } if (!includes) { - FATAL ((stderr, "Can't open include file `%s'.\n", text)); + if (! new_file (sb_name (&t))) + FATAL ((stderr, "Can't open include file `%s'.\n", sb_name (&t))); } sb_kill (&cat); sb_kill (&t); @@ -3946,6 +3970,9 @@ chartype_init () if (isalpha (x) || x == '_' || x == '$') chartype[x] |= FIRSTBIT; + if (mri && x == '.') + chartype[x] |= FIRSTBIT; + if (isdigit (x) || isalpha (x) || x == '_' || x == '$') chartype[x] |= NEXTBIT; @@ -4567,6 +4594,7 @@ main (argc, argv) break; case 'M': mri = 1; + comment_char = ';'; break; case 'h': show_help (); |