aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gas/ChangeLog6
-rw-r--r--gas/macro.c10
2 files changed, 13 insertions, 3 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 5d543f9..a157d02 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,9 @@
+2010-07-23 Alan Modra <amodra@gmail.com>
+
+ PR gas/11834
+ * macro.c (macro_expand): Recover gracefully from named args that
+ don't match params.
+
2010-07-22 Thomas Schwinge <thomas@codesourcery.com>
Switch MIPS to 32-bit DWARF format.
diff --git a/gas/macro.c b/gas/macro.c
index 97f3414..3e3ffb1 100644
--- a/gas/macro.c
+++ b/gas/macro.c
@@ -1072,9 +1072,13 @@ macro_expand (int idx, sb *in, macro_entry *m, sb *out)
/* Lookup the formal in the macro's list. */
ptr = (formal_entry *) hash_find (m->formal_hash, sb_terminate (&t));
if (!ptr)
- as_bad (_("Parameter named `%s' does not exist for macro `%s'"),
- t.ptr,
- m->name);
+ {
+ as_bad (_("Parameter named `%s' does not exist for macro `%s'"),
+ t.ptr,
+ m->name);
+ sb_reset (&t);
+ idx = get_any_string (idx + 1, in, &t);
+ }
else
{
/* Insert this value into the right place. */