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 <developm...@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 _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel