Use LWP IDs with ptrace register requests on FreeBSD.

This allows gdb to fetch per-thread registers for multi-threaded FreeBSD
processes.

Export get_ptrace_pid() from inf-ptrace.c and use it to determine the PID
to pass to ptrace in pan-BSD native targets.  NetBSD and OpenBSD also accept
LWP IDs for ptrace requests to fetch per-thread state.

gdb/ChangeLog:

	* amd64bsd-nat.c (amd64bsd_fetch_inferior_registers): Use
	get_ptrace_pid.
	(amd64bsd_store_inferior_registers): Use get_ptrace_pid.
	(amd64bsd_dr_get): Use get_ptrace_pid.
	(amd64bsd_dr_set): Use get_ptrace_pid.
	* i386bsd-nat.c (i386bsd_fetch_inferior_registers): Use get_ptrace_pid.
	(i386bsd_store_inferior_registers): Use get_ptrace_pid.
	(i386bsd_dr_get): Use get_ptrace_pid.
	(i386bsd_dr_set): Use get_ptrace_pid.
	* inf-ptrace.c (get_ptrace_pid): Export.
	* inf-ptrace.h (get_ptrace_pid): Declare.
	* ppcfbsd-nat.c (ppcfbsd_fetch_inferior_registers): Use lwp id.
	(ppcfbsd_store_inferior_registers): Use lwp id.
This commit is contained in:
John Baldwin
2016-01-15 12:21:07 -08:00
parent 791174281c
commit 94309df7aa
6 changed files with 55 additions and 34 deletions

View File

@@ -304,7 +304,7 @@ inf_ptrace_interrupt (struct target_ops *self, ptid_t ptid)
/* Return which PID to pass to ptrace in order to observe/control the
tracee identified by PTID. */
static pid_t
pid_t
get_ptrace_pid (ptid_t ptid)
{
pid_t pid;