[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v5 01/14] gdb: Fix redirection issue in dump_module_sections
From: |
Glenn Washburn |
Subject: |
[PATCH v5 01/14] gdb: Fix redirection issue in dump_module_sections |
Date: |
Fri, 23 Dec 2022 22:19:22 -0600 |
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>
---
grub-core/gdb_grub.in | 15 +++++----------
1 file changed, 5 insertions(+), 10 deletions(-)
diff --git a/grub-core/gdb_grub.in b/grub-core/gdb_grub.in
index e322d3dc10..4e45ad5622 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
@@ -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
--
2.34.1
- [PATCH v5 00/14] GDB script fixes and improvements, Glenn Washburn, 2022/12/23
- [PATCH v5 01/14] gdb: Fix redirection issue in dump_module_sections,
Glenn Washburn <=
- [PATCH v5 02/14] gdb: Prevent wrapping when writing to .segments.tmp, Glenn Washburn, 2022/12/23
- [PATCH v5 03/14] gdb: If no modules have been loaded, do not try to load module symbols, Glenn Washburn, 2022/12/23
- [PATCH v5 04/14] gdb: Move runtime module loading into runtime_load_module, Glenn Washburn, 2022/12/23
- [PATCH v5 05/14] gdb: Conditionally run GDB script logic for dynamically or statically positioned GRUB, Glenn Washburn, 2022/12/23
- [PATCH v5 06/14] gdb: Only connect to remote target once when first sourced, Glenn Washburn, 2022/12/23
- [PATCH v5 10/14] gdb: Allow running user-defined commands at GRUB start, Glenn Washburn, 2022/12/23
- [PATCH v5 07/14] gdb: Replace module symbol loading implementation with Python one, Glenn Washburn, 2022/12/23
- [PATCH v5 11/14] gdb: Fix issue with breakpoints defined before the GRUB image is loaded, Glenn Washburn, 2022/12/23
- [PATCH v5 12/14] gdb: Add extra early initialization symbols for i386-pc, Glenn Washburn, 2022/12/23
- [PATCH v5 08/14] gdb: Add functions to make loading from dynamically positioned targets easier, Glenn Washburn, 2022/12/23