diff options
-rw-r--r-- | gas/ChangeLog | 6 | ||||
-rw-r--r-- | gas/macro.c | 4 | ||||
-rw-r--r-- | gas/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gas/testsuite/gas/macros/altmacro.d | 3 | ||||
-rw-r--r-- | gas/testsuite/gas/macros/altmacro.s | 26 |
5 files changed, 44 insertions, 1 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index 78920e6..660daad 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,9 @@ +2010-04-20 Nick Clifton <nickc@redhat.com> + + PR gas/11507 + * macro.c (macro_expand_body): Do not treat LOCAL as a keyword in + altmacro mode if found inside a quoted string. + 2010-04-20 Mike Frysinger <vapier@gentoo.org> * config/bfin-lex.l (parse_int): Change index() to strchr(). diff --git a/gas/macro.c b/gas/macro.c index b5c1824..97f3414 100644 --- a/gas/macro.c +++ b/gas/macro.c @@ -868,7 +868,9 @@ macro_expand_body (sb *in, sb *out, formal_entry *formals, if (! macro || src + 5 >= in->len || strncasecmp (in->ptr + src, "LOCAL", 5) != 0 - || ! ISWHITE (in->ptr[src + 5])) + || ! ISWHITE (in->ptr[src + 5]) + /* PR 11507: Skip keyword LOCAL if it is found inside a quoted string. */ + || inquote) { sb_reset (&t); src = sub_actual (src, in, &t, formal_hash, diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index 797a2b4..f5522ad 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2010-04-20 Nick Clifton <nickc@redhat.com> + + PR gas/11507 + * gas/macros/altmacro.s: New test. + * gas/macros/altmacro.d: Expected output. + 2010-04-16 Nick Clifton <nickc@redhat.com> PR gas/11395 diff --git a/gas/testsuite/gas/macros/altmacro.d b/gas/testsuite/gas/macros/altmacro.d new file mode 100644 index 0000000..49c04aa --- /dev/null +++ b/gas/testsuite/gas/macros/altmacro.d @@ -0,0 +1,3 @@ +local +.LL0001 +.LL0002 diff --git a/gas/testsuite/gas/macros/altmacro.s b/gas/testsuite/gas/macros/altmacro.s new file mode 100644 index 0000000..bb3a05d --- /dev/null +++ b/gas/testsuite/gas/macros/altmacro.s @@ -0,0 +1,26 @@ +# Check use of LOCAL directive inside .altmacro. +# Test derived from PR 11507. + + .altmacro + + .macro ABC + .print "local " + .endm + + .macro DEF + LOCAL fred + .print "fred" + .endm + +# This one is just being perverse, but it should work. + .macro GHI + local local + .print "local" + .endm + + + ABC + + DEF + + GHI |