mirror of
				https://git.proxmox.com/git/grub2
				synced 2025-10-31 12:27:02 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			86 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			86 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| ###
 | |
| ### 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
 | 
