diff options
author | Nick Clifton <nickc@redhat.com> | 2016-04-07 12:34:06 +0100 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2016-04-07 12:34:06 +0100 |
commit | e140100a5da85568e83ffe8e77d3f5e4a59ddee8 (patch) | |
tree | c9dbe69c7bf5550b708733dcb153336c940bd541 /gas/expr.c | |
parent | df154dc15f5385c9ec3b998788536dede9882393 (diff) | |
download | gdb-e140100a5da85568e83ffe8e77d3f5e4a59ddee8.zip gdb-e140100a5da85568e83ffe8e77d3f5e4a59ddee8.tar.gz gdb-e140100a5da85568e83ffe8e77d3f5e4a59ddee8.tar.bz2 |
Allow integer contants to have a U suffix. Improve error reporting for missing closing parentheses.
PR gas/19910
* config/tc-sparc.c (sparc_ip): Report an error if the expression
inside a %-macro could not be fully parsed.
* expr.c (integer_constant): Accept and ignore U suffixes to
integers.
(operand): When a missing closing parenthesis is encountered,
report the character that was found instead.
* testsuite/gas/mips/tls-ill.l: Update expected error message.
* testsuite/gas/sparc/pr19910-1.d: New test driver.
* testsuite/gas/sparc/pr19910-1.s: New test.
* testsuite/gas/sparc/pr19910-2.l: Expected error output.
* testsuite/gas/sparc/pr19910-2.s: New test.
* testsuite/gas/sparc/sparc.exp: Run the new tests.
Diffstat (limited to 'gas/expr.c')
-rw-r--r-- | gas/expr.c | 15 |
1 files changed, 14 insertions, 1 deletions
@@ -508,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. @@ -950,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 (); |