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.

Signed-off-by: Glenn Washburn <developm...@efficientek.com>
---
 grub-core/gdb_grub.in | 14 ++++----------
 1 file changed, 4 insertions(+), 10 deletions(-)

diff --git a/grub-core/gdb_grub.in b/grub-core/gdb_grub.in
index e322d3dc10..bdf743f0d4 100644
--- a/grub-core/gdb_grub.in
+++ b/grub-core/gdb_grub.in
@@ -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
-- 
2.34.1


_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to