gdb: Fix redirection issue in dump_module_sections
An error in any GDB command causes it to immediately abort with an error, this includes any command that calls that command. This leads to an issue in dump_module_sections where an error causes the command to exit without turning off file redirection. The user then ends up with a GDB command line where commands output nothing to the console. Instead do the work of dump_module_sections in the command dump_module_sections_helper and run the command using GDB's pipe command which does the redirection and undoes the redirection when it finishes regardless of any errors in the command. Also, remove .segments.tmp file prior to loading modules in case one was left from a previous run. Signed-off-by: Glenn Washburn <development@efficientek.com> Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
This commit is contained in:
parent
be0b23ef99
commit
a0b86f1807
@ -10,15 +10,8 @@
|
||||
###
|
||||
|
||||
# Add section numbers and addresses to .segments.tmp
|
||||
define dump_module_sections
|
||||
define dump_module_sections_helper
|
||||
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)
|
||||
@ -26,9 +19,10 @@ define dump_module_sections
|
||||
set $segment = $segment->next
|
||||
end
|
||||
printf "\n"
|
||||
end
|
||||
|
||||
set logging off
|
||||
# FIXME: restore logging status
|
||||
define dump_module_sections
|
||||
pipe dump_module_sections_helper $arg0 | sh -c 'cat >>.segments.tmp'
|
||||
end
|
||||
document dump_module_sections
|
||||
Gather information about module whose mod structure was
|
||||
@ -59,6 +53,7 @@ document load_module
|
||||
end
|
||||
|
||||
define load_all_modules
|
||||
shell rm -f .segments.tmp
|
||||
set $this = grub_dl_head
|
||||
while ($this != 0)
|
||||
dump_module_sections $this
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user