grub-devel
[Top][All Lists]
Advanced

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

[PATCH v3 05/15] gdb: Get correct mod variable value


From: Glenn Washburn
Subject: [PATCH v3 05/15] gdb: Get correct mod variable value
Date: Thu, 15 Dec 2022 01:07:40 -0600

For some reason, GDB is breaking on grub_dl_add() before the function
has setup its stack frame, but GDB thinks it has. So the value of mod
is bogus. To get the correct value, create a one-time break on
grub_dl_get(), which is the first line of grub_dl_add(). When this break
point hits, grub_dl_add() will have finished setting up it stack frame.
But at this point we will be in grub_dl_get()'s stack frame. So go one
frame up, which will be grub_dl_add(), to get mod's value.

Signed-off-by: Glenn Washburn <development@efficientek.com>
---
 grub-core/gdb_grub.in | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/grub-core/gdb_grub.in b/grub-core/gdb_grub.in
index 61dc4644fb..78219ea36e 100644
--- a/grub-core/gdb_grub.in
+++ b/grub-core/gdb_grub.in
@@ -74,7 +74,17 @@ define runtime_load_module
        break grub_dl_add
        commands
                silent
-               load_module mod
+               # GDB has stopped before the call frame is setup, so mod does
+               # not have the correct value. Create a one-time break on the
+               # next function call and then go one frame up, back to the
+               # grub_dl_add frame, to get the correct value for mod.
+               tbreak grub_dl_get
+               commands
+                       silent
+                       fr 1
+                       load_module mod
+                       cont
+               end
                cont
        end
 end
-- 
2.34.1




reply via email to

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