From: Jan Beulich <jbeulich@suse.com>
To: Binutils <binutils@sourceware.org>
Subject: [PATCH 3/4] gas: use flag_mri directly in macro processing
Date: Wed, 8 Mar 2023 17:08:39 +0100 [thread overview]
Message-ID: <0cdb6ff1-8f31-8222-629f-cb991a1efb63@suse.com> (raw)
In-Reply-To: <bdf364c0-c333-095b-47e0-24948906071e@suse.com>
Again with the removal of gasp about 20 years ago the extra level of
indirection isn't necessary anymore. Drop macro.c's local variable and
use the global flag directly.
--- a/gas/as.c
+++ b/gas/as.c
@@ -1307,7 +1307,7 @@ gas_init (void)
input_scrub_begin ();
expr_begin ();
- macro_init (flag_macro_alternate, flag_mri);
+ macro_init (flag_macro_alternate);
dwarf2_init ();
--- 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
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 *
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 *
&& 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 i
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 i
}
}
- if (macro_mri)
+ if (flag_mri)
{
formal_entry *formal = new_formal ();
@@ -764,7 +751,7 @@ get_apost_token (size_t idx, sb *in, sb
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, form
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, form
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, form
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, form
}
}
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, form
++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_
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_
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_
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_
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_
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_
}
/* Discard any unnamed formal arguments. */
- if (macro_mri)
+ if (flag_mri)
{
formal_entry **pf;
@@ -1271,7 +1258,7 @@ check_macro (const char *line, sb *expan
sb line_sb;
if (! is_name_beginner (*line)
- && (! macro_mri || *line != '.'))
+ && (! flag_mri || *line != '.'))
return 0;
s = line + 1;
--- a/gas/macro.h
+++ b/gas/macro.h
@@ -83,10 +83,9 @@ extern htab_t macro_hash;
extern int buffer_and_nest (const char *, const char *, sb *,
size_t (*) (sb *));
-extern void macro_init (int, int);
+extern void macro_init (int);
extern void macro_end (void);
extern void macro_set_alternate (int);
-extern void macro_mri_mode (int);
extern macro_entry *define_macro (sb *, sb *, size_t (*) (sb *));
extern int check_macro (const char *, sb *, const char **, macro_entry **);
extern void delete_macro (const char *);
--- a/gas/read.c
+++ b/gas/read.c
@@ -2746,7 +2746,6 @@ s_mri (int ignore ATTRIBUTE_UNUSED)
#ifdef TC_M68K
flag_m68k_mri = 1;
#endif
- macro_mri_mode (1);
}
else
{
@@ -2754,7 +2753,6 @@ s_mri (int ignore ATTRIBUTE_UNUSED)
#ifdef TC_M68K
flag_m68k_mri = 0;
#endif
- macro_mri_mode (0);
}
/* Operator precedence changes in m68k MRI mode, so we need to
next prev parent reply other threads:[~2023-03-08 16:08 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-03-08 16:05 [PATCH 0/4] gas: tidy macro interfacing after removal of gasp Jan Beulich
2023-03-08 16:07 ` [PATCH 1/4] gas: drop function pointer parameter from macro_init() Jan Beulich
2023-03-08 16:08 ` [PATCH 2/4] gas: isolate macro_strip_at to macro.c Jan Beulich
2023-03-08 16:08 ` Jan Beulich [this message]
2023-03-08 16:09 ` [PATCH 4/4] gas: expose flag_macro_alternate globally Jan Beulich
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=0cdb6ff1-8f31-8222-629f-cb991a1efb63@suse.com \
--to=jbeulich@suse.com \
--cc=binutils@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).