diff --git a/suite/regress/x86_call_ptr_sym.py b/suite/regress/x86_call_ptr_sym.py
new file mode 100755
index 0000000000000000000000000000000000000000..0d3afb71a105bbcf0fe6723a110431ee206095fa
--- /dev/null
+++ b/suite/regress/x86_call_ptr_sym.py
@@ -0,0 +1,50 @@
+#!/usr/bin/python
+# Marco Bartoli, 2016
+
+# This is to test call [label] on X86.
+
+# Github issue: #271
+# Author: Marco Bartoli (wsxarcher)
+
+
+from keystone import *
+import regress
+
+def sym_resolver(symbol, value):
+    if symbol == b'GetPhoneBuildString':
+        value = 0x41b000
+        return True
+    return False
+
+class TestX86Nasm(regress.RegressTest):
+    def runTest(self):
+        ks = Ks(KS_ARCH_X86, KS_MODE_32)
+        ks.syntax = KS_OPT_SYNTAX_NASM
+
+        dir(sym_resolver)
+
+        ks.sym_resolver = sym_resolver
+        encoding, count = ks.asm(b"call [GetPhoneBuildString]")
+        self.assertEqual(encoding, [ 0xff, 0x15, 0x00, 0xb0, 0x41, 0x00 ])
+
+
+class TestX86Intel(regress.RegressTest):
+    def runTest(self):
+        ks = Ks(KS_ARCH_X86, KS_MODE_32)
+        ks.syntax = KS_OPT_SYNTAX_INTEL
+        ks.sym_resolver = sym_resolver
+        encoding, count = ks.asm(b"call [GetPhoneBuildString]")
+        self.assertEqual(encoding, [ 0xff, 0x15, 0x00, 0xb0, 0x41, 0x00 ])
+
+
+class TestX86Att(regress.RegressTest):
+    def runTest(self):
+        ks = Ks(KS_ARCH_X86, KS_MODE_32)
+        ks.syntax = KS_OPT_SYNTAX_ATT
+        ks.sym_resolver = sym_resolver
+        encoding, count = ks.asm(b"call *GetPhoneBuildString")
+        self.assertEqual(encoding, [ 0xff, 0x15, 0x00, 0xb0, 0x41, 0x00 ])
+
+
+if __name__ == '__main__':
+    regress.main()