diff options
author | Fangrui Song <maskray@gcc.gnu.org> | 2024-05-15 15:05:30 -0700 |
---|---|---|
committer | Fangrui Song <maskray@gcc.gnu.org> | 2024-05-15 15:05:30 -0700 |
commit | b1d28350499d0553067e774f72e4e98c836ae92f (patch) | |
tree | 2027651dc232d5be1ba1850ca64fae3d89fb1786 | |
parent | 53071aac476c2d497b313b1ee09a462912cb1d87 (diff) | |
download | gdb-b1d28350499d0553067e774f72e4e98c836ae92f.zip gdb-b1d28350499d0553067e774f72e4e98c836ae92f.tar.gz gdb-b1d28350499d0553067e774f72e4e98c836ae92f.tar.bz2 |
gas: Fix \+ expansion for .irp and .irpc
.irp and .irpc receive a null macro_entry. \+ causes a crash after the
recent \+ support. Restore the previous behavior.
Signed-off-by: Fangrui Song <maskray@gcc.gnu.org>
-rw-r--r-- | gas/macro.c | 2 | ||||
-rw-r--r-- | gas/testsuite/gas/macros/count.l | 2 | ||||
-rw-r--r-- | gas/testsuite/gas/macros/count.s | 7 |
3 files changed, 10 insertions, 1 deletions
diff --git a/gas/macro.c b/gas/macro.c index 72d869d..3036e6a 100644 --- a/gas/macro.c +++ b/gas/macro.c @@ -854,7 +854,7 @@ macro_expand_body (sb *in, sb *out, formal_entry *formals, sprintf (buffer, "%u", macro_number); sb_add_string (out, buffer); } - else if (src < in->len && in->ptr[src] == '+') + else if (macro && src < in->len && in->ptr[src] == '+') { /* Sub in the current macro invocation number. */ diff --git a/gas/testsuite/gas/macros/count.l b/gas/testsuite/gas/macros/count.l index 3418b0b..ca666ea 100644 --- a/gas/testsuite/gas/macros/count.l +++ b/gas/testsuite/gas/macros/count.l @@ -8,3 +8,5 @@ 1 4 2 +\+ +\+ diff --git a/gas/testsuite/gas/macros/count.s b/gas/testsuite/gas/macros/count.s index c752ca8..4a5b078 100644 --- a/gas/testsuite/gas/macros/count.s +++ b/gas/testsuite/gas/macros/count.s @@ -17,3 +17,10 @@ mac1 2 mac2 3 + + .irp i,1 + .print "\+" + .endr + .irpc i,1 + .print "\+" + .endr |