diff options
Diffstat (limited to 'nptl_db')
-rw-r--r-- | nptl_db/ChangeLog | 6 | ||||
-rw-r--r-- | nptl_db/td_symbol_list.c | 2 | ||||
-rw-r--r-- | nptl_db/td_ta_map_lwp2thr.c | 7 |
3 files changed, 13 insertions, 2 deletions
diff --git a/nptl_db/ChangeLog b/nptl_db/ChangeLog new file mode 100644 index 0000000000..5d3fd84a0b --- /dev/null +++ b/nptl_db/ChangeLog @@ -0,0 +1,6 @@ +2002-12-02 Roland McGrath <roland@redhat.com> + + * td_symbol_list.c (symbol_list_arr): pthread_keys -> __pthread_keys + + * td_ta_map_lwp2thr.c (td_ta_map_lwp2thr): Fetch inferior registers to + see its %gs value, not our own. diff --git a/nptl_db/td_symbol_list.c b/nptl_db/td_symbol_list.c index 1be7001d85..f6ba91794a 100644 --- a/nptl_db/td_symbol_list.c +++ b/nptl_db/td_symbol_list.c @@ -30,7 +30,7 @@ static const char *symbol_list_arr[] = [SYM_PTHREAD_NTHREADS] = "nptl_nthreads", [SYM_PTHREAD_STACK_USED] = "stack_used", [SYM_PTHREAD_STACK_USER] = "__stack_user", - [SYM_PTHREAD_KEYS] = "pthread_keys", + [SYM_PTHREAD_KEYS] = "__pthread_keys", [SYM_PTHREAD_KEYS_MAX] = "__pthread_pthread_keys_max", [SYM_PTHREAD_SIZEOF_DESCR] = "__pthread_pthread_sizeof_descr", [SYM_PTHREAD_CREATE_EVENT] = "__nptl_create_event", diff --git a/nptl_db/td_ta_map_lwp2thr.c b/nptl_db/td_ta_map_lwp2thr.c index 326b9ee92a..2097194837 100644 --- a/nptl_db/td_ta_map_lwp2thr.c +++ b/nptl_db/td_ta_map_lwp2thr.c @@ -20,6 +20,7 @@ #include "thread_dbP.h" #include <tls.h> +#include <sys/reg.h> td_err_e @@ -31,8 +32,12 @@ td_ta_map_lwp2thr (const td_thragent_t *ta, lwpid_t lwpid, td_thrhandle_t *th) if (! ta_ok (ta)) return TD_BADTA; + prgregset_t regs; + if (ps_lgetregs (ta->ph, lwpid, regs) != PS_OK) + return TD_ERR; + /* Get the thread area for the addressed thread. */ - if (ps_get_thread_area (ta->ph, lwpid, TLS_GET_GS () >> 3, &th->th_unique) + if (ps_get_thread_area (ta->ph, lwpid, regs[GS] >> 3, &th->th_unique) != PS_OK) return TD_ERR; /* XXX Other error value? */ |