Index: src/trusted/validator_x86/testdata/64/direct-call-16.tf |
diff --git a/src/trusted/validator_x86/testdata/64/direct-call-16.tf b/src/trusted/validator_x86/testdata/64/direct-call-16.tf |
new file mode 100644 |
index 0000000000000000000000000000000000000000..e1556196590cd64011ae781f8fc54585c0565819 |
--- /dev/null |
+++ b/src/trusted/validator_x86/testdata/64/direct-call-16.tf |
@@ -0,0 +1,32 @@ |
+BITS: 64 |
+OUTCOME: invalid |
+ |
+# This file tests how we handle a 16-bit direct call. In particular, it tests |
+# whether we actually disallow prefix 66 on the direct call. |
+# |
+# Pad with nops, so that call is bundle aligned. |
+asm: nop; nop; nop; nop; nop; nop; nop; nop |
+hex: 90 90 90 90 90 90 90 90 |
+ |
+asm: nop; nop; nop; nop; nop; nop; nop; nop |
+hex: 90 90 90 90 90 90 90 90 |
+ |
+asm: nop; nop; nop; nop; nop; nop; nop; nop |
+hex: 90 90 90 90 90 90 90 90 |
+ |
+asm: nop; nop; nop |
+hex: 90 90 90 |
+ |
+ |
+# Define 16-bit direct call. |
+hex: 66 e8 F0 FF |
+nc_out: ERROR: Opcode sequence doesn't define a valid x86 instruction |
+nc_out: ERROR: Use of DATA16 (66) prefix for instruction not allowed by Native Client |
+nc_out: [at +2] ERROR: Opcode sequence doesn't define a valid x86 instruction |
+ |
+ |
+# Padding in case the parser of the previous instruction recognizes |
+# the wrong byte length for the jump constant. |
+asm: nop; nop |
+hex: 90 90 |
+ |