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.
This commit is contained in:
parent
3260c64dd2
commit
2f6178c175
2 changed files with 33 additions and 5 deletions
|
@ -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.
|
||||
|
|
31
gas/macro.c
31
gas/macro.c
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue