Use I386_GSBASE_REGNUM in i386fbsd_get_thread_local_address.
authorJohn Baldwin <jhb@FreeBSD.org>
Fri, 1 Apr 2022 20:16:46 +0000 (13:16 -0700)
committerJohn Baldwin <jhb@FreeBSD.org>
Fri, 1 Apr 2022 20:16:46 +0000 (13:16 -0700)
32-bit x86 arches always the I386_*BASE_REGNUM values.  Only code that
needs to support both 64-bit and 32-bit arches needs to use
tdep->fsbase_regnum to compute a segment base register number.

gdb/i386-fbsd-tdep.c

index fad091f84724f3600359b26854cf764b9380569b..d50f35707eecd4e092eb7ed5a86da58e0e21ef7b 100644 (file)
@@ -350,16 +350,13 @@ i386fbsd_get_thread_local_address (struct gdbarch *gdbarch, ptid_t ptid,
   i386_gdbarch_tdep *tdep = (i386_gdbarch_tdep *) gdbarch_tdep (gdbarch);
   struct regcache *regcache;
 
-  if (tdep->fsbase_regnum == -1)
-    error (_("Unable to fetch %%gsbase"));
-
   regcache = get_thread_arch_regcache (current_inferior ()->process_target (),
                                       ptid, gdbarch);
 
-  target_fetch_registers (regcache, tdep->fsbase_regnum + 1);
+  target_fetch_registers (regcache, I386_GSBASE_REGNUM);
 
   ULONGEST gsbase;
-  if (regcache->cooked_read (tdep->fsbase_regnum + 1, &gsbase) != REG_VALID)
+  if (regcache->cooked_read (I386_GSBASE_REGNUM, &gsbase) != REG_VALID)
     error (_("Unable to fetch %%gsbase"));
 
   CORE_ADDR dtv_addr = gsbase + gdbarch_ptr_bit (gdbarch) / 8;