PR gas/11834
authorAlan Modra <amodra@gmail.com>
Fri, 23 Jul 2010 06:44:25 +0000 (06:44 +0000)
committerAlan Modra <amodra@gmail.com>
Fri, 23 Jul 2010 06:44:25 +0000 (06:44 +0000)
* macro.c (macro_expand): Recover gracefully from named args that
don't match params.

gas/ChangeLog
gas/macro.c

index 5d543f9c436207210f088e6e5a0984e1a35407e4..a157d027683a1dd53cb1b0e579ab573bf986abe3 100644 (file)
@@ -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.
index 97f341473d6c5e96314f769a255f5d125be98f7e..3e3ffb11f57a087b431940bc17263abaf70bd893 100644 (file)
@@ -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.  */