aarch64: Fix error in THE system register checking
authorVictor Do Nascimento <victor.donascimento@arm.com>
Thu, 9 Nov 2023 11:19:47 +0000 (11:19 +0000)
committerVictor Do Nascimento <victor.donascimento@arm.com>
Thu, 9 Nov 2023 13:37:33 +0000 (13:37 +0000)
commitf11f256f5638679548cd7e1fb189135575cb7b5f
treed57308d764775f2138ade244b17674c68659c48d
parente7d74879870833fb0c42282da940e60fee13948e
aarch64: Fix error in THE system register checking

The erroneous omission of a "reg_value == " in the THE system register
encoding check added in [1] led to an error which was not picked up in
GCC but which was flagged in Clang due to its use of
[-Werror,-Wconstant-logical-operand] check.  Together with this fix we
add a new test for the THE registers to pick up their illegal use,
adding an extra and important layer of validation.

Furthermore, in separating system register from instruction
implementation (with which only the former was of concern in the cited
patch), additions made to `aarch64-tbl.h' are rolled back so
that these can be added later when adding THE instructions to the
codebase, a more natural place for these changes.

[1] https://sourceware.org/pipermail/binutils/2023-November/130314.html

opcodes/ChangeLog:

* aarch64-opc.c (aarch64_sys_ins_reg_supported_p): Fix typo.
* aarch64-tbl.h (THE): Remove.
 (aarch64_feature_set aarch64_feature_the): Likewise.

gas/ChangeLog:

* testsuite/gas/aarch64/illegal-sysreg-8.l: Add tests for THE
system registers.
* testsuite/gas/aarch64/illegal-sysreg-8.s: Likewise.
gas/testsuite/gas/aarch64/illegal-sysreg-8.l
gas/testsuite/gas/aarch64/illegal-sysreg-8.s
opcodes/aarch64-opc.c
opcodes/aarch64-tbl.h