aboutsummaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2010-04-20 15:54:48 +0000
committerNick Clifton <nickc@redhat.com>2010-04-20 15:54:48 +0000
commitaa27de954944df9e1af7c689ed6bbdf07a7b3ad0 (patch)
tree14e8bacebbd1e4822f4584300c6e7173f112fc5e /gas
parent1c07cc19039fc86c4f857fae766f02f5452a9a22 (diff)
downloadfsf-binutils-gdb-aa27de954944df9e1af7c689ed6bbdf07a7b3ad0.zip
fsf-binutils-gdb-aa27de954944df9e1af7c689ed6bbdf07a7b3ad0.tar.gz
fsf-binutils-gdb-aa27de954944df9e1af7c689ed6bbdf07a7b3ad0.tar.bz2
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.
Diffstat (limited to 'gas')
-rw-r--r--gas/ChangeLog6
-rw-r--r--gas/macro.c4
-rw-r--r--gas/testsuite/ChangeLog6
-rw-r--r--gas/testsuite/gas/macros/altmacro.d3
-rw-r--r--gas/testsuite/gas/macros/altmacro.s26
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