diff options
| author | serpilliere <serpilliere@users.noreply.github.com> | 2018-05-18 17:00:12 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-05-18 17:00:12 +0200 |
| commit | dadfaabc3fff5edb9bf4ef7e7e8c4cfc4baccb94 (patch) | |
| tree | 09791f3d3c31add07060940ee7f2d2fd6e5fd225 | |
| parent | f45613e84c4de409342d1b971e7ce0234173ffc4 (diff) | |
| parent | ac36f324154b1ef936f3d5fd27215535ae99452a (diff) | |
| download | miasm-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.py | 3 | ||||
| -rwxr-xr-x | test/arch/x86/unit/mn_int.py | 10 |
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 |