| OLD | NEW |
| (Empty) |
| 1 @hex: | |
| 2 # Show that we handle the expected sandboxing instructions for maskmov. | |
| 3 | |
| 4 # Case one: correct masking of segment DS:%rsi | |
| 5 # mov %edi, %edi | |
| 6 89 ff | |
| 7 # lea (%r15, %rdi), %rdi | |
| 8 49 8d 3c 3f | |
| 9 # maskmovq %mm1, %mm2 | |
| 10 0f f7 d1 | |
| 11 | |
| 12 # Case two: incorrect masking of segment DS:%rsi | |
| 13 # add %edi, %edi | |
| 14 01 ff | |
| 15 # lea (%r15, %rdi), %rdi | |
| 16 49 8d 3c 3f | |
| 17 # maskmovq %mm1, %mm2 | |
| 18 0f f7 d1 | |
| 19 | |
| 20 # Maskmovdqu is also fine | |
| 21 # mov %edi, %edi | |
| 22 89 ff | |
| 23 # lea (%r15, %rdi), %rdi | |
| 24 49 8d 3c 3f | |
| 25 # maskmovdqu %xmm1, %xmm2 | |
| 26 66 0f f7 d1 | |
| 27 | |
| 28 90 90 90 90 | |
| 29 | |
| 30 # But vmaskmovdqu is not | |
| 31 # mov %edi, %edi | |
| 32 # lea (%r15, %rdi), %rdi | |
| 33 # vmaskmovdqu %xmm1, %xmm2 | |
| 34 # (machine code is written in one line to avoid spurious errors caused | |
| 35 # by nop patching) | |
| 36 89 ff 49 8d 3c 3f c5 f9 f7 d1 | |
| 37 @rval: | |
| 38 VALIDATOR: 000000000000000f: 0f f7 d1 mask
movq %mmx2, %mmx1 | |
| 39 VALIDATOR: ERROR: Segment memory reference not allowed | |
| 40 VALIDATOR: 0000000000000026: c5 inva
lid | |
| 41 VALIDATOR: ERROR: This instruction has been marked illegal by Native Client | |
| 42 VALIDATOR: 0000000000000026: c5 inva
lid | |
| 43 VALIDATOR: ERROR: Opcode sequence doesn't define a valid x86 instruction | |
| 44 VALIDATOR: Checking jump targets: 0 to 2a | |
| 45 VALIDATOR: Checking that basic blocks are aligned | |
| 46 *** <input> IS UNSAFE *** | |
| 47 @dis: | |
| 48 0000000000000000: 89 ff mov %edi, %edi | |
| 49 0000000000000002: 49 8d 3c 3f lea %rdi, [%r15
+%rdi*1] | |
| 50 0000000000000006: 0f f7 d1 maskmovq %mmx2,
%mmx1 | |
| 51 0000000000000009: 01 ff add %edi, %edi | |
| 52 000000000000000b: 49 8d 3c 3f lea %rdi, [%r15
+%rdi*1] | |
| 53 000000000000000f: 0f f7 d1 maskmovq %mmx2,
%mmx1 | |
| 54 0000000000000012: 89 ff mov %edi, %edi | |
| 55 0000000000000014: 49 8d 3c 3f lea %rdi, [%r15
+%rdi*1] | |
| 56 0000000000000018: 66 0f f7 d1 maskmovdqu %xmm
2, %xmm1 | |
| 57 000000000000001c: 90 nop | |
| 58 000000000000001d: 90 nop | |
| 59 000000000000001e: 90 nop | |
| 60 000000000000001f: 90 nop | |
| 61 0000000000000020: 89 ff mov %edi, %edi | |
| 62 0000000000000022: 49 8d 3c 3f lea %rdi, [%r15
+%rdi*1] | |
| 63 0000000000000026: c5 invalid | |
| 64 0000000000000027: f9 stc | |
| 65 0000000000000028: f7 d1 not %ecx | |
| 66 @rdfa_output: | |
| 67 f: [0] unrecognized instruction | |
| 68 20: [0] unrecognized instruction | |
| 69 return code: 1 | |
| 70 @validators_disagree: | |
| 71 RDFA validator recognizes vmackmovdqu in the triple | |
| 72 mov %edi, %edi | |
| 73 lea (%r15, %rdi), %rdi | |
| 74 vmaskmovdqu %xmm1, %xmm2 | |
| 75 and then rejects it, so error message points at the beginning of the triple. | |
| 76 | |
| 77 errors reported by old validator but not by rdfa one: | |
| 78 0x26 | |
| 79 errors reported by rdfa validator but not by old one: | |
| 80 0x20 | |
| OLD | NEW |