grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v4 12/15] gdb: Allow running user-defined commands at GRUB st


From: Daniel Kiper
Subject: Re: [PATCH v4 12/15] gdb: Allow running user-defined commands at GRUB start
Date: Wed, 21 Dec 2022 16:27:40 +0100
User-agent: NeoMutt/20170113 (1.7.2)

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 <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

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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]