]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
RISC-V: Don't use ps_get_thread_area in libthread_db (bug 23402)
authorAndreas Schwab <schwab@suse.de>
Thu, 12 Jul 2018 07:24:36 +0000 (09:24 +0200)
committerPalmer Dabbelt <palmer@sifive.com>
Mon, 6 Aug 2018 19:51:59 +0000 (12:51 -0700)
Since RISC-V stores the thread pointer in a general register libthread_db
can just ask the debugger for the register contents instead of trying to
call ps_get_thread_area.  This enables thread debugging in gdb.

* sysdeps/riscv/nptl/tls.h (DB_THREAD_SELF): Use REGISTER instead
of CONST_THREAD_AREA.

ChangeLog
sysdeps/riscv/nptl/tls.h

index 1300491719469ac468338665836c544855fd1d06..c8a1b706197b2ac65678f7786d0faf510bd9f9a7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2018-08-06  Andreas Schwab  <schwab@suse.de>
+
+       * sysdeps/riscv/nptl/tls.h (DB_THREAD_SELF): Use REGISTER instead
+       of CONST_THREAD_AREA.
+
 2018-08-06  H.J. Lu  <hongjiu.lu@intel.com>
 
        * sysdeps/x86/cpu-features.h (STATE_SAVE_OFFSET): Removed.
index 7745d59044559e79e9a2e095c8caed21d425b550..79383e97f1a73b5b9f2fe28a45ff191f4b6501b7 100644 (file)
@@ -99,9 +99,10 @@ typedef struct
 # define TLS_DEFINE_INIT_TP(tp, pd) \
   void *tp = (void *) (pd) + TLS_TCB_OFFSET + TLS_PRE_TCB_SIZE
 
-/* Magic for libthread_db to know how to do THREAD_SELF.  */
+/* Informs libthread_db that the thread pointer is register 4, which is used
+ * to know how to do THREAD_SELF.  */
 # define DB_THREAD_SELF \
-  CONST_THREAD_AREA (32, TLS_TCB_OFFSET + TLS_PRE_TCB_SIZE)
+  REGISTER (64, 64, 4 * 8, - TLS_TCB_OFFSET - TLS_PRE_TCB_SIZE)
 
 /* Access to data in the thread descriptor is easy.  */
 # define THREAD_GETMEM(descr, member) \