* mips-linux-nat.c: Include "gdb_proc_service.h".

(PTRACE_GET_THREAD_AREA): Define.
	(ps_get_thread_area): New.
	* Makefile.in (mips-linux-nat.o): Update.
This commit is contained in:
Daniel Jacobowitz 2006-03-15 16:08:24 +00:00
parent 7123df0e80
commit dc60ece87d
3 changed files with 33 additions and 2 deletions

View File

@ -1,3 +1,10 @@
2006-03-15 Daniel Jacobowitz <dan@codesourcery.com>
* mips-linux-nat.c: Include "gdb_proc_service.h".
(PTRACE_GET_THREAD_AREA): Define.
(ps_get_thread_area): New.
* Makefile.in (mips-linux-nat.o): Update.
2006-03-13 Jim Blandy <jimb@codesourcery.com>
* MAINTAINERS: Use my work address.

View File

@ -2295,7 +2295,7 @@ mips64obsd-tdep.o: mips64obsd-tdep.c $(defs_h) $(osabi_h) $(regcache_h) \
$(gdb_string_h) $(mips_tdep_h) $(solib_svr4_h)
mips-irix-tdep.o: mips-irix-tdep.c $(defs_h) $(osabi_h) $(elf_bfd_h)
mips-linux-nat.o: mips-linux-nat.c $(defs_h) $(mips_tdep_h) $(target_h) \
$(linux_nat_h)
$(linux_nat_h) $(gdb_proc_service_h)
mips-linux-tdep.o: mips-linux-tdep.c $(defs_h) $(gdbcore_h) $(target_h) \
$(solib_svr4_h) $(osabi_h) $(mips_tdep_h) $(gdb_string_h) \
$(gdb_assert_h) $(frame_h) $(regcache_h) $(trad_frame_h) \

View File

@ -1,6 +1,7 @@
/* Native-dependent code for GNU/Linux on MIPS processors.
Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006
Free Software Foundation, Inc.
This file is part of GDB.
@ -24,6 +25,12 @@
#include "target.h"
#include "linux-nat.h"
#include "gdb_proc_service.h"
#ifndef PTRACE_GET_THREAD_AREA
#define PTRACE_GET_THREAD_AREA 25
#endif
/* Pseudo registers can not be read. ptrace does not provide a way to
read (or set) MIPS_PS_REGNUM, and there's no point in reading or
setting MIPS_ZERO_REGNUM. We also can not set BADVADDR, CAUSE, or
@ -65,6 +72,23 @@ mips_linux_cannot_store_register (int regno)
return 1;
}
/* 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;
}
void _initialize_mips_linux_nat (void);
void