about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorserpilliere <serpilliere@users.noreply.github.com>2018-05-18 17:00:12 +0200
committerGitHub <noreply@github.com>2018-05-18 17:00:12 +0200
commitdadfaabc3fff5edb9bf4ef7e7e8c4cfc4baccb94 (patch)
tree09791f3d3c31add07060940ee7f2d2fd6e5fd225
parentf45613e84c4de409342d1b971e7ce0234173ffc4 (diff)
parentac36f324154b1ef936f3d5fd27215535ae99452a (diff)
downloadmiasm-dadfaabc3fff5edb9bf4ef7e7e8c4cfc4baccb94.tar.gz
miasm-dadfaabc3fff5edb9bf4ef7e7e8c4cfc4baccb94.zip
Merge pull request #748 from commial/fix/llvm-check-post-instrs
Fix/llvm check post instrs
-rw-r--r--miasm2/jitter/llvmconvert.py3
-rwxr-xr-xtest/arch/x86/unit/mn_int.py10
2 files changed, 11 insertions, 2 deletions
diff --git a/miasm2/jitter/llvmconvert.py b/miasm2/jitter/llvmconvert.py
index 2b0f2702..dd3afed6 100644
--- a/miasm2/jitter/llvmconvert.py
+++ b/miasm2/jitter/llvmconvert.py
@@ -1056,6 +1056,9 @@ class LLVMFunction():
             self.builder.call(fc_ptr, [self.local_vars["vmmngr"]])
             self.check_memory_exception(next_instr, restricted_exception=False)
 
+        if attrib.set_exception:
+            self.check_cpu_exception(next_instr, restricted_exception=False)
+
         if attrib.mem_read | attrib.mem_write:
             fc_ptr = self.mod.get_global("reset_memory_access")
             self.builder.call(fc_ptr, [self.local_vars["vmmngr"]])
diff --git a/test/arch/x86/unit/mn_int.py b/test/arch/x86/unit/mn_int.py
index 09792371..efacb105 100755
--- a/test/arch/x86/unit/mn_int.py
+++ b/test/arch/x86/unit/mn_int.py
@@ -8,12 +8,18 @@ from asm_test import Asm_Test_32
 class Test_INT(Asm_Test_32):
     TXT = '''
     main:
+       MOV ECX, 0x10
+    loop:
        INT 0x42
+       DEC ECX
+       JNZ loop
+    ret:
        RET
     '''
 
     def set_int_num(self, jitter):
-        self.int_num = jitter.cpu.get_interrupt_num()
+        assert jitter.cpu.get_interrupt_num() == 0x42
+        self.int_num += 1
         jitter.cpu.set_exception(0)
         return True
 
@@ -24,7 +30,7 @@ class Test_INT(Asm_Test_32):
                                          self.set_int_num)
 
     def check(self):
-        assert self.int_num == 0x42
+        assert self.int_num == 0x10
         self.myjit.cpu.set_interrupt_num(14)
         assert self.myjit.cpu.get_interrupt_num() == 14