1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- ###
- ### Load debuging information about GNU GRUB 2 modules into GDB
- ### automatically. Needs readelf, Perl and gmodule.pl script
- ###
- ### Has to be launched from the writable and trusted
- ### directory containing *.image and *.module
- ###
- ### $Id: .gdbinit,v 1.1 2006/05/14 11:38:08 lkundrak Exp $
- ### Lubomir Kundrak <lkudrak@skosi.org>
- ###
- # Add section numbers and addresses to .segments.tmp
- define dump_module_sections
- set $mod = $arg0
- # FIXME: save logging status
- set logging file .segments.tmp
- set logging redirect on
- set logging overwrite off
- set logging on
- printf "%s", $mod->name
- set $segment = $mod->segment
- while ($segment)
- printf " %i 0x%lx", $segment->section, $segment->addr
- set $segment = $segment->next
- end
- printf "\n"
- set logging off
- # FIXME: restore logging status
- end
- document dump_module_sections
- Gather information about module whose mod structure was
- given for use with match_and_load_symbols
- end
- # Generate and execute GDB commands and delete temporary files
- # afterwards
- define match_and_load_symbols
- shell perl gmodule.pl <.segments.tmp >.loadsym.gdb
- source .loadsym.gdb
- shell rm -f .segments.tmp .loadsym.gdb
- end
- document match_and_load_symbols
- Launch script, that matches section names with information
- generated by dump_module_sections and load debugging info
- apropriately
- end
- ###
- define load_module
- dump_module_sections $arg0
- match_and_load_symbols
- end
- document load_module
- Load debugging information for module given as argument.
- end
- define load_all_modules
- set $this = grub_dl_head
- while ($this != 0)
- dump_module_sections $this
- set $this = $this->next
- end
- match_and_load_symbols
- end
- document load_all_modules
- Load debugging information for all loaded modules.
- end
- ###
- set confirm off
- file kernel.exec
- target remote :1234
- # inform when module is loaded
- break grub_dl_add
- commands
- silent
- load_module mod
- cont
- end
|