diff options
| author | William Bruneau <william.bruneau@epfedu.fr> | 2021-02-18 17:40:35 +0100 |
|---|---|---|
| committer | William Bruneau <william.bruneau@epfedu.fr> | 2021-02-24 18:30:14 +0100 |
| commit | c87e64b5784654419530da936dfb985c5ecb1416 (patch) | |
| tree | f78af4d857fcb9c0d3298c49128e2797c2322546 | |
| parent | 87061c1045c8a66332aca9e5b5b928b79dd326ce (diff) | |
| download | miasm-c87e64b5784654419530da936dfb985c5ecb1416.tar.gz miasm-c87e64b5784654419530da936dfb985c5ecb1416.zip | |
Pretty print jitter exception flag
Diffstat (limited to '')
| -rw-r--r-- | miasm/jitter/csts.py | 18 | ||||
| -rw-r--r-- | miasm/jitter/jitload.py | 11 |
2 files changed, 28 insertions, 1 deletions
diff --git a/miasm/jitter/csts.py b/miasm/jitter/csts.py index 3829ed98..f40cbe74 100644 --- a/miasm/jitter/csts.py +++ b/miasm/jitter/csts.py @@ -21,6 +21,24 @@ EXCEPT_ILLEGAL_INSN = ((1 << 18) | EXCEPT_DO_NOT_UPDATE_PC) EXCEPT_UNK_MNEMO = ((1 << 19) | EXCEPT_DO_NOT_UPDATE_PC) EXCEPT_INT_1 = ((1 << 20) | EXCEPT_DO_NOT_UPDATE_PC) +JitterExceptions = { + "DO_NOT_UPDATE_PC": EXCEPT_DO_NOT_UPDATE_PC, + "NUM_UPDT_EIP": EXCEPT_NUM_UPDT_EIP, + "CODE_AUTOMOD": EXCEPT_CODE_AUTOMOD, + "SOFT_BP": EXCEPT_SOFT_BP, + "INT_XX": EXCEPT_INT_XX, + "SPR_ACCESS": EXCEPT_SPR_ACCESS, + "SYSCALL": EXCEPT_SYSCALL, + "BREAKPOINT_MEMORY": EXCEPT_BREAKPOINT_MEMORY, + "BREAKPOINT_INTERN": EXCEPT_BREAKPOINT_INTERN, + "ACCESS_VIOL": EXCEPT_ACCESS_VIOL, + "DIV_BY_ZERO": EXCEPT_DIV_BY_ZERO, + "PRIV_INSN": EXCEPT_PRIV_INSN, + "ILLEGAL_INSN": EXCEPT_ILLEGAL_INSN, + "UNK_MNEMO": EXCEPT_UNK_MNEMO, + "INT_1": EXCEPT_INT_1, +} + # VM Mngr constants PAGE_READ = 1 diff --git a/miasm/jitter/jitload.py b/miasm/jitter/jitload.py index 49c74254..34c4d157 100644 --- a/miasm/jitter/jitload.py +++ b/miasm/jitter/jitload.py @@ -182,7 +182,16 @@ class JitterException(Exception): self.exception_flag = exception_flag def __str__(self): - return "A jitter exception occurred (0x%x)" % (self.exception_flag) + return "A jitter exception occurred: %s (0x%x)" % ( + self.exception_flag_to_str(), self.exception_flag + ) + + def exception_flag_to_str(self): + exception_flag_list = [] + for name, value in JitterExceptions.items(): + if value & self.exception_flag == value: + exception_flag_list.append(name) + return ' & '.join(exception_flag_list) class Jitter(object): |