Files
H.J. Lu 9fef80d683 x86: CET v2.0: Update NOTRACK prefix
Update NOTRACK prefix handling to support memory indirect branch for
CET v2.0:

https://software.intel.com/sites/default/files/managed/4d/2a/control-flow-enforcement-technology-preview.pdf

gas/

	* config/tc-i386.c (md_assemble): Update NOTRACK prefix check.
	* testsuite/gas/i386/notrack-intel.d: Updated.
	* testsuite/gas/i386/notrack.d: Likewise.
	* testsuite/gas/i386/notrackbad.l: Likewise.
	* testsuite/gas/i386/x86-64-notrack-intel.d: Likewise.
	* testsuite/gas/i386/x86-64-notrack.d: Likewise.
	* testsuite/gas/i386/x86-64-notrackbad.l: Likewise.
	* testsuite/gas/i386/notrack.s: Add NOTRACK prefix tests with
	memory indirect branch.
	* testsuite/gas/i386/x86-64-notrack.s: Likewise.
	* testsuite/gas/i386/notrackbad.s: Remove memory indirect branch
	with NOTRACK prefix.
	* testsuite/gas/i386/x86-64-notrackbad.s: Likewise.

opcodes/

	* i386-dis.c (reg_table): Swap indirEv with NOTRACK on "call{&|}"
	and "jmp{&|}".
	(NOTRACK_Fixup): Support memory indirect branch with NOTRACK
	prefix.
2017-06-21 08:28:43 -07:00

58 lines
990 B
ArmAsm

# Check 32bit NOTRACK prefix
.allow_index_reg
.text
_start:
notrack call *%eax
notrack call *%ax
notrack jmp *%eax
notrack jmp *%ax
notrack call *(%eax)
notrack callw *(%eax)
notrack jmp *(%eax)
notrack jmpw *(%eax)
bnd notrack call *%eax
bnd notrack call *%ax
bnd notrack jmp *%eax
bnd notrack jmp *%ax
bnd notrack call *(%eax)
bnd notrack callw *(%eax)
bnd notrack jmp *(%eax)
bnd notrack jmpw *(%eax)
.intel_syntax noprefix
notrack call eax
notrack call ax
notrack jmp eax
notrack jmp ax
notrack call DWORD PTR [eax]
notrack call WORD PTR [eax]
notrack jmp DWORD PTR [eax]
notrack jmp WORD PTR [eax]
bnd notrack call eax
bnd notrack call ax
bnd notrack jmp eax
bnd notrack jmp ax
bnd notrack call DWORD PTR [eax]
bnd notrack call WORD PTR [eax]
bnd notrack jmp DWORD PTR [eax]
bnd notrack jmp WORD PTR [eax]
# ds bnd call *%eax
.byte 0x3e
.byte 0xf2
.byte 0xff
.byte 0xd0
# ds callw *%ax
.byte 0x3e
.byte 0x66
.byte 0xff
.byte 0xd0