PR gas/3856
authorNick Clifton <nickc@redhat.com>
Fri, 12 Jan 2007 10:57:02 +0000 (10:57 +0000)
committerNick Clifton <nickc@redhat.com>
Fri, 12 Jan 2007 10:57:02 +0000 (10:57 +0000)
* macro.c (expand_irp): Do not ignore spaces inside quoted strings.

gas/ChangeLog
gas/macro.c

index ab907bff6db4ade65bbdeb406aafa6ad6dc988ac..09b11b0065729f411fb46f1f0382307796d85104 100644 (file)
@@ -1,3 +1,9 @@
+2007-01-12  Nick Clifton  <nickc@redhat.com>
+
+       PR gas/3856
+       * macro.c (expand_irp): Do not ignore spaces inside quoted
+       strings.
+
 2007-01-12  Alan Modra  <amodra@bigpond.net.au>
 
        * config/tc-spu.h (TC_RELOC_RTSYM_LOC_FIXUP): Delete.
index 67846eb2daa8dcc7ac1b358f29b1c5ba73f35efa..d7d470b764eb31355e0a3b6173848a8c7e57d69e 100644 (file)
@@ -1325,8 +1325,14 @@ expand_irp (int irpc, int idx, sb *in, sb *out, int (*get_line) (sb *))
     }
   else
     {
+      bfd_boolean in_quotes = FALSE;
+
       if (irpc && in->ptr[idx] == '"')
-       ++idx;
+       {
+         in_quotes = TRUE;
+         ++idx;
+       }
+
       while (idx < in->len)
        {
          if (!irpc)
@@ -1337,6 +1343,9 @@ expand_irp (int irpc, int idx, sb *in, sb *out, int (*get_line) (sb *))
                {
                  int nxt;
 
+                 if (irpc)
+                   in_quotes = ! in_quotes;
+         
                  nxt = sb_skip_white (idx + 1, in);
                  if (nxt >= in->len)
                    {
@@ -1348,12 +1357,13 @@ expand_irp (int irpc, int idx, sb *in, sb *out, int (*get_line) (sb *))
              sb_add_char (&f.actual, in->ptr[idx]);
              ++idx;
            }
+
          err = macro_expand_body (&sub, out, &f, h, 0);
          if (err != NULL)
            break;
          if (!irpc)
            idx = sb_skip_comma (idx, in);
-         else
+         else if (! in_quotes)
            idx = sb_skip_white (idx, in);
        }
     }