Add support to AArch64 disassembler for verifying instructions. Add verifier for LDPSW.

PR target/19722
opcodes	* aarch64-dis.c (aarch64_opcode_decode): Run verifier if present.
	* aarch64-opc.c (verify_ldpsw): New function.
	* aarch64-opc.h (verify_ldpsw): New prototype.
	* aarch64-tbl.h: Add initialiser for verifier field.
	(LDPSW): Set verifier to verify_ldpsw.

binutils* testsuite/binutils-all/aarch64/illegal.s: New test.
	* testsuite/binutils-all/aarch64/illegal.d: New test driver.

include	* opcode/aarch64.h (struct aarch64_opcode): Add verifier field.
This commit is contained in:
Nick Clifton
2016-04-28 09:11:03 +01:00
parent a3a65e6e1d
commit 4bd13cde17
10 changed files with 1271 additions and 1331 deletions

View File

@ -1,3 +1,9 @@
2016-04-28 Nick Clifton <nickc@redhat.com>
PR target/19722
* testsuite/binutils-all/aarch64/illegal.s: New test.
* testsuite/binutils-all/aarch64/illegal.d: New test driver.
2016-04-20 Trevor Saunders <tbsaunde+binutils@tbsaunde.org>
* resres.c: Likewise.

View File

@ -0,0 +1,12 @@
#PROG: objcopy
#objdump: -d
#name: Check that the disassembler complains about illegal instructions.
.*: +file format .*aarch64.*
Disassembly of section \.text:
0+000 <.*>:
[ ]+0:[ ]+68ea18cc[ ]+.inst[ ]+0x68ea18cc ; undefined
#pass

View File

@ -0,0 +1,7 @@
# Test disassembly of illegal instructions.
.text
# ldpsw x12, x6, [x6],#-8 ; illegal because one of the dest regs is also the address reg
.inst 0x68ea18cc
# FIXME: Add more illegal instructions here.