diff options
Diffstat (limited to 'gnu/llvm/lldb/examples/python/gdb_disassemble.py')
-rwxr-xr-x | gnu/llvm/lldb/examples/python/gdb_disassemble.py | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/gnu/llvm/lldb/examples/python/gdb_disassemble.py b/gnu/llvm/lldb/examples/python/gdb_disassemble.py new file mode 100755 index 00000000000..65983e2e993 --- /dev/null +++ b/gnu/llvm/lldb/examples/python/gdb_disassemble.py @@ -0,0 +1,26 @@ +import lldb + + +def disassemble(debugger, command, result, dict): + if lldb.frame.function: + instructions = lldb.frame.function.instructions + start_addr = lldb.frame.function.addr.load_addr + name = lldb.frame.function.name + elif lldb.frame.symbol: + instructions = lldb.frame.symbol.instructions + start_addr = lldb.frame.symbol.addr.load_addr + name = lldb.frame.symbol.name + + for inst in instructions: + inst_addr = inst.addr.load_addr + inst_offset = inst_addr - start_addr + comment = inst.comment + if comment: + print("<%s + %-4u> 0x%x %8s %s ; %s" % (name, inst_offset, inst_addr, inst.mnemonic, inst.operands, comment)) + else: + print("<%s + %-4u> 0x%x %8s %s" % (name, inst_offset, inst_addr, inst.mnemonic, inst.operands)) + +# Install the command when the module gets imported +lldb.debugger.HandleCommand( + 'command script add -f gdb_disassemble.disassemble gdb-disassemble') +print('Installed "gdb-disassemble" command for disassembly') |