mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-24 04:00:07 +08:00
* expr.c (operand): Check correctly that there is no advance in
operand after atof_generic in order to decide "is it label 0f or floating point number". PR16670
This commit is contained in:
@ -1,3 +1,9 @@
|
|||||||
|
1998-08-20 Vladimir N. Makarov <vmakarov@cygnus.com>
|
||||||
|
|
||||||
|
* expr.c (operand): Check correctly that there is no advance in
|
||||||
|
operand after atof_generic in order to decide "is it label 0f or
|
||||||
|
floating point number".
|
||||||
|
|
||||||
Wed Aug 19 09:30:16 1998 Nick Clifton <nickc@cygnus.com>
|
Wed Aug 19 09:30:16 1998 Nick Clifton <nickc@cygnus.com>
|
||||||
|
|
||||||
* config/tc-m32r.c: Replace double dash prefix to M32R specific
|
* config/tc-m32r.c: Replace double dash prefix to M32R specific
|
||||||
|
19
gas/expr.c
19
gas/expr.c
@ -64,6 +64,7 @@ symbolS *
|
|||||||
make_expr_symbol (expressionP)
|
make_expr_symbol (expressionP)
|
||||||
expressionS *expressionP;
|
expressionS *expressionP;
|
||||||
{
|
{
|
||||||
|
expressionS zero;
|
||||||
const char *fake;
|
const char *fake;
|
||||||
symbolS *symbolP;
|
symbolS *symbolP;
|
||||||
struct expr_symbol_line *n;
|
struct expr_symbol_line *n;
|
||||||
@ -72,6 +73,22 @@ make_expr_symbol (expressionP)
|
|||||||
&& expressionP->X_add_number == 0)
|
&& expressionP->X_add_number == 0)
|
||||||
return expressionP->X_add_symbol;
|
return expressionP->X_add_symbol;
|
||||||
|
|
||||||
|
if (expressionP->X_op == O_big)
|
||||||
|
{
|
||||||
|
/* This won't work, because the actual value is stored in
|
||||||
|
generic_floating_point_number or generic_bignum, and we are
|
||||||
|
going to lose it if we haven't already. */
|
||||||
|
if (expressionP->X_add_number > 0)
|
||||||
|
as_bad (_("bignum invalid; zero assumed"));
|
||||||
|
else
|
||||||
|
as_bad (_("floating point number invalid; zero assumed"));
|
||||||
|
zero.X_op = O_constant;
|
||||||
|
zero.X_add_number = 0;
|
||||||
|
zero.X_unsigned = 0;
|
||||||
|
clean_up_expression (&zero);
|
||||||
|
expressionP = &zero;
|
||||||
|
}
|
||||||
|
|
||||||
fake = FAKE_LABEL_NAME;
|
fake = FAKE_LABEL_NAME;
|
||||||
|
|
||||||
/* Putting constant symbols in absolute_section rather than
|
/* Putting constant symbols in absolute_section rather than
|
||||||
@ -907,7 +924,7 @@ operand (expressionP)
|
|||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
case ERROR_EXPONENT_OVERFLOW:
|
case ERROR_EXPONENT_OVERFLOW:
|
||||||
if (*cp == 'f' || *cp == 'b')
|
if (cp[-1] == 'f' || cp[-1] == 'b')
|
||||||
/* looks like a difference expression */
|
/* looks like a difference expression */
|
||||||
goto is_0f_label;
|
goto is_0f_label;
|
||||||
else
|
else
|
||||||
|
Reference in New Issue
Block a user