From: Nick Clifton Date: Tue, 20 Apr 2010 15:54:48 +0000 (+0000) Subject: PR gas/11507 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=aa27de954944df9e1af7c689ed6bbdf07a7b3ad0;p=binutils-gdb.git PR gas/11507 * macro.c (macro_expand_body): Do not treat LOCAL as a keyword in altmacro mode if found inside a quoted string. * gas/macros/altmacro.s: New test. * gas/macros/altmacro.d: Expected output. --- diff --git a/gas/ChangeLog b/gas/ChangeLog index 78920e67493..660daad3520 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,9 @@ +2010-04-20 Nick Clifton + + 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 * config/bfin-lex.l (parse_int): Change index() to strchr(). diff --git a/gas/macro.c b/gas/macro.c index b5c1824d2f0..97f341473d6 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 797a2b4f78e..f5522ad3e16 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2010-04-20 Nick Clifton + + PR gas/11507 + * gas/macros/altmacro.s: New test. + * gas/macros/altmacro.d: Expected output. + 2010-04-16 Nick Clifton PR gas/11395 diff --git a/gas/testsuite/gas/macros/altmacro.d b/gas/testsuite/gas/macros/altmacro.d new file mode 100644 index 00000000000..49c04aa3f79 --- /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 00000000000..bb3a05d857f --- /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