X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gas%2Fexpr.c;h=b1cdb38bab58add5550d1affbbbfcd363b298279;hb=6610dc6daa661b7cd042bc6313a29859b87263d9;hp=777504f1f8004821f6f19f584b603ea66850b655;hpb=3b4dbbbf59aef4308bae6654bdc7968797504a3c;p=deliverable%2Fbinutils-gdb.git diff --git a/gas/expr.c b/gas/expr.c index 777504f1f8..b1cdb38bab 100644 --- a/gas/expr.c +++ b/gas/expr.c @@ -46,8 +46,6 @@ static void clean_up_expression (expressionS * expressionP); static segT operand (expressionS *, enum expr_mode); static operatorT operatorf (int *); -extern const char EXP_CHARS[], FLT_CHARS[]; - /* We keep a mapping of expression symbols to file positions, so that we can provide better error messages. */ @@ -108,7 +106,7 @@ make_expr_symbol (expressionS *expressionP) if (expressionP->X_op == O_constant) resolve_symbol_value (symbolP); - n = (struct expr_symbol_line *) xmalloc (sizeof *n); + n = XNEW (struct expr_symbol_line); n->sym = symbolP; n->file = as_where (&n->line); n->next = expr_symbol_lines; @@ -510,6 +508,13 @@ integer_constant (int radix, expressionS *expressionP) && input_line_pointer - 1 == suffix) c = *input_line_pointer++; +#ifndef tc_allow_U_suffix +#define tc_allow_U_suffix 1 +#endif + /* PR 19910: Look for, and ignore, a U suffix to the number. */ + if (tc_allow_U_suffix && (c == 'U' || c == 'u')) + c = * input_line_pointer++; + if (small) { /* Here with number, in correct radix. c is the next char. @@ -952,7 +957,13 @@ operand (expressionS *expressionP, enum expr_mode mode) /* expression () will pass trailing whitespace. */ if ((c == '(' && *input_line_pointer != ')') || (c == '[' && *input_line_pointer != ']')) - as_bad (_("missing '%c'"), c == '(' ? ')' : ']'); + { + if (* input_line_pointer) + as_bad (_("found '%c', expected: '%c'"), + * input_line_pointer, c == '(' ? ')' : ']'); + else + as_bad (_("missing '%c'"), c == '(' ? ')' : ']'); + } else input_line_pointer++; SKIP_WHITESPACE (); @@ -1144,11 +1155,8 @@ operand (expressionS *expressionP, enum expr_mode mode) SKIP_WHITESPACE (); c = get_symbol_name (& name); - buf = (char *) xmalloc (strlen (name) + 10); - if (start) - sprintf (buf, ".startof.%s", name); - else - sprintf (buf, ".sizeof.%s", name); + buf = concat (start ? ".startof." : ".sizeof.", name, + (char *) NULL); symbolP = symbol_make (buf); free (buf); @@ -1290,11 +1298,8 @@ operand (expressionS *expressionP, enum expr_mode mode) c = get_symbol_name (& name); - buf = (char *) xmalloc (strlen (name) + 10); - if (start) - sprintf (buf, ".startof.%s", name); - else - sprintf (buf, ".sizeof.%s", name); + buf = concat (start ? ".startof." : ".sizeof.", name, + (char *) NULL); symbolP = symbol_make (buf); free (buf);