mirror of
				https://git.proxmox.com/git/grub2
				synced 2025-11-04 05:22:42 +00:00 
			
		
		
		
	(platform_PROGRAMS): Likewise. * gentpl.py: Mark *,module and *.image for install. * grub-core/gdb_grub.in: Add a notice of expected environment. * grub-core/Makefile.core.def (gdb_grub): Mark for install. (gmodule.pl): Likewise.
		
			
				
	
	
		
			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%x", $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->mod
 | 
						|
		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
 |