This is the mail archive of the binutils@sourceware.cygnus.com mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: gas .macro quirks, and an ARM bug


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

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]