aboutsummaryrefslogtreecommitdiff
path: root/gas/config/tc-s12z.c
diff options
context:
space:
mode:
authorJohn Darrington <john@darrington.wattle.id.au>2019-01-14 16:55:17 +0100
committerJohn Darrington <john@darrington.wattle.id.au>2019-01-16 19:35:05 +0100
commite7b47f2e68c6eaff916ea4d1202a77e15730f48f (patch)
treefd28ffb0f1b591cf32469b7959be0de03965d11f /gas/config/tc-s12z.c
parent77fdb0e00bd47c564c4e32726fc6020d9441d4a7 (diff)
downloadgdb-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.c5
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)
{