Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(109)

Unified Diff: src/trusted/validator_x86/testdata/64/tests_from_pydfa.test

Issue 625923004: Delete old x86 validator. (Closed) Base URL: svn://svn.chromium.org/native_client/trunk/src/native_client
Patch Set: rebase master Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/trusted/validator_x86/testdata/64/tests_from_pydfa.test
diff --git a/src/trusted/validator_x86/testdata/64/tests_from_pydfa.test b/src/trusted/validator_x86/testdata/64/tests_from_pydfa.test
deleted file mode 100644
index 7ef03917556b146841afa86a9ac9883b26d57485..0000000000000000000000000000000000000000
--- a/src/trusted/validator_x86/testdata/64/tests_from_pydfa.test
+++ /dev/null
@@ -1,1069 +0,0 @@
-@hex:
- # Originally these tests came from
- # https://github.com/mseaborn/x86-decoder/blob/x86-64/validator_test.py
-
- # Check some simple allowed instructions.
- # nop
- 90
- # hlt
- f4
- # mov $0x12345678, %rax
- 48 c7 c0 78 56 34 12
- # mov $0x1234567812345678, %rax
- 48 b8 78 56 34 12 78 56 34 12
-@rval:
- VALIDATOR: Checking jump targets: 0 to 13
- VALIDATOR: Checking that basic blocks are aligned
- *** <input> is safe ***
-@dis:
- 0000000000000000: 90 nop
- 0000000000000001: f4 hlt
- 0000000000000002: 48 c7 c0 78 56 34 12 mov %rax, 0x12345678
- 0000000000000009: 48 b8 78 56 34 12 78 56 34 12 mov %rax, 0x1234567812345678
-@rdfa_output:
- return code: 0
-----------------------------------------------------------------------
-@hex:
- # Check a disallowed instruction.
- # nop
- 90
- # int $0x80
- cd 80
-@rval:
- VALIDATOR: 0000000000000001: cd 80 int 0x80
- VALIDATOR: ERROR: This instruction has been marked illegal by Native Client
- VALIDATOR: Checking jump targets: 0 to 3
- VALIDATOR: Checking that basic blocks are aligned
- *** <input> IS UNSAFE ***
-@dis:
- 0000000000000000: 90 nop
- 0000000000000001: cd 80 int 0x80
-@rdfa_output:
- 1: [0] unrecognized instruction
- return code: 1
-----------------------------------------------------------------------
-@hex:
- # ret
- c3
-@rval:
- VALIDATOR: 0000000000000000: c3 ret
- VALIDATOR: ERROR: This instruction has been marked illegal by Native Client
- VALIDATOR: 0000000000000000: c3 ret
- VALIDATOR: ERROR: Illegal assignment to RSP
- VALIDATOR: Checking jump targets: 0 to 1
- VALIDATOR: Checking that basic blocks are aligned
- *** <input> IS UNSAFE ***
-@dis:
- 0000000000000000: c3 ret
-@rdfa_output:
- 0: [0] unrecognized instruction
- return code: 1
-----------------------------------------------------------------------
-@hex:
- # syscall
- 0f 05
-@rval:
- VALIDATOR: 0000000000000000: 0f 05 syscall
- VALIDATOR: ERROR: This instruction has been marked illegal by Native Client
- VALIDATOR: 0000000000000000: 0f 05 syscall
- VALIDATOR: ERROR: System instructions are not allowed by Native Client
- VALIDATOR: Checking jump targets: 0 to 2
- VALIDATOR: Checking that basic blocks are aligned
- *** <input> IS UNSAFE ***
-@dis:
- 0000000000000000: 0f 05 syscall
-@rdfa_output:
- 0: [0] unrecognized instruction
- return code: 1
-----------------------------------------------------------------------
-@hex:
- # mov $0x1234567812345678, %rax
- 48 b8 78 56 34 12 78 56 34 12
- # mov $0x1234567812345678, %rax
- 48 b8 78 56 34 12 78 56 34 12
- # mov $0x1234567812345678, %rax
- 48 b8 78 56 34 12 78 56 34 12
- # mov $0x1234567812345678, %rax
- 48 b8 78 56 34 12 78 56 34 12
-@rval:
- VALIDATOR: Checking jump targets: 0 to 28
- VALIDATOR: Checking that basic blocks are aligned
- VALIDATOR: ERROR: 20: Bad basic block alignment.
- *** <input> IS UNSAFE ***
-@dis:
- 0000000000000000: 48 b8 78 56 34 12 78 56 34 12 mov %rax, 0x1234567812345678
- 000000000000000a: 48 b8 78 56 34 12 78 56 34 12 mov %rax, 0x1234567812345678
- 0000000000000014: 48 b8 78 56 34 12 78 56 34 12 mov %rax, 0x1234567812345678
- 000000000000001e: 48 b8 78 56 34 12 78 56 34 12 mov %rax, 0x1234567812345678
-@rdfa_output:
- 1e: [0] unrecognized instruction
- 20: [0] direct jump out of range
- 24: [0] direct jump out of range
- return code: 1
-@validators_disagree:
- Because RDFA validator recovered after bundle boundary.
-----------------------------------------------------------------------
-@hex:
- # Forwards and backwards jumps.
- # nop
- 90
- # jmp .+6
- eb 04
- # jmp .+0
- eb fe
- # jmp .-2
- eb fc
- # jmp .-4
- eb fa
-@rval:
- VALIDATOR: Checking jump targets: 0 to 9
- VALIDATOR: Checking that basic blocks are aligned
- *** <input> is safe ***
-@dis:
- 0000000000000000: 90 nop
- 0000000000000001: eb 04 jmp 0x7
- 0000000000000003: eb fe jmp 0x3
- 0000000000000005: eb fc jmp 0x3
- 0000000000000007: eb fa jmp 0x3
-@rdfa_output:
- return code: 0
-----------------------------------------------------------------------
-@hex:
- # Out-of-range unaligned jump.
- # jmp .-1
- eb fd
-@rval:
- VALIDATOR: 0000000000000000: eb fd jmp 0xffffffffffffffff
- VALIDATOR: ERROR: Instruction jumps to bad address
- VALIDATOR: Checking jump targets: 0 to 2
- VALIDATOR: Checking that basic blocks are aligned
- *** <input> IS UNSAFE ***
-@dis:
- 0000000000000000: eb fd jmp 0xffffffffffffffff
-@rdfa_output:
- 0: [0] direct jump out of range
- return code: 1
-----------------------------------------------------------------------
-@hex:
- # Out-of-range unaligned jump.
- # jmp .+33
- eb 1f
-@rval:
- VALIDATOR: 0000000000000000: eb 1f jmp 0x21
- VALIDATOR: ERROR: Instruction jumps to bad address
- VALIDATOR: Checking jump targets: 0 to 2
- VALIDATOR: Checking that basic blocks are aligned
- *** <input> IS UNSAFE ***
-@dis:
- 0000000000000000: eb 1f jmp 0x21
-@rdfa_output:
- 0: [0] direct jump out of range
- return code: 1
-----------------------------------------------------------------------
-@hex:
- # Jump into instruction.
- # mov $0x1234567812345678, %rax
- 48 b8 78 56 34 12 78 56 34 12
- # jmp .-5
- eb f9
-@rval:
- VALIDATOR: Checking jump targets: 0 to c
- VALIDATOR: ERROR: 5: Bad jump target
- VALIDATOR: Checking that basic blocks are aligned
- *** <input> IS UNSAFE ***
-@dis:
- 0000000000000000: 48 b8 78 56 34 12 78 56 34 12 mov %rax, 0x1234567812345678
- 000000000000000a: eb f9 jmp 0x5
-@rdfa_output:
- a: [0] bad jump target
- return code: 1
-@validators_disagree:
- Difference in jump reporting.
-----------------------------------------------------------------------
-@hex:
- # Unmasked indirect jumps are disallowed.
- # jmp *%rax
- ff e0
-@rval:
- VALIDATOR: 0000000000000000: ff e0 jmp %rax
- VALIDATOR: ERROR: Invalid indirect jump
- VALIDATOR: Checking jump targets: 0 to 2
- VALIDATOR: Checking that basic blocks are aligned
- *** <input> IS UNSAFE ***
-@dis:
- 0000000000000000: ff e0 jmp %rax
-@rdfa_output:
- 0: [0] unrecognized instruction
- return code: 1
-----------------------------------------------------------------------
-@hex:
- # jmp *(%rax)
- ff 20
-@rval:
- VALIDATOR: 0000000000000000: ff 20 jmp [%rax]
- VALIDATOR: ERROR: Invalid base register in memory offset
- VALIDATOR: 0000000000000000: ff 20 jmp [%rax]
- VALIDATOR: ERROR: Jump not native client compliant
- VALIDATOR: Checking jump targets: 0 to 2
- VALIDATOR: Checking that basic blocks are aligned
- *** <input> IS UNSAFE ***
-@dis:
- 0000000000000000: ff 20 jmp [%rax]
-@rdfa_output:
- 0: [0] unrecognized instruction
- return code: 1
-----------------------------------------------------------------------
-@hex:
- # call *%rax
- ff d0
-@rval:
- VALIDATOR: 0000000000000000: ff d0 call %rax
- VALIDATOR: ERROR: Invalid indirect jump
- VALIDATOR: 0000000000000000: ff d0 call %rax
- VALIDATOR: WARNING: Bad call alignment, return pc = 2
- VALIDATOR: Checking jump targets: 0 to 2
- VALIDATOR: Checking that basic blocks are aligned
- *** <input> IS UNSAFE ***
-@dis:
- 0000000000000000: ff d0 call %rax
-@rdfa_output:
- 0: [0] unrecognized instruction
- return code: 1
-----------------------------------------------------------------------
-@hex:
- # call *(%rax)
- ff 10
-@rval:
- VALIDATOR: 0000000000000000: ff 10 call [%rax]
- VALIDATOR: ERROR: Invalid base register in memory offset
- VALIDATOR: 0000000000000000: ff 10 call [%rax]
- VALIDATOR: ERROR: Jump not native client compliant
- VALIDATOR: 0000000000000000: ff 10 call [%rax]
- VALIDATOR: WARNING: Bad call alignment, return pc = 2
- VALIDATOR: Checking jump targets: 0 to 2
- VALIDATOR: Checking that basic blocks are aligned
- *** <input> IS UNSAFE ***
-@dis:
- 0000000000000000: ff 10 call [%rax]
-@rdfa_output:
- 0: [0] unrecognized instruction
- return code: 1
-----------------------------------------------------------------------
-@hex:
- # Masking instructions on their own are allowed.
- # and $~31, %eax
- 83 e0 e0
- # and $~31, %ebx
- 83 e3 e0
- # and $~31, %rax
- 48 83 e0 e0
- # and $~31, %rbx
- 48 83 e3 e0
-@rval:
- VALIDATOR: Checking jump targets: 0 to e
- VALIDATOR: Checking that basic blocks are aligned
- *** <input> is safe ***
-@dis:
- 0000000000000000: 83 e0 e0 and %eax, 0xe0
- 0000000000000003: 83 e3 e0 and %ebx, 0xe0
- 0000000000000006: 48 83 e0 e0 and %rax, 0xe0
- 000000000000000a: 48 83 e3 e0 and %rbx, 0xe0
-@rdfa_output:
- return code: 0
-----------------------------------------------------------------------
-@hex:
- # and $~31, %eax
- 83 e0 e0
- # add %r15, %rax
- 4c 01 f8
-
- # and $~31, %ebx
- 83 e3 e0
- # add %r15, %rbx
- 4c 01 fb
-@rval:
- VALIDATOR: Checking jump targets: 0 to c
- VALIDATOR: Checking that basic blocks are aligned
- *** <input> is safe ***
-@dis:
- 0000000000000000: 83 e0 e0 and %eax, 0xe0
- 0000000000000003: 4c 01 f8 add %rax, %r15
- 0000000000000006: 83 e3 e0 and %ebx, 0xe0
- 0000000000000009: 4c 01 fb add %rbx, %r15
-@rdfa_output:
- return code: 0
-----------------------------------------------------------------------
-@hex:
- # Masked indirect jumps are allowed.
- # and $~31, %eax
- 83 e0 e0 \\
- # add %r15, %rax
- 4c 01 f8 \\
- # jmp *%rax
- ff e0
-@rval:
- VALIDATOR: Checking jump targets: 0 to 8
- VALIDATOR: Checking that basic blocks are aligned
- *** <input> is safe ***
-@dis:
- 0000000000000000: 83 e0 e0 and %eax, 0xe0
- 0000000000000003: 4c 01 f8 add %rax, %r15
- 0000000000000006: ff e0 jmp %rax
-@rdfa_output:
- return code: 0
-----------------------------------------------------------------------
-@hex:
- # and $~31, %ebx
- 83 e3 e0 \\
- # add %r15, %rbx
- 4c 01 fb \\
- # call *%rbx
- ff d3
-@rval:
- VALIDATOR: 0000000000000006: ff d3 call %rbx
- VALIDATOR: WARNING: Bad call alignment, return pc = 8
- VALIDATOR: Checking jump targets: 0 to 8
- VALIDATOR: Checking that basic blocks are aligned
- *** <input> is safe ***
-@dis:
- 0000000000000000: 83 e3 e0 and %ebx, 0xe0
- 0000000000000003: 4c 01 fb add %rbx, %r15
- 0000000000000006: ff d3 call %rbx
-@rdfa_output:
- return code: 0
-----------------------------------------------------------------------
-@hex:
- # The registers must match up for the mask and the jump.
- # and $~31, %ebx
- 83 e3 e0
- # add %r15, %rax
- 4c 01 f8
- # jmp *%rax
- ff e0
-@rval:
- VALIDATOR: 0000000000000006: ff e0 jmp %rax
- VALIDATOR: ERROR: Invalid indirect jump
- VALIDATOR: Checking jump targets: 0 to 8
- VALIDATOR: Checking that basic blocks are aligned
- *** <input> IS UNSAFE ***
-@dis:
- 0000000000000000: 83 e3 e0 and %ebx, 0xe0
- 0000000000000003: 4c 01 f8 add %rax, %r15
- 0000000000000006: ff e0 jmp %rax
-@rdfa_output:
- 6: [0] unrecognized instruction
- return code: 1
-@validators_disagree:
- Difference in error reporting.
-----------------------------------------------------------------------
-@hex:
- # and $~31, %eax
- 83 e0 e0
- # add %r15, %rbx
- 4c 01 fb
- # jmp *%rax
- ff e0
-@rval:
- VALIDATOR: 0000000000000006: ff e0 jmp %rax
- VALIDATOR: ERROR: Invalid indirect jump
- VALIDATOR: Checking jump targets: 0 to 8
- VALIDATOR: Checking that basic blocks are aligned
- *** <input> IS UNSAFE ***
-@dis:
- 0000000000000000: 83 e0 e0 and %eax, 0xe0
- 0000000000000003: 4c 01 fb add %rbx, %r15
- 0000000000000006: ff e0 jmp %rax
-@rdfa_output:
- 6: [0] unrecognized instruction
- return code: 1
-@validators_disagree:
- Difference in error reporting.
-----------------------------------------------------------------------
-@hex:
- # and $~31, %eax
- 83 e0 e0
- # add %r15, %rax
- 4c 01 f8
- # jmp *%rbx
- ff e3
-@rval:
- VALIDATOR: 0000000000000006: ff e3 jmp %rbx
- VALIDATOR: ERROR: Invalid indirect jump
- VALIDATOR: Checking jump targets: 0 to 8
- VALIDATOR: Checking that basic blocks are aligned
- *** <input> IS UNSAFE ***
-@dis:
- 0000000000000000: 83 e0 e0 and %eax, 0xe0
- 0000000000000003: 4c 01 f8 add %rax, %r15
- 0000000000000006: ff e3 jmp %rbx
-@rdfa_output:
- 6: [0] unrecognized instruction
- return code: 1
-@validators_disagree:
- Difference in error reporting.
-----------------------------------------------------------------------
-@hex:
- # and $~31, %eax
- 83 e0 e0
- # add %r15, %rbx
- 4c 01 fb
- # jmp *%rbx
- ff e3
-@rval:
- VALIDATOR: 0000000000000006: ff e3 jmp %rbx
- VALIDATOR: ERROR: Invalid indirect jump
- VALIDATOR: Checking jump targets: 0 to 8
- VALIDATOR: Checking that basic blocks are aligned
- *** <input> IS UNSAFE ***
-@dis:
- 0000000000000000: 83 e0 e0 and %eax, 0xe0
- 0000000000000003: 4c 01 fb add %rbx, %r15
- 0000000000000006: ff e3 jmp %rbx
-@rdfa_output:
- 6: [0] unrecognized instruction
- return code: 1
-@validators_disagree:
- Difference in error reporting.
-----------------------------------------------------------------------
-@hex:
- # and $~31, %ebx
- 83 e3 e0
- # add %r15, %rbx
- 4c 01 fb
- # jmp *%rax
- ff e0
-@rval:
- VALIDATOR: 0000000000000006: ff e0 jmp %rax
- VALIDATOR: ERROR: Invalid indirect jump
- VALIDATOR: Checking jump targets: 0 to 8
- VALIDATOR: Checking that basic blocks are aligned
- *** <input> IS UNSAFE ***
-@dis:
- 0000000000000000: 83 e3 e0 and %ebx, 0xe0
- 0000000000000003: 4c 01 fb add %rbx, %r15
- 0000000000000006: ff e0 jmp %rax
-@rdfa_output:
- 6: [0] unrecognized instruction
- return code: 1
-@validators_disagree:
- Difference in error reporting.
-----------------------------------------------------------------------
-@hex:
- # The mask and the jump must be adjacent.
- # and $~31, %eax
- 83 e0 e0
- # nop
- 90
- # add %r15, %rax
- 4c 01 f8
- # jmp *%rax
- ff e0
-@rval:
- VALIDATOR: 0000000000000007: ff e0 jmp %rax
- VALIDATOR: ERROR: Invalid indirect jump
- VALIDATOR: Checking jump targets: 0 to 9
- VALIDATOR: Checking that basic blocks are aligned
- *** <input> IS UNSAFE ***
-@dis:
- 0000000000000000: 83 e0 e0 and %eax, 0xe0
- 0000000000000003: 90 nop
- 0000000000000004: 4c 01 f8 add %rax, %r15
- 0000000000000007: ff e0 jmp %rax
-@rdfa_output:
- 7: [0] unrecognized instruction
- return code: 1
-----------------------------------------------------------------------
-@hex:
- # and $~31, %eax
- 83 e0 e0
- # add %r15, %rax
- 4c 01 f8
- # nop
- 90
- # jmp *%rax
- ff e0
-@rval:
- VALIDATOR: 0000000000000007: ff e0 jmp %rax
- VALIDATOR: ERROR: Invalid indirect jump
- VALIDATOR: Checking jump targets: 0 to 9
- VALIDATOR: Checking that basic blocks are aligned
- *** <input> IS UNSAFE ***
-@dis:
- 0000000000000000: 83 e0 e0 and %eax, 0xe0
- 0000000000000003: 4c 01 f8 add %rax, %r15
- 0000000000000006: 90 nop
- 0000000000000007: ff e0 jmp %rax
-@rdfa_output:
- 7: [0] unrecognized instruction
- return code: 1
-----------------------------------------------------------------------
-@hex:
- # Jumping into the middle of the superinstruction must be rejected.
- # and $~31, %eax
- 83 e0 e0
- # add %r15, %rax
- 4c 01 f8
- # jmp *%rax
- ff e0
- # jmp .-2
- eb fc
-@rval:
- VALIDATOR: Checking jump targets: 0 to a
- VALIDATOR: ERROR: 6: Bad jump target
- VALIDATOR: Checking that basic blocks are aligned
- *** <input> IS UNSAFE ***
-@dis:
- 0000000000000000: 83 e0 e0 and %eax, 0xe0
- 0000000000000003: 4c 01 f8 add %rax, %r15
- 0000000000000006: ff e0 jmp %rax
- 0000000000000008: eb fc jmp 0x6
-@rdfa_output:
- 8: [0] bad jump target
- return code: 1
-@validators_disagree:
- Difference in jump reporting.
-----------------------------------------------------------------------
-@hex:
- # and $~31, %eax
- 83 e0 e0
- # add %r15, %rax
- 4c 01 f8
- # jmp *%rax
- ff e0
- # jmp .-5
- eb f9
-@rval:
- VALIDATOR: Checking jump targets: 0 to a
- VALIDATOR: ERROR: 3: Bad jump target
- VALIDATOR: Checking that basic blocks are aligned
- *** <input> IS UNSAFE ***
-@dis:
- 0000000000000000: 83 e0 e0 and %eax, 0xe0
- 0000000000000003: 4c 01 f8 add %rax, %r15
- 0000000000000006: ff e0 jmp %rax
- 0000000000000008: eb f9 jmp 0x3
-@rdfa_output:
- 8: [0] bad jump target
- return code: 1
-@validators_disagree:
- TODO: explain this
- Difference in jump reporting.
-----------------------------------------------------------------------
-@hex:
- # Read-only access to special registers is allowed.
- # push %rax
- 50
- # push %rbp
- 55
- # push %rsp
- 54
- # push %r15
- 41 57
- # mov %rsp, %rax
- 48 89 e0
-@rval:
- VALIDATOR: Checking jump targets: 0 to 8
- VALIDATOR: Checking that basic blocks are aligned
- *** <input> is safe ***
-@dis:
- 0000000000000000: 50 push %rax
- 0000000000000001: 55 push %rbp
- 0000000000000002: 54 push %rsp
- 0000000000000003: 41 57 push %r15
- 0000000000000005: 48 89 e0 mov %rax, %rsp
-@rdfa_output:
- return code: 0
-----------------------------------------------------------------------
-@hex:
- # Write access to special registers is not allowed.
- # pop %rax
- 58
-@rval:
- VALIDATOR: Checking jump targets: 0 to 1
- VALIDATOR: Checking that basic blocks are aligned
- *** <input> is safe ***
-@dis:
- 0000000000000000: 58 pop %rax
-@rdfa_output:
- return code: 0
-----------------------------------------------------------------------
-@hex:
- # pop %rbp
- 5d
-@rval:
- VALIDATOR: 0000000000000000: 5d pop %rbp
- VALIDATOR: ERROR: Illegal change to register RBP
- VALIDATOR: Checking jump targets: 0 to 1
- VALIDATOR: Checking that basic blocks are aligned
- *** <input> IS UNSAFE ***
-@dis:
- 0000000000000000: 5d pop %rbp
-@rdfa_output:
- 0: [0] error - %bpl or %bp is changed
- return code: 1
-----------------------------------------------------------------------
-@hex:
- # pop %rsp
- 5c
-@rval:
- VALIDATOR: 0000000000000000: 5c pop %rsp
- VALIDATOR: ERROR: Illegal assignment to RSP
- VALIDATOR: Checking jump targets: 0 to 1
- VALIDATOR: Checking that basic blocks are aligned
- *** <input> IS UNSAFE ***
-@dis:
- 0000000000000000: 5c pop %rsp
-@rdfa_output:
- 0: [0] error - %spl or %sp is changed
- return code: 1
-----------------------------------------------------------------------
-@hex:
- # pop %r15
- 41 5f
-@rval:
- VALIDATOR: 0000000000000000: 41 5f pop %r15
- VALIDATOR: ERROR: Illegal to change the value of register RegR15
- VALIDATOR: Checking jump targets: 0 to 2
- VALIDATOR: Checking that basic blocks are aligned
- *** <input> IS UNSAFE ***
-@dis:
- 0000000000000000: 41 5f pop %r15
-@rdfa_output:
- 0: [0] error - %r15 is changed
- return code: 1
-----------------------------------------------------------------------
-@hex:
- # Memory accesses.
- # mov %eax, %eax
- 89 c0 \\
- # mov (%r15, %rax), %ebx
- 41 8b 1c 07
-@rval:
- VALIDATOR: Checking jump targets: 0 to 6
- VALIDATOR: Checking that basic blocks are aligned
- *** <input> is safe ***
-@dis:
- 0000000000000000: 89 c0 mov %eax, %eax
- 0000000000000002: 41 8b 1c 07 mov %ebx, [%r15+%rax*1]
-@rdfa_output:
- return code: 0
-----------------------------------------------------------------------
-@hex:
- # Test for a top-bit-set register.
- # mov %r12d, %r12d
- 45 89 e4 \\
- # mov (%r15, %r12), %ebx
- 43 8b 1c 27
-@rval:
- VALIDATOR: Checking jump targets: 0 to 7
- VALIDATOR: Checking that basic blocks are aligned
- *** <input> is safe ***
-@dis:
- 0000000000000000: 45 89 e4 mov %r12d, %r12d
- 0000000000000003: 43 8b 1c 27 mov %ebx, [%r15+%r12*1]
-@rdfa_output:
- return code: 0
-----------------------------------------------------------------------
-@hex:
- # Check %edi and %esi because the first 'mov' also begins superinstructions.
- # mov %edi, %edi
- 89 ff \\
- # mov (%r15, %rdi), %ebx
- 41 8b 1c 3f
-@rval:
- VALIDATOR: Checking jump targets: 0 to 6
- VALIDATOR: Checking that basic blocks are aligned
- *** <input> is safe ***
-@dis:
- 0000000000000000: 89 ff mov %edi, %edi
- 0000000000000002: 41 8b 1c 3f mov %ebx, [%r15+%rdi*1]
-@rdfa_output:
- return code: 0
-----------------------------------------------------------------------
-@hex:
- # mov %esi, %esi
- 89 f6 \\
- # mov (%r15, %rsi), %ebx
- 41 8b 1c 37
-@rval:
- VALIDATOR: Checking jump targets: 0 to 6
- VALIDATOR: Checking that basic blocks are aligned
- *** <input> is safe ***
-@dis:
- 0000000000000000: 89 f6 mov %esi, %esi
- 0000000000000002: 41 8b 1c 37 mov %ebx, [%r15+%rsi*1]
-@rdfa_output:
- return code: 0
-----------------------------------------------------------------------
-@hex:
- # Check mask on its own.
- # mov %eax, %eax
- 89 c0
-@rval:
- VALIDATOR: Checking jump targets: 0 to 2
- VALIDATOR: Checking that basic blocks are aligned
- *** <input> is safe ***
-@dis:
- 0000000000000000: 89 c0 mov %eax, %eax
-@rdfa_output:
- return code: 0
-----------------------------------------------------------------------
-@hex:
- # mov (%r15, %rax), %ebx
- 41 8b 1c 07
-@rval:
- VALIDATOR: 0000000000000000: 41 8b 1c 07 mov %ebx, [%r15+%rax*1]
- VALIDATOR: ERROR: Invalid index register in memory offset
- VALIDATOR: Checking jump targets: 0 to 4
- VALIDATOR: Checking that basic blocks are aligned
- *** <input> IS UNSAFE ***
-@dis:
- 0000000000000000: 41 8b 1c 07 mov %ebx, [%r15+%rax*1]
-@rdfa_output:
- 0: [0] improper memory address - bad index
- return code: 1
-----------------------------------------------------------------------
-@hex:
- # mov %eax, %eax
- 89 c0
- # mov (%r15, %rax), %ebx
- 41 8b 1c 07
- # jmp .-4
- eb fa
-@rval:
- VALIDATOR: Checking jump targets: 0 to 8
- VALIDATOR: ERROR: 2: Bad jump target
- VALIDATOR: Checking that basic blocks are aligned
- *** <input> IS UNSAFE ***
-@dis:
- 0000000000000000: 89 c0 mov %eax, %eax
- 0000000000000002: 41 8b 1c 07 mov %ebx, [%r15+%rax*1]
- 0000000000000006: eb fa jmp 0x2
-@rdfa_output:
- 6: [0] bad jump target
- return code: 1
-@validators_disagree:
- Difference in jump reporting.
-----------------------------------------------------------------------
-@hex:
- # Check that post-conditions do not leak from a superinstruction. In the
- # PyDFA validator, to share DFT states, the first instruction of the
- # nacljmp, "and $~31, %eax", records a post-condition, just as when it is
- # used on its own. Although the code below is safe, we don't really want
- # the post-condition to leak through.
- # and $~31, %eax
- 83 e0 e0
- # add %r15, %rax
- 4c 01 f8
- # jmp *%rax
- ff e0
- # %rax should not be regarded as zero-extended here.
- # mov (%r15, %rax), %ebx
- 41 8b 1c 07
-@rval:
- VALIDATOR: 0000000000000008: 41 8b 1c 07 mov %ebx, [%r15+%rax*1]
- VALIDATOR: ERROR: Invalid index register in memory offset
- VALIDATOR: Checking jump targets: 0 to c
- VALIDATOR: Checking that basic blocks are aligned
- *** <input> IS UNSAFE ***
-@dis:
- 0000000000000000: 83 e0 e0 and %eax, 0xe0
- 0000000000000003: 4c 01 f8 add %rax, %r15
- 0000000000000006: ff e0 jmp %rax
- 0000000000000008: 41 8b 1c 07 mov %ebx, [%r15+%rax*1]
-@rdfa_output:
- 8: [0] improper memory address - bad index
- return code: 1
-----------------------------------------------------------------------
-@hex:
- # mov %edi, %edi
- 89 ff
- # lea (%r15, %rdi), %rdi
- 49 8d 3c 3f
- # rep stos %al, %es:(%rdi)
- f3 aa
- # %rdi should not be regarded as zero-extended here.
- # mov (%r15, %rdi), %ebx
- 41 8b 1c 3f
-@rval:
- VALIDATOR: 0000000000000008: 41 8b 1c 3f mov %ebx, [%r15+%rdi*1]
- VALIDATOR: ERROR: Invalid index register in memory offset
- VALIDATOR: Checking jump targets: 0 to c
- VALIDATOR: Checking that basic blocks are aligned
- *** <input> IS UNSAFE ***
-@dis:
- 0000000000000000: 89 ff mov %edi, %edi
- 0000000000000002: 49 8d 3c 3f lea %rdi, [%r15+%rdi*1]
- 0000000000000006: f3 aa stosb [%rdi]
- 0000000000000008: 41 8b 1c 3f mov %ebx, [%r15+%rdi*1]
-@rdfa_output:
- 8: [0] improper memory address - bad index
- return code: 1
-----------------------------------------------------------------------
-@hex:
- # mov %esi, %esi
- 89 f6
- # lea (%r15, %rsi), %rsi
- 49 8d 34 37
- # mov %edi, %edi
- 89 ff
- # lea (%r15, %rdi), %rdi
- 49 8d 3c 3f
- # rep movsb %ds:(%rsi), %es:(%rdi)
- f3 a4
- # %rsi should not be regarded as zero-extended here.
- # mov (%r15, %rsi), %ebx
- 41 8b 1c 37
-@rval:
- VALIDATOR: 000000000000000e: 41 8b 1c 37 mov %ebx, [%r15+%rsi*1]
- VALIDATOR: ERROR: Invalid index register in memory offset
- VALIDATOR: Checking jump targets: 0 to 12
- VALIDATOR: Checking that basic blocks are aligned
- *** <input> IS UNSAFE ***
-@dis:
- 0000000000000000: 89 f6 mov %esi, %esi
- 0000000000000002: 49 8d 34 37 lea %rsi, [%r15+%rsi*1]
- 0000000000000006: 89 ff mov %edi, %edi
- 0000000000000008: 49 8d 3c 3f lea %rdi, [%r15+%rdi*1]
- 000000000000000c: f3 a4 movsb [%rdi], [%rsi]
- 000000000000000e: 41 8b 1c 37 mov %ebx, [%r15+%rsi*1]
-@rdfa_output:
- e: [0] improper memory address - bad index
- return code: 1
-----------------------------------------------------------------------
-@hex:
- # Non-%r15-based memory accesses.
- # mov 0x1234(%rip), %eax
- 8b 05 34 12 00 00
- # mov 0x1234(%rsp), %eax
- 8b 84 24 34 12 00 00
- # mov 0x1234(%rbp), %eax
- 8b 85 34 12 00 00
-@rval:
- VALIDATOR: Checking jump targets: 0 to 13
- VALIDATOR: Checking that basic blocks are aligned
- *** <input> is safe ***
-@dis:
- 0000000000000000: 8b 05 34 12 00 00 mov %eax, [%rip+0x1234]
- 0000000000000006: 8b 84 24 34 12 00 00 mov %eax, [%rsp+0x1234]
- 000000000000000d: 8b 85 34 12 00 00 mov %eax, [%rbp+0x1234]
-@rdfa_output:
- return code: 0
-----------------------------------------------------------------------
-@hex:
- # mov 0x1234(%rsp, %rbx), %eax
- 8b 84 1c 34 12 00 00
-@rval:
- VALIDATOR: 0000000000000000: 8b 84 1c 34 12 00 00 mov %eax, [%rsp+%rbx*1+0x1234]
- VALIDATOR: ERROR: Invalid index register in memory offset
- VALIDATOR: Checking jump targets: 0 to 7
- VALIDATOR: Checking that basic blocks are aligned
- *** <input> IS UNSAFE ***
-@dis:
- 0000000000000000: 8b 84 1c 34 12 00 00 mov %eax, [%rsp+%rbx*1+0x1234]
-@rdfa_output:
- 0: [0] improper memory address - bad index
- return code: 1
-----------------------------------------------------------------------
-@hex:
- # mov 0x1234(%rbp, %rbx), %eax
- 8b 84 1d 34 12 00 00
-@rval:
- VALIDATOR: 0000000000000000: 8b 84 1d 34 12 00 00 mov %eax, [%rbp+%rbx*1+0x1234]
- VALIDATOR: ERROR: Invalid index register in memory offset
- VALIDATOR: Checking jump targets: 0 to 7
- VALIDATOR: Checking that basic blocks are aligned
- *** <input> IS UNSAFE ***
-@dis:
- 0000000000000000: 8b 84 1d 34 12 00 00 mov %eax, [%rbp+%rbx*1+0x1234]
-@rdfa_output:
- 0: [0] improper memory address - bad index
- return code: 1
-----------------------------------------------------------------------
-@hex:
- # mov %ebx, %ebx
- 89 db \\
- # mov 0x1234(%rsp, %rbx), %eax
- 8b 84 1c 34 12 00 00
-@rval:
- VALIDATOR: Checking jump targets: 0 to 9
- VALIDATOR: Checking that basic blocks are aligned
- *** <input> is safe ***
-@dis:
- 0000000000000000: 89 db mov %ebx, %ebx
- 0000000000000002: 8b 84 1c 34 12 00 00 mov %eax, [%rsp+%rbx*1+0x1234]
-@rdfa_output:
- return code: 0
-----------------------------------------------------------------------
-@hex:
- # mov %ebx, %ebx
- 89 db \\
- # mov 0x1234(%rbp, %rbx), %eax
- 8b 84 1d 34 12 00 00
-@rval:
- VALIDATOR: Checking jump targets: 0 to 9
- VALIDATOR: Checking that basic blocks are aligned
- *** <input> is safe ***
-@dis:
- 0000000000000000: 89 db mov %ebx, %ebx
- 0000000000000002: 8b 84 1d 34 12 00 00 mov %eax, [%rbp+%rbx*1+0x1234]
-@rdfa_output:
- return code: 0
-----------------------------------------------------------------------
-@hex:
- # 'lea' is not a memory access.
- # lea (%rbx, %rcx, 4), %rax
- 48 8d 04 8b
-@rval:
- VALIDATOR: Checking jump targets: 0 to 4
- VALIDATOR: Checking that basic blocks are aligned
- *** <input> is safe ***
-@dis:
- 0000000000000000: 48 8d 04 8b lea %rax, [%rbx+%rcx*4]
-@rdfa_output:
- return code: 0
-----------------------------------------------------------------------
-@hex:
- # Stack operations.
- # mov %rsp, %rbp
- 48 89 e5
- # mov %rbp, %rsp
- 48 89 ec
-@rval:
- VALIDATOR: Checking jump targets: 0 to 6
- VALIDATOR: Checking that basic blocks are aligned
- *** <input> is safe ***
-@dis:
- 0000000000000000: 48 89 e5 mov %rbp, %rsp
- 0000000000000003: 48 89 ec mov %rsp, %rbp
-@rdfa_output:
- return code: 0
-----------------------------------------------------------------------
-@hex:
- # add $8, %ebp
- 83 c5 08 \\
- # add %r15, %rbp
- 4c 01 fd
-@rval:
- VALIDATOR: Checking jump targets: 0 to 6
- VALIDATOR: Checking that basic blocks are aligned
- *** <input> is safe ***
-@dis:
- 0000000000000000: 83 c5 08 add %ebp, 0x8
- 0000000000000003: 4c 01 fd add %rbp, %r15
-@rdfa_output:
- return code: 0
-----------------------------------------------------------------------
-@hex:
- # add $8, %ebp
- 83 c5 08
- # add %r15, %rbp
- 4c 01 fd
- # jmp .-3
- eb fb
-@rval:
- VALIDATOR: Checking jump targets: 0 to 8
- VALIDATOR: ERROR: 3: Bad jump target
- VALIDATOR: Checking that basic blocks are aligned
- *** <input> IS UNSAFE ***
-@dis:
- 0000000000000000: 83 c5 08 add %ebp, 0x8
- 0000000000000003: 4c 01 fd add %rbp, %r15
- 0000000000000006: eb fb jmp 0x3
-@rdfa_output:
- 6: [0] bad jump target
- return code: 1
-@validators_disagree:
- Difference in jump reporting.
-----------------------------------------------------------------------
-@hex:
- # A stack fixup on its own is not allowed.
- # add %r15, %rbp
- 4c 01 fd
-@rval:
- VALIDATOR: 0000000000000000: 4c 01 fd add %rbp, %r15
- VALIDATOR: ERROR: Illegal change to register RBP
- VALIDATOR: Checking jump targets: 0 to 3
- VALIDATOR: Checking that basic blocks are aligned
- *** <input> IS UNSAFE ***
-@dis:
- 0000000000000000: 4c 01 fd add %rbp, %r15
-@rdfa_output:
- 0: [0] improper %rbp sandboxing
- return code: 1
-----------------------------------------------------------------------
-@hex:
- # add %r15, %rsp
- 4c 01 fc
-@rval:
- VALIDATOR: 0000000000000000: 4c 01 fc add %rsp, %r15
- VALIDATOR: ERROR: Illegal assignment to RSP
- VALIDATOR: Checking jump targets: 0 to 3
- VALIDATOR: Checking that basic blocks are aligned
- *** <input> IS UNSAFE ***
-@dis:
- 0000000000000000: 4c 01 fc add %rsp, %r15
-@rdfa_output:
- 0: [0] improper %rsp sandboxing
- return code: 1
-----------------------------------------------------------------------
-@hex:
- # add %r15, %r15
- 4d 01 ff
-@rval:
- VALIDATOR: 0000000000000000: 4d 01 ff add %r15, %r15
- VALIDATOR: ERROR: Illegal to change the value of register RegR15
- VALIDATOR: Checking jump targets: 0 to 3
- VALIDATOR: Checking that basic blocks are aligned
- *** <input> IS UNSAFE ***
-@dis:
- 0000000000000000: 4d 01 ff add %r15, %r15
-@rdfa_output:
- 0: [0] error - %r15 is changed
- return code: 1
-----------------------------------------------------------------------
-@hex:
- # Sandboxing is not required on prefetch instructions.
- # prefetchnta (%rax)
- 0f 18 00
-@rval:
- VALIDATOR: Checking jump targets: 0 to 3
- VALIDATOR: Checking that basic blocks are aligned
- *** <input> is safe ***
-@dis:
- 0000000000000000: 0f 18 00 prefetchnta [%rax]
-@rdfa_output:
- return code: 0
-----------------------------------------------------------------------
-@hex:
- # Segment register manipulations are forbidden
- # mov %rax, %es
- 48 8e c0
-@rval:
- VALIDATOR: 0000000000000000: 48 8e c0 mov %es, %ax
- VALIDATOR: ERROR: This instruction has been marked illegal by Native Client
- VALIDATOR: 0000000000000000: 48 8e c0 mov %es, %ax
- VALIDATOR: ERROR: Illegal assignment to segment register RegES
- VALIDATOR: Checking jump targets: 0 to 3
- VALIDATOR: Checking that basic blocks are aligned
- *** <input> IS UNSAFE ***
-@dis:
- 0000000000000000: 48 8e c0 mov %es, %ax
-@rdfa_output:
- 0: [0] unrecognized instruction
- return code: 1
-----------------------------------------------------------------------
-@hex:
- # mov %es, %rax
- 48 8c c0
-@rval:
- VALIDATOR: 0000000000000000: 48 8c c0 mov %rax, %es
- VALIDATOR: ERROR: This instruction has been marked illegal by Native Client
- VALIDATOR: Checking jump targets: 0 to 3
- VALIDATOR: Checking that basic blocks are aligned
- *** <input> IS UNSAFE ***
-@dis:
- 0000000000000000: 48 8c c0 mov %rax, %es
-@rdfa_output:
- 0: [0] unrecognized instruction
- return code: 1
« no previous file with comments | « src/trusted/validator_x86/testdata/64/test_insts.test ('k') | src/trusted/validator_x86/testdata/64/tzcnt.test » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698