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: "Andrew E. Mileski" <andrewm at netwinder dot org>
- Subject: Re: gas .macro quirks, and an ARM bug
- From: Ulf Carlsson <ulfc at calypso dot engr dot sgi dot com>
- Date: Wed, 7 Jun 2000 15:02:10 -0700 (PDT)
- Cc: binutils at sourceware dot cygnus dot com
On Wed, 7 Jun 2000, Andrew E. Mileski wrote:
> I don't know if these are bugs, features, or coding errors on my part.
> The first two apply to x86 and ARM, the third applies to ARM alone and
> looks like a genuine bug. The version of "as" doesn't seem to matter.
>
> 1) String arguments passed to macros have their quoting removed.
I'm not sure, but I think this is controlled by the macro_alternate variable
that is true if TC_A29K is defined.
> 2) Cannot pass a string argument with escaped characters to macros.
I agree that this is weird. The macros don't support expansion of escaped
characters in arguments to macros. Escaped characters are just passed on,
with one exception for the quote character itself. I think the correct
behaviour would be to pass '\"' and '\'' on as an escaped character and not
treat them as argument delimiters.
Ulf
2000-06-07 Ulf Carlsson <ulfc@engr.sgi.com>
* macro.c (getstring): Make it possible to escape the quote character.
Index: macro.c
===================================================================
RCS file: /cvs/src/src/gas/macro.c,v
retrieving revision 1.7
diff -u -p -r1.7 macro.c
--- macro.c 2000/05/01 14:01:06 1.7
+++ macro.c 2000/06/07 21:49:26
@@ -312,6 +312,12 @@ getstring (idx, in, acc)
idx++ ;
sb_add_char (acc, in->ptr[idx++]);
}
+ else if (in->ptr[idx] == '\\' && in->ptr[idx+1] == tchar)
+ {
+ sb_add_char (acc, '\\');
+ sb_add_char (acc, tchar);
+ idx += 2;
+ }
else
{
if (in->ptr[idx] == tchar)