* linux-mips-low.c: Include <sys/ptrace.h> and "gdb_proc_service.h".

(PTRACE_GET_THREAD_AREA): Define.
	(ps_get_thread_area): New function.
	* Makefile.in (linux-i386-low.o, linux-mips-low.o)
	(linux-x86-64-low.o): Update.
This commit is contained in:
Daniel Jacobowitz 2006-03-15 16:26:02 +00:00
parent 0050a760a7
commit 21b0f40c16
3 changed files with 40 additions and 4 deletions

View File

@ -1,3 +1,11 @@
2006-03-15 Daniel Jacobowitz <dan@codesourcery.com>
* linux-mips-low.c: Include <sys/ptrace.h> and "gdb_proc_service.h".
(PTRACE_GET_THREAD_AREA): Define.
(ps_get_thread_area): New function.
* Makefile.in (linux-i386-low.o, linux-mips-low.o)
(linux-x86-64-low.o): Update.
2006-03-15 Daniel Jacobowitz <dan@codesourcery.com> 2006-03-15 Daniel Jacobowitz <dan@codesourcery.com>
* configure.ac: Remove checks for prfpregset_t. * configure.ac: Remove checks for prfpregset_t.

View File

@ -272,15 +272,18 @@ linux-low.o: linux-low.c $(linux_low_h) $(server_h)
linux-arm-low.o: linux-arm-low.c $(linux_low_h) $(server_h) linux-arm-low.o: linux-arm-low.c $(linux_low_h) $(server_h)
linux-cris-low.o: linux-cris-low.c $(linux_low_h) $(server_h) linux-cris-low.o: linux-cris-low.c $(linux_low_h) $(server_h)
linux-crisv32-low.o: linux-crisv32-low.c $(linux_low_h) $(server_h) linux-crisv32-low.o: linux-crisv32-low.c $(linux_low_h) $(server_h)
linux-i386-low.o: linux-i386-low.c $(linux_low_h) $(server_h) linux-i386-low.o: linux-i386-low.c $(linux_low_h) $(server_h) \
$(gdb_proc_service_h)
linux-ia64-low.o: linux-ia64-low.c $(linux_low_h) $(server_h) linux-ia64-low.o: linux-ia64-low.c $(linux_low_h) $(server_h)
linux-m32r-low.o: linux-m32r-low.c $(linux_low_h) $(server_h) linux-m32r-low.o: linux-m32r-low.c $(linux_low_h) $(server_h)
linux-mips-low.o: linux-mips-low.c $(linux_low_h) $(server_h) linux-mips-low.o: linux-mips-low.c $(linux_low_h) $(server_h) \
$(gdb_proc_service_h)
linux-ppc-low.o: linux-ppc-low.c $(linux_low_h) $(server_h) linux-ppc-low.o: linux-ppc-low.c $(linux_low_h) $(server_h)
linux-ppc64-low.o: linux-ppc64-low.c $(linux_low_h) $(server_h) linux-ppc64-low.o: linux-ppc64-low.c $(linux_low_h) $(server_h)
linux-s390-low.o: linux-s390-low.c $(linux_low_h) $(server_h) linux-s390-low.o: linux-s390-low.c $(linux_low_h) $(server_h)
linux-sh-low.o: linux-sh-low.c $(linux_low_h) $(server_h) linux-sh-low.o: linux-sh-low.c $(linux_low_h) $(server_h)
linux-x86-64-low.o: linux-x86-64-low.c $(linux_low_h) $(server_h) linux-x86-64-low.o: linux-x86-64-low.c $(linux_low_h) $(server_h) \
$(gdb_proc_service_h)
reg-arm.o : reg-arm.c $(regdef_h) reg-arm.o : reg-arm.c $(regdef_h)
reg-arm.c : $(srcdir)/../regformats/reg-arm.dat $(regdat_sh) reg-arm.c : $(srcdir)/../regformats/reg-arm.dat $(regdat_sh)

View File

@ -1,5 +1,5 @@
/* GNU/Linux/MIPS specific low level interface, for the remote server for GDB. /* GNU/Linux/MIPS specific low level interface, for the remote server for GDB.
Copyright (C) 1995, 1996, 1998, 1999, 2000, 2001, 2002, 2005 Copyright (C) 1995, 1996, 1998, 1999, 2000, 2001, 2002, 2005, 2006
Free Software Foundation, Inc. Free Software Foundation, Inc.
This file is part of GDB. This file is part of GDB.
@ -22,6 +22,14 @@
#include "server.h" #include "server.h"
#include "linux-low.h" #include "linux-low.h"
#include <sys/ptrace.h>
#include "gdb_proc_service.h"
#ifndef PTRACE_GET_THREAD_AREA
#define PTRACE_GET_THREAD_AREA 25
#endif
#ifdef HAVE_SYS_REG_H #ifdef HAVE_SYS_REG_H
#include <sys/reg.h> #include <sys/reg.h>
#endif #endif
@ -140,6 +148,23 @@ mips_breakpoint_at (CORE_ADDR where)
return 0; return 0;
} }
/* Fetch the thread-local storage pointer for libthread_db. */
ps_err_e
ps_get_thread_area (const struct ps_prochandle *ph,
lwpid_t lwpid, int idx, void **base)
{
if (ptrace (PTRACE_GET_THREAD_AREA, lwpid, NULL, base) != 0)
return PS_ERR;
/* IDX is the bias from the thread pointer to the beginning of the
thread descriptor. It has to be subtracted due to implementation
quirks in libthread_db. */
*base = (void *) ((char *)*base - idx);
return PS_OK;
}
struct linux_target_ops the_low_target = { struct linux_target_ops the_low_target = {
mips_num_regs, mips_num_regs,
mips_regmap, mips_regmap,