summaryrefslogtreecommitdiff
path: root/devel/gdb/files/commit-c13566fdd57
blob: 085834f0f243e67a7ee926ae99839eb07e768835 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
commit 7995cf839e5c608372e78f8bd5f6d120803a4e63
Author: John Baldwin <jhb@FreeBSD.org>
Date:   Fri Apr 1 13:16:46 2022 -0700

    Use I386_GSBASE_REGNUM in i386fbsd_get_thread_local_address.
    
    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.
    
    (cherry picked from commit c13566fdd5725d4c337a2741be02c12c4f430022)

diff --git a/gdb/i386-fbsd-tdep.c b/gdb/i386-fbsd-tdep.c
index fad091f8472..d50f35707ee 100644
--- gdb/i386-fbsd-tdep.c
+++ gdb/i386-fbsd-tdep.c
@@ -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;