diff options
author | Alex Coplan <alex.coplan@arm.com> | 2020-08-10 17:44:02 +0100 |
---|---|---|
committer | Alex Coplan <alex.coplan@arm.com> | 2020-08-10 17:44:02 +0100 |
commit | fa63795f40875541e05b90970825bb57132fcc3d (patch) | |
tree | cf53183de7a8e90f4c54dc7317d0781a7bab667a /include/opcode | |
parent | 9546e03d55a4d8aeca5e69ff2943884420c2584f (diff) | |
download | gdb-fa63795f40875541e05b90970825bb57132fcc3d.zip gdb-fa63795f40875541e05b90970825bb57132fcc3d.tar.gz gdb-fa63795f40875541e05b90970825bb57132fcc3d.tar.bz2 |
aarch64: Don't assert on long sysreg names
This patch fixes an assertion failure on long system register operands
in the AArch64 backend. See the new testcase for an input which
reproduces the issue.
gas/ChangeLog:
* config/tc-aarch64.c (parse_sys_reg): Don't assert when parsing
a long system register.
(parse_sys_ins_reg): Likewise.
(sysreg_hash_insert): New.
(md_begin): Use sysreg_hash_insert() to ensure all system
registers are no longer than the maximum length at startup.
* testsuite/gas/aarch64/invalid-sysreg-assert.d: New test.
* testsuite/gas/aarch64/invalid-sysreg-assert.l: Error output.
* testsuite/gas/aarch64/invalid-sysreg-assert.s: Input.
include/ChangeLog:
* opcode/aarch64.h (AARCH64_MAX_SYSREG_NAME_LEN): New.
Diffstat (limited to 'include/opcode')
-rw-r--r-- | include/opcode/aarch64.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/include/opcode/aarch64.h b/include/opcode/aarch64.h index 4b71f93..5122ea8 100644 --- a/include/opcode/aarch64.h +++ b/include/opcode/aarch64.h @@ -943,6 +943,8 @@ extern const struct aarch64_name_value_pair aarch64_barrier_options [16]; extern const struct aarch64_name_value_pair aarch64_prfops [32]; extern const struct aarch64_name_value_pair aarch64_hint_options []; +#define AARCH64_MAX_SYSREG_NAME_LEN 32 + typedef struct { const char * name; |