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