Switch AArch64 gdbserver ps_get_thread_area to PTRACE_GETREGSET.

2013-02-06  Marcus Shawcroft  <marcus.shawcroft@arm.com>

       * linux-aarch64-low.c (ps_get_thread_area): Replace
       PTRACE_GET_THREAD_AREA with PTRACE_GETREGSET.
This commit is contained in:
Marcus Shawcroft 2013-02-07 10:47:40 +00:00
parent 0f5f799a26
commit 55fac6e050
2 changed files with 14 additions and 3 deletions

View File

@ -1,3 +1,8 @@
2013-02-07 Marcus Shawcroft <marcus.shawcroft@arm.com>
* linux-aarch64-low.c (ps_get_thread_area): Replace
PTRACE_GET_THREAD_AREA with PTRACE_GETREGSET.
2013-02-04 Jim MacArthur <jim.macarthur@arm.com> 2013-02-04 Jim MacArthur <jim.macarthur@arm.com>
Marcus Shawcroft <marcus.shawcroft@arm.com> Marcus Shawcroft <marcus.shawcroft@arm.com>
Nigel Stephens <nigel.stephens@arm.com> Nigel Stephens <nigel.stephens@arm.com>

View File

@ -1089,16 +1089,22 @@ aarch64_stopped_by_watchpoint (void)
/* Fetch the thread-local storage pointer for libthread_db. */ /* Fetch the thread-local storage pointer for libthread_db. */
ps_err_e ps_err_e
ps_get_thread_area (const struct ps_prochandle * ph, ps_get_thread_area (const struct ps_prochandle *ph,
lwpid_t lwpid, int idx, void **base) lwpid_t lwpid, int idx, void **base)
{ {
if (ptrace (PTRACE_GET_THREAD_AREA, lwpid, NULL, base) != 0) struct iovec iovec;
uint64_t reg;
iovec.iov_base = &reg;
iovec.iov_len = sizeof (reg);
if (ptrace (PTRACE_GETREGSET, lwpid, NT_ARM_TLS, &iovec) != 0)
return PS_ERR; return PS_ERR;
/* IDX is the bias from the thread pointer to the beginning of the /* IDX is the bias from the thread pointer to the beginning of the
thread descriptor. It has to be subtracted due to implementation thread descriptor. It has to be subtracted due to implementation
quirks in libthread_db. */ quirks in libthread_db. */
*base = (void *) ((char *) *base - idx); *base = (void *) (reg - idx);
return PS_OK; return PS_OK;
} }