* macro.c (getstring): Do not treat round parentheses exactly the same as angle
brackets - the parentheses need to be preserved and passed on to the macro processing code.
This commit is contained in:
Nick Clifton 2005-08-09 15:47:46 +00:00
parent 3260c64dd2
commit 2f6178c175
2 changed files with 33 additions and 5 deletions

View file

@ -1,3 +1,10 @@
2005-08-09 Nick Clifton <nickc@redhat.com>
PR 1070
* macro.c (getstring): Do not treat round parentheses exactly the
same as angle brackets - the parentheses need to be preserved and
passed on to the macro processing code.
2005-08-08 Nick Clifton <nickc@redhat.com>
* config/tc-msp430.c (MSP430_ISA_21): Define.

View file

@ -310,12 +310,11 @@ getstring (int idx, sb *in, sb *acc)
|| (in->ptr[idx] == '<' && (macro_alternate || macro_mri))
|| (in->ptr[idx] == '\'' && macro_alternate)))
{
if (in->ptr[idx] == '<'
|| in->ptr[idx] == '(')
if (in->ptr[idx] == '<')
{
int nest = 0;
char start_char = in->ptr[idx];
char end_char = in->ptr[idx] == '<' ? '>' : ')';
char start_char = '>';
char end_char = '>';
idx++;
while ((in->ptr[idx] != end_char || nest)
@ -337,6 +336,28 @@ getstring (int idx, sb *in, sb *acc)
}
idx++;
}
else if (in->ptr[idx] == '(')
{
int nest = 0;
char c;
do
{
c = in->ptr[idx];
if (c == '!')
c = in->ptr[++idx];
else if (c == ')')
nest--;
else if (c == '(')
nest++;
sb_add_char (acc, c);
idx++;
}
while ((c != ')' || nest)
&& idx < in->len);
}
else if (in->ptr[idx] == '"' || in->ptr[idx] == '\'')
{
char tchar = in->ptr[idx];
@ -389,7 +410,7 @@ getstring (int idx, sb *in, sb *acc)
'Bxyx<whitespace> -> return 'Bxyza
%<expr> -> return string of decimal value of <expr>
"string" -> return string
(string) -> return string
(string) -> return (string-including-whitespaces)
xyx<whitespace> -> return xyz. */
static int