]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
PDB: on i386 local variables are relative to $ebp
authorHannes Domani <ssbssa@yahoo.de>
Sat, 16 Apr 2022 18:51:21 +0000 (20:51 +0200)
committerHannes Domani <ssbssa@yahoo.de>
Sat, 16 Apr 2022 18:52:56 +0000 (20:52 +0200)
gdb/windows-nat.c

index 1e9e6fcc89547aa5f9da4991c54c9268083efcc8..fefdee0b6ea188969e35cf929f871392ad79bcb2 100644 (file)
@@ -60,6 +60,9 @@
 
 #include "i386-tdep.h"
 #include "i387-tdep.h"
+#ifdef __x86_64__
+#include "amd64-tdep.h"
+#endif
 
 #include "windows-tdep.h"
 #include "windows-nat.h"
@@ -3056,7 +3059,13 @@ pdb_read_variable (struct symbol *symbol, struct frame_info *frame)
   pdb_regrel_baton *baton
     = (pdb_regrel_baton *) SYMBOL_LOCATION_BATON (symbol);
   gdbarch *gdbarch = get_frame_arch (frame);
-  int regnum = gdbarch_sp_regnum (gdbarch);
+  int regnum;
+#ifdef __x86_64__
+  if (gdbarch_ptr_bit (gdbarch) == 64)
+    regnum = AMD64_RSP_REGNUM;
+  else
+#endif
+    regnum = I386_EBP_REGNUM;
   ULONGEST regvalue = get_frame_register_unsigned (frame, regnum);
   return value_at_lazy (symbol->type (), regvalue + baton->offset);
 }