This is the mail archive of the
binutils@sourceware.cygnus.com
mailing list for the binutils project.
Re: gas .macro quirks, and an ARM bug
- To: ulfc at calypso dot engr dot sgi dot com
- Subject: Re: gas .macro quirks, and an ARM bug
- From: Nick Clifton <nickc at cygnus dot com>
- Date: Thu, 8 Jun 2000 12:41:32 -0700
- CC: andrewm at netwinder dot org, binutils at sourceware dot cygnus dot com
Hi Ulf,
: No, this was intentional. The only problem I see with the current
: implementation is that you actually can't pass a `\"' through it if
: you really want a quote character in your string.
:
: .macro hello narg1
: .asciiz "\narg1"
: .endm
: hello "a quote char: \""
:
: This assembles into
:
: Contents of section .text:
: 0000 61207175 6f746520 63686172 3a202200 a quote char: ".
: Contents of section .data:
:
: You can probably get the same effect by passing `\\"' with your patch, but I
: think that's even more obscure since expansion of escape sequences usually
: isn't done in arguments to macros. The logical syntax would have
: been `\\\"'.
Good point. OK I agree that your patch is the correct solution,
although we still need to add one small extra test, to make sure that
the character following the backslash is actually present:
Index: macro.c
===================================================================
RCS file: /cvs/src//src/gas/macro.c,v
retrieving revision 1.7
diff -p -w -r1.7 macro.c
*** macro.c 2000/05/01 14:01:06 1.7
--- macro.c 2000/06/08 19:37:27
*************** getstring (idx, in, acc)
*** 312,317 ****
--- 312,325 ----
idx++ ;
sb_add_char (acc, in->ptr[idx++]);
}
+ else if (in->ptr[idx] == '\\'
+ && (idx + 1) < in->len
+ && in->ptr[idx+1] == tchar)
+ {
+ sb_add_char (acc, '\\');
+ sb_add_char (acc, tchar);
+ idx += 2;
+ }
else
{
if (in->ptr[idx] == tchar)
Cheers
Nick