openbsd-ports/devel/gdb/patches/patch-gdb_alphabsd-nat_c
jca 1359409257 Fix register handling of multithreaded programs on !(x86) platforms.
Initially implemented by jhb@freebsd for i386 and amd64: replace ptid_get_pid
by get_ptrace_pid when fetching / setting registers.  The latter does the
right thing with multiple threads.

Issue reported by guenther@ plus a few users.  ok pascal@ (maintainer)
2016-09-03 13:48:39 +00:00

54 lines
2.1 KiB
Plaintext

$OpenBSD: patch-gdb_alphabsd-nat_c,v 1.1 2016/09/03 13:48:39 jca Exp $
--- gdb/alphabsd-nat.c.orig Wed Feb 10 04:19:39 2016
+++ gdb/alphabsd-nat.c Sat May 14 22:54:35 2016
@@ -91,7 +91,7 @@ alphabsd_fetch_inferior_registers (struct target_ops *
{
struct reg gregs;
- if (ptrace (PT_GETREGS, ptid_get_pid (inferior_ptid),
+ if (ptrace (PT_GETREGS, get_ptrace_pid (inferior_ptid),
(PTRACE_TYPE_ARG3) &gregs, 0) == -1)
perror_with_name (_("Couldn't get registers"));
@@ -105,7 +105,7 @@ alphabsd_fetch_inferior_registers (struct target_ops *
{
struct fpreg fpregs;
- if (ptrace (PT_GETFPREGS, ptid_get_pid (inferior_ptid),
+ if (ptrace (PT_GETFPREGS, get_ptrace_pid (inferior_ptid),
(PTRACE_TYPE_ARG3) &fpregs, 0) == -1)
perror_with_name (_("Couldn't get floating point status"));
@@ -123,13 +123,13 @@ alphabsd_store_inferior_registers (struct target_ops *
if (regno == -1 || getregs_supplies (regno))
{
struct reg gregs;
- if (ptrace (PT_GETREGS, ptid_get_pid (inferior_ptid),
+ if (ptrace (PT_GETREGS, get_ptrace_pid (inferior_ptid),
(PTRACE_TYPE_ARG3) &gregs, 0) == -1)
perror_with_name (_("Couldn't get registers"));
alphabsd_fill_reg (regcache, (char *) &gregs, regno);
- if (ptrace (PT_SETREGS, ptid_get_pid (inferior_ptid),
+ if (ptrace (PT_SETREGS, get_ptrace_pid (inferior_ptid),
(PTRACE_TYPE_ARG3) &gregs, 0) == -1)
perror_with_name (_("Couldn't write registers"));
@@ -142,13 +142,13 @@ alphabsd_store_inferior_registers (struct target_ops *
{
struct fpreg fpregs;
- if (ptrace (PT_GETFPREGS, ptid_get_pid (inferior_ptid),
+ if (ptrace (PT_GETFPREGS, get_ptrace_pid (inferior_ptid),
(PTRACE_TYPE_ARG3) &fpregs, 0) == -1)
perror_with_name (_("Couldn't get floating point status"));
alphabsd_fill_fpreg (regcache, (char *) &fpregs, regno);
- if (ptrace (PT_SETFPREGS, ptid_get_pid (inferior_ptid),
+ if (ptrace (PT_SETFPREGS, get_ptrace_pid (inferior_ptid),
(PTRACE_TYPE_ARG3) &fpregs, 0) == -1)
perror_with_name (_("Couldn't write floating point status"));
}