diff options
| author | plafosse <peter@vector35.com> | 2016-10-28 20:41:40 -0400 |
|---|---|---|
| committer | plafosse <peter@vector35.com> | 2016-10-28 20:41:40 -0400 |
| commit | 18e7e9378a4d7dff8140ed35eb47ce7993bd850b (patch) | |
| tree | c78882aa02a668637fb33124ae20f34a25e461f1 /python/architecture.py | |
| parent | 5e4cca1f1796bec109adacdb049d9e34c17656eb (diff) | |
| parent | b5eacc14097def2367b650fc4a9377d4910441eb (diff) | |
Merging with dev
Diffstat (limited to 'python/architecture.py')
| -rw-r--r-- | python/architecture.py | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/python/architecture.py b/python/architecture.py index 11aa4757..a8aa391b 100644 --- a/python/architecture.py +++ b/python/architecture.py @@ -222,6 +222,8 @@ class Architecture(object): self._cb.getDefaultIntegerSize = self._cb.getDefaultIntegerSize.__class__(self._get_default_integer_size) self._cb.getMaxInstructionLength = self._cb.getMaxInstructionLength.__class__(self._get_max_instruction_length) self._cb.getOpcodeDisplayLength = self._cb.getOpcodeDisplayLength.__class__(self._get_opcode_display_length) + self._cb.getAssociatedArchitectureByAddress = \ + self._cb.getAssociatedArchitectureByAddress.__class__(self._get_associated_arch_by_address) self._cb.getInstructionInfo = self._cb.getInstructionInfo.__class__(self._get_instruction_info) self._cb.getInstructionText = self._cb.getInstructionText.__class__(self._get_instruction_text) self._cb.freeInstructionText = self._cb.freeInstructionText.__class__(self._free_instruction_text) @@ -411,6 +413,15 @@ class Architecture(object): log.log_error(traceback.format_exc()) return 8 + def _get_associated_arch_by_address(self, ctxt, addr): + try: + result, new_addr = self.perform_get_associated_arch_by_address(addr[0]) + addr[0] = new_addr + return ctypes.cast(result.handle, ctypes.c_void_p).value + except: + log.log_error(traceback.format_exc()) + return ctypes.cast(self.handle, ctypes.c_void_p).value + def _get_instruction_info(self, ctxt, data, addr, max_len, result): try: buf = ctypes.create_string_buffer(max_len) @@ -820,6 +831,9 @@ class Architecture(object): log.log_error(traceback.format_exc()) return False + def perform_get_associated_arch_by_address(self, addr): + return self, addr + @abc.abstractmethod def perform_get_instruction_info(self, data, addr): """ |
