diff options
author | John Darrington <john@darrington.wattle.id.au> | 2019-01-14 16:55:17 +0100 |
---|---|---|
committer | John Darrington <john@darrington.wattle.id.au> | 2019-01-16 19:35:05 +0100 |
commit | e7b47f2e68c6eaff916ea4d1202a77e15730f48f (patch) | |
tree | fd28ffb0f1b591cf32469b7959be0de03965d11f /gas/config/tc-s12z.c | |
parent | 77fdb0e00bd47c564c4e32726fc6020d9441d4a7 (diff) | |
download | gdb-e7b47f2e68c6eaff916ea4d1202a77e15730f48f.zip gdb-e7b47f2e68c6eaff916ea4d1202a77e15730f48f.tar.gz gdb-e7b47f2e68c6eaff916ea4d1202a77e15730f48f.tar.bz2 |
S12Z: gas: Fix bug when a symbol name was the single letter 'c'.
The assembler incorrectly recognised "c" as a register name, and
refused to allow it where it expected a symbol/label.
gas/
* config/tc-s12z.c (lex_reg_name): Compare the length of the strings
before the contents.
* testsuite/gas/s12z/labels.d: New file.
* testsuite/gas/s12z/labels.s: New file.
* testsuite/gas/s12z/s12z.exp: Add them.
Diffstat (limited to 'gas/config/tc-s12z.c')
-rw-r--r-- | gas/config/tc-s12z.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/gas/config/tc-s12z.c b/gas/config/tc-s12z.c index f6c5889..e62f383 100644 --- a/gas/config/tc-s12z.c +++ b/gas/config/tc-s12z.c @@ -308,7 +308,7 @@ lex_reg_name (uint16_t which, int *reg) p++; } - int len = p - input_line_pointer; + size_t len = p - input_line_pointer; if (len <= 0) return 0; @@ -318,7 +318,8 @@ lex_reg_name (uint16_t which, int *reg) { gas_assert (registers[i].name); - if (0 == strncasecmp (registers[i].name, input_line_pointer, len)) + if (len == strlen (registers[i].name) + && 0 == strncasecmp (registers[i].name, input_line_pointer, len)) { if ((0x1U << i) & which) { |