2003-07-17 Elena Zannoni <ezannoni@redhat.com>
* Makefile.in (x86-64-linux-nat.o): Update dependencies. * x86-64-linux-nat.c (ps_get_thread_area): New function. Add include of asm/prctl.h, asm/ptrace.h, and gdb_proc_service.h.
This commit is contained in:
parent
5c7556e871
commit
c43af07cc8
@ -1,3 +1,9 @@
|
||||
2003-07-17 Elena Zannoni <ezannoni@redhat.com>
|
||||
|
||||
* Makefile.in (x86-64-linux-nat.o): Update dependencies.
|
||||
* x86-64-linux-nat.c (ps_get_thread_area): New function. Add
|
||||
include of asm/prctl.h, asm/ptrace.h, and gdb_proc_service.h.
|
||||
|
||||
2003-07-16 Theodore A. Roth <troth@openavr.org>
|
||||
|
||||
* avr-tdep.c (avr_skip_prologue): Return PC unchanged if no prologue
|
||||
|
@ -2374,7 +2374,7 @@ wince.o: wince.c $(defs_h) $(frame_h) $(inferior_h) $(target_h) $(gdbcore_h) \
|
||||
wrapper.o: wrapper.c $(defs_h) $(value_h) $(wrapper_h)
|
||||
x86-64-linux-nat.o: x86-64-linux-nat.c $(defs_h) $(inferior_h) $(gdbcore_h) \
|
||||
$(regcache_h) $(gdb_assert_h) $(gdb_string_h) $(gregset_h) \
|
||||
$(x86_64_tdep_h)
|
||||
$(x86_64_tdep_h) $(gdb_proc_service_h)
|
||||
x86-64-linux-tdep.o: x86-64-linux-tdep.c $(defs_h) $(inferior_h) $(gdbcore_h) \
|
||||
$(regcache_h) $(osabi_h) $(gdb_string_h) $(x86_64_tdep_h)
|
||||
x86-64-tdep.o: x86-64-tdep.c $(defs_h) \
|
||||
|
@ -32,7 +32,17 @@
|
||||
#include <sys/debugreg.h>
|
||||
#include <sys/syscall.h>
|
||||
#include <sys/procfs.h>
|
||||
#include <asm/prctl.h>
|
||||
/* FIXME ezannoni-2003-07-09: we need <sys/reg.h> to be included after
|
||||
<asm/ptrace.h> because the latter redefines FS and GS for no apparent
|
||||
reason, and those definitions don't match the ones that libpthread_db
|
||||
uses, which come from <sys/reg.h>. */
|
||||
/* ezannoni-2003-07-09: I think this is fixed. The extraneous defs have
|
||||
been removed from ptrace.h in the kernel. However, better safe than
|
||||
sorry. */
|
||||
#include <asm/ptrace.h>
|
||||
#include <sys/reg.h>
|
||||
#include "gdb_proc_service.h"
|
||||
|
||||
/* Prototypes for supply_gregset etc. */
|
||||
#include "gregset.h"
|
||||
@ -306,3 +316,34 @@ x86_64_linux_dr_get_status (void)
|
||||
{
|
||||
return x86_64_linux_dr_get (DR_STATUS);
|
||||
}
|
||||
|
||||
extern ps_err_e
|
||||
ps_get_thread_area (const struct ps_prochandle *ph,
|
||||
lwpid_t lwpid, int idx, void **base)
|
||||
{
|
||||
|
||||
/* This definition comes from prctl.h, but some kernels may not have it. */
|
||||
#ifndef PTRACE_ARCH_PRCTL
|
||||
#define PTRACE_ARCH_PRCTL 30
|
||||
#endif
|
||||
|
||||
/* FIXME: ezannoni-2003-07-09 see comment above about include file order.
|
||||
We could be getting bogus values for these two. */
|
||||
gdb_assert (FS < ELF_NGREG);
|
||||
gdb_assert (GS < ELF_NGREG);
|
||||
switch (idx)
|
||||
{
|
||||
case FS:
|
||||
if (ptrace (PTRACE_ARCH_PRCTL, lwpid, base, ARCH_GET_FS) == 0)
|
||||
return PS_OK;
|
||||
break;
|
||||
case GS:
|
||||
if (ptrace (PTRACE_ARCH_PRCTL, lwpid, base, ARCH_GET_GS) == 0)
|
||||
return PS_OK;
|
||||
break;
|
||||
default: /* Should not happen. */
|
||||
return PS_BADADDR;
|
||||
}
|
||||
return PS_ERR; /* ptrace failed. */
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user