aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorAlex Coplan <alex.coplan@arm.com>2020-08-10 17:44:02 +0100
committerAlex Coplan <alex.coplan@arm.com>2020-08-10 17:44:02 +0100
commitfa63795f40875541e05b90970825bb57132fcc3d (patch)
treecf53183de7a8e90f4c54dc7317d0781a7bab667a /include
parent9546e03d55a4d8aeca5e69ff2943884420c2584f (diff)
downloadfsf-binutils-gdb-fa63795f40875541e05b90970825bb57132fcc3d.zip
fsf-binutils-gdb-fa63795f40875541e05b90970825bb57132fcc3d.tar.gz
fsf-binutils-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')
-rw-r--r--include/ChangeLog4
-rw-r--r--include/opcode/aarch64.h2
2 files changed, 6 insertions, 0 deletions
diff --git a/include/ChangeLog b/include/ChangeLog
index 27f14cc..d0475de 100644
--- a/include/ChangeLog
+++ b/include/ChangeLog
@@ -1,3 +1,7 @@
+2020-08-10 Alex Coplan <alex.coplan@arm.com>
+
+ * opcode/aarch64.h (AARCH64_MAX_SYSREG_NAME_LEN): New.
+
2020-08-10 Przemyslaw Wirkus <przemyslaw.wirkus@arm.com>
* opcode/aarch64.h (aarch64_sys_reg_deprecated_p): Functions
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;