[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v4 12/15] gdb: Allow running user-defined commands at GRUB start
From: |
Glenn Washburn |
Subject: |
[PATCH v4 12/15] gdb: Allow running user-defined commands at GRUB start |
Date: |
Thu, 15 Dec 2022 23:29:35 -0600 |
A new command, run_on_start, is created which handles some complexities
of the EFI platform when breaking on GRUB start. If GRUB start is hooked,
run "onstart" command if it is defned.
Signed-off-by: Glenn Washburn <development@efficientek.com>
---
grub-core/gdb_grub.in | 38 ++++++++++++++++++++++++++++++++++++++
1 file changed, 38 insertions(+)
diff --git a/grub-core/gdb_grub.in b/grub-core/gdb_grub.in
index 8ae6344edf..3b3cea1a4d 100644
--- a/grub-core/gdb_grub.in
+++ b/grub-core/gdb_grub.in
@@ -36,6 +36,8 @@ end
define dynamic_load_symbols
dynamic_load_kernel_exec_symbols $arg0
+ run_on_start
+
# We may have been very late to loading the kernel.exec symbols and
# and modules may already be loaded. So load symbols for any already
# loaded.
@@ -134,6 +136,41 @@ document runtime_load_module
Load module symbols at runtime as they are loaded.
end
+define run_on_start
+ # TODO: Add check to see if _start symbol is defined, if not, then
+ # the symbols have not yet been loaded and this command will not work.
+ watch *_start
+ set $break_efi_start_bpnum = $bpnum
+ commands
+ silent
+ delete $break_efi_start_bpnum
+ break _start
+ commands
+ silent
+ delete $break_efi_start_bpnum
+ set $onstart_name = "onstart"
+ is_user_command $onstart_name
+ if $ret
+ onstart
+ end
+ continue
+ end
+ set $break_efi_start_bpnum = $bpnum
+ continue
+ end
+end
+document run_on_start
+ On some targets, such as x86_64-efi, even if you know where the
+ firmware will load the grub image, you can not simply set a break
+ point before the image is loaded because loading the image
+ overwrites the break point in memory. So setup a hardware watch
+ point, which does not have that problem, and if that gets triggered,
+ then reset the break point. If a user-defined command named
+ "onstart" exists it will be run after the start is hit.
+ NOTE: This assumes symbols have already been correctly loaded for
+ the EFI application.
+end
+
###
set confirm off
@@ -151,6 +188,7 @@ if ! $runonce
exec-file kernel.exec
else
file kernel.exec
+ run_on_start
runtime_load_module
end
--
2.34.1
[PATCH v4 13/15] gdb: Add extra early initialization symbols for i386-pc, Glenn Washburn, 2022/12/16
[PATCH v4 14/15] gdb: Add ability to turn on shell tracing for gdb helper script, Glenn Washburn, 2022/12/16
[PATCH v4 11/15] gdb: Allow user defined "onload_<modname>" command to be run when module is loaded, Glenn Washburn, 2022/12/16