コード例 #1
0
ファイル: py-disasm.py プロジェクト: kraj/binutils-gdb
 def disassemble(self, info):
     result = gdb.disassembler.builtin_disassemble(info)
     arch = info.architecture
     addr = info.address
     program_space = info.progspace
     str = gdb.format_address(addr, program_space, arch)
     text = result.string + "\t## addr = %s" % str
     return DisassemblerResult(result.length, text)
コード例 #2
0
ファイル: py-disasm.py プロジェクト: kraj/binutils-gdb
 def disassemble(self, info):
     """Disassemble the instruction, add a CACHED comment to the output,
     and cache the DisassembleInfo so that it is not garbage collected."""
     GlobalCachingDisassembler.cached_insn_disas.append(info)
     GlobalCachingDisassembler.cached_insn_disas.append(self.MyInfo(info))
     result = gdb.disassembler.builtin_disassemble(info)
     text = result.string + "\t## CACHED"
     return DisassemblerResult(result.length, text)
コード例 #3
0
ファイル: py-disasm.py プロジェクト: kraj/binutils-gdb
 def disassemble(self, info):
     tag = "## FAIL"
     try:
         info.read_memory(1, -info.address + 2)
     except gdb.MemoryError:
         tag = "## AFTER ERROR"
     result = gdb.disassembler.builtin_disassemble(info)
     text = result.string + "\t" + tag
     return DisassemblerResult(result.length, text)
コード例 #4
0
ファイル: py-disasm.py プロジェクト: kraj/binutils-gdb
 def disassemble(self, info):
     result = gdb.disassembler.builtin_disassemble(info)
     len = result.length
     str = ""
     for o in range(len):
         if str != "":
             str += " "
         v = bytes(info.read_memory(1, o))[0]
         if sys.version_info[0] < 3:
             v = struct.unpack("<B", v)
         str += "0x%02x" % v
     text = result.string + "\t## bytes = %s" % str
     return DisassemblerResult(result.length, text)
コード例 #5
0
ファイル: py-disasm.py プロジェクト: kraj/binutils-gdb
    def disassemble(self, info):
        result = gdb.disassembler.builtin_disassemble(info)

        ad = info.address
        ar = info.architecture

        if ad != current_pc:
            raise gdb.GdbError("invalid address")

        if not isinstance(ar, gdb.Architecture):
            raise gdb.GdbError("invalid architecture type")

        text = result.string + "\t## ad = 0x%x, ar = %s" % (ad, ar.name())
        return DisassemblerResult(result.length, text)
コード例 #6
0
ファイル: py-disasm.py プロジェクト: kraj/binutils-gdb
 def disassemble(self, info):
     result = gdb.disassembler.builtin_disassemble(info)
     text = result.string + "\t## tag = %s" % self._tag
     return DisassemblerResult(result.length, text)
コード例 #7
0
ファイル: py-disasm.py プロジェクト: kraj/binutils-gdb
 def disassemble(self, info):
     try:
         info.read_memory(1, -info.address + 2)
     except gdb.MemoryError as e:
         raise gdb.MemoryError("cannot read code at address 0x2")
     return DisassemblerResult(1, "BAD")
コード例 #8
0
ファイル: py-disasm.py プロジェクト: kraj/binutils-gdb
 def disassemble(self, info):
     result = gdb.disassembler.builtin_disassemble(info)
     # The following read will throw an error.
     info.read_memory(1, -info.address + 2)
     return DisassemblerResult(1, "BAD")