mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-09 04:21:49 +08:00
Add support for NetBSD threads in hppa-nbsd-nat.c
NetBSD ptrace(2) accepts thread id (LWP) as the 4th argument for threads. gdb/ChangeLog: * hppa-nbsd-nat.c (fetch_registers): New variable lwp and pass it to the ptrace call. * (store_registers): Likewise.
This commit is contained in:
parent
0dd7b8f788
commit
4a90f06205
@ -1,4 +1,10 @@
|
||||
2020-03-12 Kamil Rytarowski <n54@gmx.com>
|
||||
2020-03-20 Kamil Rytarowski <n54@gmx.com>
|
||||
|
||||
* hppa-nbsd-nat.c (fetch_registers): New variable lwp and pass
|
||||
it to the ptrace call.
|
||||
* (store_registers): Likewise.
|
||||
|
||||
2020-03-20 Kamil Rytarowski <n54@gmx.com>
|
||||
|
||||
* ppc-nbsd-nat.c (fetch_registers): New variable lwp and pass
|
||||
it to the ptrace call.
|
||||
|
@ -171,12 +171,13 @@ hppa_nbsd_nat_target::fetch_registers (struct regcache *regcache, int regnum)
|
||||
|
||||
{
|
||||
pid_t pid = regcache->ptid ().pid ();
|
||||
int lwp = regcache->ptid ().lwp ();
|
||||
|
||||
if (regnum == -1 || hppanbsd_gregset_supplies_p (regnum))
|
||||
{
|
||||
struct reg regs;
|
||||
|
||||
if (ptrace (PT_GETREGS, pid, (PTRACE_TYPE_ARG3) ®s, 0) == -1)
|
||||
if (ptrace (PT_GETREGS, pid, (PTRACE_TYPE_ARG3) ®s, lwp) == -1)
|
||||
perror_with_name (_("Couldn't get registers"));
|
||||
|
||||
hppanbsd_supply_gregset (regcache, ®s);
|
||||
@ -186,7 +187,7 @@ hppa_nbsd_nat_target::fetch_registers (struct regcache *regcache, int regnum)
|
||||
{
|
||||
struct fpreg fpregs;
|
||||
|
||||
if (ptrace (PT_GETFPREGS, pid, (PTRACE_TYPE_ARG3) &fpregs, 0) == -1)
|
||||
if (ptrace (PT_GETFPREGS, pid, (PTRACE_TYPE_ARG3) &fpregs, lwp) == -1)
|
||||
perror_with_name (_("Couldn't get floating point status"));
|
||||
|
||||
hppanbsd_supply_fpregset (regcache, &fpregs);
|
||||
@ -200,17 +201,18 @@ void
|
||||
hppa_nbsd_nat_target::store_registers (struct regcache *regcache, int regnum)
|
||||
{
|
||||
pid_t pid = regcache->ptid ().pid ();
|
||||
int lwp = regcache->ptid ().lwp ();
|
||||
|
||||
if (regnum == -1 || hppanbsd_gregset_supplies_p (regnum))
|
||||
{
|
||||
struct reg regs;
|
||||
|
||||
if (ptrace (PT_GETREGS, pid, (PTRACE_TYPE_ARG3) ®s, 0) == -1)
|
||||
if (ptrace (PT_GETREGS, pid, (PTRACE_TYPE_ARG3) ®s, lwp) == -1)
|
||||
perror_with_name (_("Couldn't get registers"));
|
||||
|
||||
hppanbsd_collect_gregset (regcache, ®s, regnum);
|
||||
|
||||
if (ptrace (PT_SETREGS, pid, (PTRACE_TYPE_ARG3) ®s, 0) == -1)
|
||||
if (ptrace (PT_SETREGS, pid, (PTRACE_TYPE_ARG3) ®s, lwp) == -1)
|
||||
perror_with_name (_("Couldn't write registers"));
|
||||
}
|
||||
|
||||
@ -218,12 +220,12 @@ hppa_nbsd_nat_target::store_registers (struct regcache *regcache, int regnum)
|
||||
{
|
||||
struct fpreg fpregs;
|
||||
|
||||
if (ptrace (PT_GETFPREGS, pid, (PTRACE_TYPE_ARG3) &fpregs, 0) == -1)
|
||||
if (ptrace (PT_GETFPREGS, pid, (PTRACE_TYPE_ARG3) &fpregs, lwp) == -1)
|
||||
perror_with_name (_("Couldn't get floating point status"));
|
||||
|
||||
hppanbsd_collect_fpregset (regcache, &fpregs, regnum);
|
||||
|
||||
if (ptrace (PT_SETFPREGS, pid, (PTRACE_TYPE_ARG3) &fpregs, 0) == -1)
|
||||
if (ptrace (PT_SETFPREGS, pid, (PTRACE_TYPE_ARG3) &fpregs, lwp) == -1)
|
||||
perror_with_name (_("Couldn't write floating point status"));
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user