[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v3 13/15] gdb: Allow running user-defined commands at GRUB start
From: |
Glenn Washburn |
Subject: |
[PATCH v3 13/15] gdb: Allow running user-defined commands at GRUB start |
Date: |
Thu, 15 Dec 2022 01:07:48 -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 | 44 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 44 insertions(+)
diff --git a/grub-core/gdb_grub.in b/grub-core/gdb_grub.in
index 57152b718f..021d830b43 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.
@@ -170,6 +172,41 @@ document num_modules
Given a module name print its address or NULL if not 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
@@ -180,13 +217,20 @@ set confirm off
# fail.
set $platform_efi = $_streq("@platform@", "efi")
+set $target = "@target_cpu@-@platform@"
if ! $runonce
if $platform_efi
# Only load the executable file, not the symbols
exec-file kernel.exec
else
+ if $_streq($target, "i386-pc")
+ add-symbol-file boot.image
+ add-symbol-file diskboot.image
+ add-symbol-file lzma_decompress.image
+ end
file kernel.exec
+ run_on_start
runtime_load_module
end
--
2.34.1
- [PATCH v3 03/15] gdb: If no modules have been loaded, do not try to load module symbols, (continued)
- [PATCH v3 03/15] gdb: If no modules have been loaded, do not try to load module symbols, Glenn Washburn, 2022/12/15
- [PATCH v3 04/15] gdb: Move runtime module loading into runtime_load_module, Glenn Washburn, 2022/12/15
- [PATCH v3 05/15] gdb: Get correct mod variable value, Glenn Washburn, 2022/12/15
- [PATCH v3 06/15] gdb: Do not run load_module if module has already been loaded, Glenn Washburn, 2022/12/15
- [PATCH v3 07/15] gdb: Add functions to make loading from dynamically positioned targets easier, Glenn Washburn, 2022/12/15
- [PATCH v3 08/15] gdb: Remove Perl dependency for GRUB GDB script, Glenn Washburn, 2022/12/15
- [PATCH v3 09/15] gdb: If enabled, print line used to load EFI kernel symbols when using gdb_grub script, Glenn Washburn, 2022/12/15
- [PATCH v3 10/15] gdb: Conditionally run GDB script logic for dynamically or statically positioned GRUB, Glenn Washburn, 2022/12/15
- [PATCH v3 11/15] gdb: Only connect to remote target once when first sourced, Glenn Washburn, 2022/12/15
- [PATCH v3 12/15] gdb: Allow user defined "onload_<modname>" command to be run when module is loaded, Glenn Washburn, 2022/12/15
- [PATCH v3 13/15] gdb: Allow running user-defined commands at GRUB start,
Glenn Washburn <=
- [PATCH v3 14/15] gdb: Add ability to turn on shell tracing for gdb helper script, Glenn Washburn, 2022/12/15
- [PATCH v3 15/15] docs: Add debugging chapter to development documentation, Glenn Washburn, 2022/12/15