On Thu, Dec 15, 2022 at 11:29:35PM -0600, Glenn Washburn wrote: > 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
s/break/hbreak/? > + 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 Nit, s/grub/GRUB/... > + 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 Daniel _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel