From 92a4cba76076ce1aa0efa7b859708e057c2a757f Mon Sep 17 00:00:00 2001 From: Andreas Schwab Date: Thu, 12 Jul 2018 09:24:36 +0200 Subject: [PATCH] RISC-V: Don't use ps_get_thread_area in libthread_db (bug 23402) 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 | 5 +++++ sysdeps/riscv/nptl/tls.h | 5 +++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1300491..c8a1b70 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2018-08-06 Andreas Schwab + + * sysdeps/riscv/nptl/tls.h (DB_THREAD_SELF): Use REGISTER instead + of CONST_THREAD_AREA. + 2018-08-06 H.J. Lu * sysdeps/x86/cpu-features.h (STATE_SAVE_OFFSET): Removed. diff --git a/sysdeps/riscv/nptl/tls.h b/sysdeps/riscv/nptl/tls.h index 7745d59..79383e9 100644 --- a/sysdeps/riscv/nptl/tls.h +++ b/sysdeps/riscv/nptl/tls.h @@ -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) \ -- 2.7.4