# # voltron.gdb # # This is a set of utility commands for communicating with a voltron standalone server from # plain old GDB macro commands. This is used to add some support for voltron to GDB version 6. # set $VOLTRON_STACK_SIZE = 256 set $voltron_running = 0 define voltron_dump_registers_x64 dump value /tmp/voltron.reg.rip $rip dump value /tmp/voltron.reg.rax $rax dump value /tmp/voltron.reg.rbx $rbx dump value /tmp/voltron.reg.rbp $rbp dump value /tmp/voltron.reg.rsp $rsp dump value /tmp/voltron.reg.rdi $rdi dump value /tmp/voltron.reg.rsi $rsi dump value /tmp/voltron.reg.rdx $rdx dump value /tmp/voltron.reg.rcx $rcx dump value /tmp/voltron.reg.r8 $r8 dump value /tmp/voltron.reg.r9 $r9 dump value /tmp/voltron.reg.r10 $r10 dump value /tmp/voltron.reg.r11 $r11 dump value /tmp/voltron.reg.r12 $r12 dump value /tmp/voltron.reg.r13 $r13 dump value /tmp/voltron.reg.r14 $r14 dump value /tmp/voltron.reg.r15 $r15 dump value /tmp/voltron.reg.cs $cs dump value /tmp/voltron.reg.ds $ds dump value /tmp/voltron.reg.es $es dump value /tmp/voltron.reg.fs $fs dump value /tmp/voltron.reg.gs $gs dump value /tmp/voltron.reg.ss $ss dump value /tmp/voltron.reg.eflags $eflags end define voltron_update_registers voltron_dump_registers_x64 if $argc == 0 shell voltron gdb6proxy reg else shell voltron gdb6proxy reg end shell rm /tmp/voltron.reg.* end define voltron_update_stack dump memory /tmp/voltron.stack $rsp ($rsp+$VOLTRON_STACK_SIZE) dump value /tmp/voltron.reg.rsp $rsp if $argc == 0 shell voltron gdb6proxy stack else shell voltron -d gdb6proxy stack end shell rm /tmp/voltron.stack end define voltron_start if $voltron_running == 0 shell voltron server & ; echo $! >/tmp/voltron.pid set $voltron_running = 1 else echo Already running\n end end document voltron_start Start the voltron server. end define voltron_stop if $voltron_running == 1 shell kill `cat /tmp/voltron.pid` shell rm /tmp/voltron.pid set $voltron_running = 0 else echo Not running\n end end document voltron_stop Stop the voltron server. end define voltron_status if $voltron_running == 1 echo Voltron is running\n else echo Voltron is not running\n end end document voltron_status Get the status of the voltron server. end define voltron_update if $argc == 0 voltron_update_registers voltron_update_stack else voltron_update_registers 1 voltron_update_stack 1 end end document voltron_update Send an update to the voltron server. end # If you have your own hook-stop defined, comment this out and add `voltron_update` to yours define hook-stop voltron_update end