14de7328d7cff6ed3c104072abc8e08d24887c5f6Greg Claytonimport lldb 24de7328d7cff6ed3c104072abc8e08d24887c5f6Greg Clayton 34de7328d7cff6ed3c104072abc8e08d24887c5f6Greg Claytondef disassemble(debugger, command, result, dict): 44de7328d7cff6ed3c104072abc8e08d24887c5f6Greg Clayton if lldb.frame.function: 54de7328d7cff6ed3c104072abc8e08d24887c5f6Greg Clayton instructions = lldb.frame.function.instructions 64de7328d7cff6ed3c104072abc8e08d24887c5f6Greg Clayton start_addr = lldb.frame.function.addr.load_addr 74de7328d7cff6ed3c104072abc8e08d24887c5f6Greg Clayton name = lldb.frame.function.name 84de7328d7cff6ed3c104072abc8e08d24887c5f6Greg Clayton elif lldb.frame.symbol: 94de7328d7cff6ed3c104072abc8e08d24887c5f6Greg Clayton instructions = lldb.frame.symbol.instructions 104de7328d7cff6ed3c104072abc8e08d24887c5f6Greg Clayton start_addr = lldb.frame.symbol.addr.load_addr 114de7328d7cff6ed3c104072abc8e08d24887c5f6Greg Clayton name = lldb.frame.symbol.name 124de7328d7cff6ed3c104072abc8e08d24887c5f6Greg Clayton 134de7328d7cff6ed3c104072abc8e08d24887c5f6Greg Clayton for inst in instructions: 144de7328d7cff6ed3c104072abc8e08d24887c5f6Greg Clayton inst_addr = inst.addr.load_addr 154de7328d7cff6ed3c104072abc8e08d24887c5f6Greg Clayton inst_offset = inst_addr - start_addr 164de7328d7cff6ed3c104072abc8e08d24887c5f6Greg Clayton comment = inst.comment 174de7328d7cff6ed3c104072abc8e08d24887c5f6Greg Clayton if comment: 184de7328d7cff6ed3c104072abc8e08d24887c5f6Greg Clayton print "<%s + %-4u> 0x%x %8s %s ; %s" % (name, inst_offset, inst_addr, inst.mnemonic, inst.operands, comment) 194de7328d7cff6ed3c104072abc8e08d24887c5f6Greg Clayton else: 204de7328d7cff6ed3c104072abc8e08d24887c5f6Greg Clayton print "<%s + %-4u> 0x%x %8s %s" % (name, inst_offset, inst_addr, inst.mnemonic, inst.operands) 214de7328d7cff6ed3c104072abc8e08d24887c5f6Greg Clayton 224de7328d7cff6ed3c104072abc8e08d24887c5f6Greg Clayton# Install the command when the module gets imported 234de7328d7cff6ed3c104072abc8e08d24887c5f6Greg Claytonlldb.debugger.HandleCommand('command script add -f gdb_disassemble.disassemble gdb-disassemble') 244de7328d7cff6ed3c104072abc8e08d24887c5f6Greg Claytonprint 'Installed "gdb-disassemble" command for disassembly'