aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2008-03-13 10:51:33 +0000
committerNick Clifton <nickc@redhat.com>2008-03-13 10:51:33 +0000
commit5808f4a685c011dca2ea8046508af6c39b91b8da (patch)
tree387c784a97d6c2a1eb6ac2e81b1dac1d24699ed3
parent72de5009312d26000c098d9876e30e631b80fc95 (diff)
downloadgdb-5808f4a685c011dca2ea8046508af6c39b91b8da.zip
gdb-5808f4a685c011dca2ea8046508af6c39b91b8da.tar.gz
gdb-5808f4a685c011dca2ea8046508af6c39b91b8da.tar.bz2
PR gas/5895
* read.c (s_mexit): Warn if attempting to exit a macro when not inside a macro definition. * gas/macros/exit.s: New test case. * gas/macros/macros.exp: Run the new test, expect it to produce an error result.
-rw-r--r--gas/ChangeLog6
-rw-r--r--gas/read.c9
-rw-r--r--gas/testsuite/ChangeLog7
-rw-r--r--gas/testsuite/gas/macros/exit.s8
-rw-r--r--gas/testsuite/gas/macros/macros.exp5
5 files changed, 33 insertions, 2 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index d15b8b9..4e9ec9a 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,9 @@
+2008-03-13 Evandro Menezes <evandro@yahoo.com>
+
+ PR gas/5895
+ * read.c (s_mexit): Warn if attempting to exit a macro when not
+ inside a macro definition.
+
2008-03-13 Alan Modra <amodra@bigpond.net.au>
* Makefile.am: Run "make dep-am".
diff --git a/gas/read.c b/gas/read.c
index 8163c5a..ec69c4e 100644
--- a/gas/read.c
+++ b/gas/read.c
@@ -2554,8 +2554,13 @@ s_macro (int ignore ATTRIBUTE_UNUSED)
void
s_mexit (int ignore ATTRIBUTE_UNUSED)
{
- cond_exit_macro (macro_nest);
- buffer_limit = input_scrub_next_buffer (&input_line_pointer);
+ if (macro_nest)
+ {
+ cond_exit_macro (macro_nest);
+ buffer_limit = input_scrub_next_buffer (&input_line_pointer);
+ }
+ else
+ as_warn (_("ignoring macro exit outside a macro definition."));
}
/* Switch in and out of MRI mode. */
diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog
index 8ebab2e..951ecb5 100644
--- a/gas/testsuite/ChangeLog
+++ b/gas/testsuite/ChangeLog
@@ -1,3 +1,10 @@
+2008-03-13 Nick Clifton <nickc@redhat.com>
+
+ PR gas/5895
+ * gas/macros/exit.s: New test case.
+ * gas/macros/macros.exp: Run the new test, expect it to produce an
+ error result.
+
2008-03-09 Paul Brook <paul@codesourcery.com>
* gas/arm/vfpv3-d16-bad.d: New test.
diff --git a/gas/testsuite/gas/macros/exit.s b/gas/testsuite/gas/macros/exit.s
new file mode 100644
index 0000000..502cff8
--- /dev/null
+++ b/gas/testsuite/gas/macros/exit.s
@@ -0,0 +1,8 @@
+
+.macro MAC
+ BAD_OP
+.endm
+
+.exitm
+
+ MAC
diff --git a/gas/testsuite/gas/macros/macros.exp b/gas/testsuite/gas/macros/macros.exp
index 436923e..f8d5c80 100644
--- a/gas/testsuite/gas/macros/macros.exp
+++ b/gas/testsuite/gas/macros/macros.exp
@@ -77,3 +77,8 @@ run_list_test redef ""
if [string match "" [lindex [gas_run ../all/excl.s "-o /dev/null" ""] 0]] {
run_dump_test paren
}
+
+# PR 58925: A .exitm pseudo-op outside of a macro definition
+# prevented the assembler from parsing the rest of the file,
+# and hence catching an erroroneous instruction.
+gas_test_error "exit.s" "" ".exitm outside of a macro"