Index: src/trusted/validator_x86/testdata/32/tls.tf |
diff --git a/src/trusted/validator_x86/testdata/32/tls.tf b/src/trusted/validator_x86/testdata/32/tls.tf |
new file mode 100644 |
index 0000000000000000000000000000000000000000..c77e768736b2f0f0221d6b6ebefd66e2ecf7c365 |
--- /dev/null |
+++ b/src/trusted/validator_x86/testdata/32/tls.tf |
@@ -0,0 +1,60 @@ |
+BITS: 32 |
+OUTCOME: invalid |
+ |
+# Test TLS access commands. |
+# mov %gs:0, %eax |
+asm: mov %gs:0x0,%eax |
+hex: 65 a1 00 00 00 00 |
+ |
+# AFAIK it's open question whether # writes to gs:... should be allowed. |
+# Currently RDFA rejects. |
+# mov %eax, %gs:0 |
+asm: mov %eax,%gs:0x0 |
+hex: 65 a3 00 00 00 00 |
+ |
+# Forbidden |
+# mov %gs:0, %ax |
+asm: mov %gs:0x0,%ax |
+hex: 65 66 a1 00 00 00 00 |
+nc_out: Bad prefix usage |
+ |
+# mov %ax, %gs:0 |
+asm: mov %ax,%gs:0x0 |
+hex: 65 66 a3 00 00 00 00 |
+nc_out: Bad prefix usage |
+ |
+ |
+# Invalid access to TLS |
+# mov %fs:0, %eax |
+asm: mov %fs:0x0,%eax |
+hex: 64 a1 00 00 00 00 |
+nc_out: Bad prefix usage |
+ |
+# mov %eax, %fs:0 |
+asm: mov %eax,%fs:0x0 |
+hex: 64 a3 00 00 00 00 |
+nc_out: Bad prefix usage |
+ |
+# mov %fs:0, %ax |
+asm: mov %fs:0x0,%ax |
+hex: 64 66 a1 00 00 00 00 |
+nc_out: Bad prefix usage |
+ |
+# mov %ax, %fs:0 |
+asm: mov %ax,%fs:0x0 |
+hex: 64 66 a3 00 00 00 00 |
+nc_out: Bad prefix usage |
+ |
+ |
+# AFAIK it's open question whether writes to gs:... should be allowed. |
+# Currently RDFA rejects. |
+asm: mov %gs:(%eax),%eax |
+hex: 65 8B 00 |
+ |
+ |
+# Forbidden |
+# lock add %gs:0x0,%eax |
+asm: lock add %gs:0x0,%eax; |
+hex: 65 F0 03 05 00 00 00 00 |
+nc_out: Bad prefix usage |
+ |