From 3a63b304d13d50d9211d1859c3fdadee9d1c74e4 Mon Sep 17 00:00:00 2001
From: Ingmar Steen <iksteen@gmail.com>
Date: Mon, 16 May 2016 23:07:54 +0200
Subject: [PATCH] Add AT&T and alternative encodings to x86_label_arith test.

---
 suite/regress/x86_label_arith.py | 38 ++++++++++++++++++++++++++++----
 1 file changed, 34 insertions(+), 4 deletions(-)

diff --git a/suite/regress/x86_label_arith.py b/suite/regress/x86_label_arith.py
index 3d17f05..cd56709 100755
--- a/suite/regress/x86_label_arith.py
+++ b/suite/regress/x86_label_arith.py
@@ -10,12 +10,26 @@ from keystone import *
 import regress
 
 
+VALID_ENCODINGS_1 = [
+    [0x2d, 0x0a, 0x00, 0x00, 0x00],
+    [0x81, 0xe8, 0x0b, 0x00, 0x00, 0x00],
+    [0x83, 0xe8, 0x0b],
+]
+
+
+VALID_ENCODINGS_2 = [
+    [0x2d, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00],
+    [0x81, 0xe8, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00],
+    [0x83, 0xe8, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00],
+]
+
+
 class TestX86Nasm1(regress.RegressTest):
     def runTest(self):
         ks = Ks(KS_ARCH_X86, KS_MODE_32)
         ks.syntax = KS_OPT_SYNTAX_NASM
         encoding, count = ks.asm(b"sub eax, foo + 5\nfoo:")
-        self.assertEqual(encoding, [ 0x2d, 0x0a, 0x00, 0x00, 0x00 ])
+        self.assertIn(encoding, VALID_ENCODINGS_1)
 
 
 class TestX86Nasm2(regress.RegressTest):
@@ -23,7 +37,7 @@ class TestX86Nasm2(regress.RegressTest):
         ks = Ks(KS_ARCH_X86, KS_MODE_32)
         ks.syntax = KS_OPT_SYNTAX_NASM
         encoding, count = ks.asm(b"sub eax, bar - foo\nfoo: dq 0\nbar:")
-        self.assertEqual(encoding, [ 0x83, 0xe8, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ])
+        self.assertIn(encoding, VALID_ENCODINGS_2)
 
 
 class TestX86Intel1(regress.RegressTest):
@@ -31,7 +45,7 @@ class TestX86Intel1(regress.RegressTest):
         ks = Ks(KS_ARCH_X86, KS_MODE_32)
         ks.syntax = KS_OPT_SYNTAX_INTEL
         encoding, count = ks.asm(b"sub eax, foo + 5;foo:")
-        self.assertEqual(encoding, [ 0x2d, 0x0a, 0x00, 0x00, 0x00 ])
+        self.assertIn(encoding, VALID_ENCODINGS_1)
 
 
 class TestX86Intel2(regress.RegressTest):
@@ -39,7 +53,23 @@ class TestX86Intel2(regress.RegressTest):
         ks = Ks(KS_ARCH_X86, KS_MODE_32)
         ks.syntax = KS_OPT_SYNTAX_INTEL
         encoding, count = ks.asm(b"sub eax, bar - foo;foo: .quad 0;bar:")
-        self.assertEqual(encoding, [ 0x83, 0xe8, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ])
+        self.assertIn(encoding, VALID_ENCODINGS_2)
+
+
+class TestX86Att1(regress.RegressTest):
+    def runTest(self):
+        ks = Ks(KS_ARCH_X86, KS_MODE_32)
+        ks.syntax = KS_OPT_SYNTAX_ATT
+        encoding, count = ks.asm(b"sub $foo + 5, %eax;foo:")
+        self.assertIn(encoding, VALID_ENCODINGS_1)
+
+
+class TestX86Att2(regress.RegressTest):
+    def runTest(self):
+        ks = Ks(KS_ARCH_X86, KS_MODE_32)
+        ks.syntax = KS_OPT_SYNTAX_ATT
+        encoding, count = ks.asm(b"sub $bar - foo, %eax;foo:;.quad 0;bar:")
+        self.assertIn(encoding, VALID_ENCODINGS_2)
 
 
 if __name__ == '__main__':
-- 
GitLab