]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
[wip] gdbserver, x86: support fs_base and gs_base users/mmetzger/fsgs
authorMarkus Metzger <markus.t.metzger@intel.com>
Tue, 26 Nov 2019 11:02:30 +0000 (12:02 +0100)
committerMarkus Metzger <markus.t.metzger@intel.com>
Tue, 17 Dec 2019 15:04:40 +0000 (16:04 +0100)
When debugging over gdbserver fs/gs_base is not updated when changing the
corresponding selector.

For 32-bit inferiors, fs/gs_base are now defined but not fetched.

Change-Id: I5a4d8637324ee5f0c303fdcc5eeb8ca50b96c577
Signed-off-by: Markus Metzger <markus.t.metzger@intel.com>
gdb/gdbserver/linux-x86-low.c
gdb/gdbserver/linux-x86-tdesc.c

index 54bd2a26de8eb59973fb575445abfe9f036e0954..479cec0d70991c8ee42a35b1230e839060a7babc 100644 (file)
@@ -133,7 +133,7 @@ static const int x86_64_regmap[] =
   -1, -1, -1, -1, -1, -1, -1, -1,
   ORIG_RAX * 8,
 #ifdef HAVE_STRUCT_USER_REGS_STRUCT_FS_BASE
-  21 * 8,  22 * 8,
+  FS_BASE * 8,  GS_BASE * 8,
 #else
   -1, -1,
 #endif
index b39ed53549bdd4b6a6adea2f30ec3ad75c2bda0b..ab43ae58c25ff741a94074e7f478e4044cedc66e 100644 (file)
@@ -87,7 +87,13 @@ i386_linux_read_description (uint64_t xcr0)
 
   if (*tdesc == NULL)
     {
-      *tdesc = i386_create_target_description (xcr0, true, false);
+#ifdef HAVE_STRUCT_USER_REGS_STRUCT_FS_BASE
+      const bool segment = true;
+#else
+      const bool segment = false;
+#endif
+
+      *tdesc = i386_create_target_description (xcr0, true, segment);
 
       init_target_desc (*tdesc, i386_expedite_regs);
     }
@@ -118,7 +124,13 @@ amd64_linux_read_description (uint64_t xcr0, bool is_x32)
 
   if (*tdesc == NULL)
     {
-      *tdesc = amd64_create_target_description (xcr0, is_x32, true, true);
+#ifdef HAVE_STRUCT_USER_REGS_STRUCT_FS_BASE
+      const bool segment = true;
+#else
+      const bool segment = false;
+#endif
+
+      *tdesc = amd64_create_target_description (xcr0, is_x32, true, segment);
 
       init_target_desc (*tdesc, amd64_expedite_regs);
     }