Add support for NetBSD threads in m68k-bsd-nat.c
NetBSD ptrace(2) accepts thread id (LWP) as the 4th argument for threads. gdb/ChangeLog: * m68k-bsd-nat.c (fetch_registers): New variable lwp and pass it to the ptrace call. * m68k-bsd-nat.c (store_registers): Likewise.
This commit is contained in:
parent
bc10778499
commit
154151a6e3
@ -1,3 +1,9 @@
|
|||||||
|
2020-03-14 Kamil Rytarowski <n54@gmx.com>
|
||||||
|
|
||||||
|
* m68k-bsd-nat.c (fetch_registers): New variable lwp and pass
|
||||||
|
it to the ptrace call.
|
||||||
|
* m68k-bsd-nat.c (store_registers): Likewise.
|
||||||
|
|
||||||
2020-03-14 Kamil Rytarowski <n54@gmx.com>
|
2020-03-14 Kamil Rytarowski <n54@gmx.com>
|
||||||
|
|
||||||
* m68k-bsd-nat.c (m68kbsd_supply_gregset): Change type of regs to
|
* m68k-bsd-nat.c (m68kbsd_supply_gregset): Change type of regs to
|
||||||
|
@ -121,12 +121,13 @@ void
|
|||||||
m68k_bsd_nat_target::fetch_registers (struct regcache *regcache, int regnum)
|
m68k_bsd_nat_target::fetch_registers (struct regcache *regcache, int regnum)
|
||||||
{
|
{
|
||||||
pid_t pid = regcache->ptid ().pid ();
|
pid_t pid = regcache->ptid ().pid ();
|
||||||
|
int lwp = regcache->ptid ().lwp ();
|
||||||
|
|
||||||
if (regnum == -1 || m68kbsd_gregset_supplies_p (regnum))
|
if (regnum == -1 || m68kbsd_gregset_supplies_p (regnum))
|
||||||
{
|
{
|
||||||
struct reg regs;
|
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"));
|
perror_with_name (_("Couldn't get registers"));
|
||||||
|
|
||||||
m68kbsd_supply_gregset (regcache, ®s);
|
m68kbsd_supply_gregset (regcache, ®s);
|
||||||
@ -136,7 +137,7 @@ m68k_bsd_nat_target::fetch_registers (struct regcache *regcache, int regnum)
|
|||||||
{
|
{
|
||||||
struct fpreg fpregs;
|
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"));
|
perror_with_name (_("Couldn't get floating point status"));
|
||||||
|
|
||||||
m68kbsd_supply_fpregset (regcache, &fpregs);
|
m68kbsd_supply_fpregset (regcache, &fpregs);
|
||||||
@ -150,17 +151,18 @@ void
|
|||||||
m68k_bsd_nat_target::store_registers (struct regcache *regcache, int regnum)
|
m68k_bsd_nat_target::store_registers (struct regcache *regcache, int regnum)
|
||||||
{
|
{
|
||||||
pid_t pid = regcache->ptid ().pid ();
|
pid_t pid = regcache->ptid ().pid ();
|
||||||
|
int lwp = regcache->ptid ().lwp ();
|
||||||
|
|
||||||
if (regnum == -1 || m68kbsd_gregset_supplies_p (regnum))
|
if (regnum == -1 || m68kbsd_gregset_supplies_p (regnum))
|
||||||
{
|
{
|
||||||
struct reg regs;
|
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"));
|
perror_with_name (_("Couldn't get registers"));
|
||||||
|
|
||||||
m68kbsd_collect_gregset (regcache, ®s, regnum);
|
m68kbsd_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"));
|
perror_with_name (_("Couldn't write registers"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -168,12 +170,12 @@ m68k_bsd_nat_target::store_registers (struct regcache *regcache, int regnum)
|
|||||||
{
|
{
|
||||||
struct fpreg fpregs;
|
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"));
|
perror_with_name (_("Couldn't get floating point status"));
|
||||||
|
|
||||||
m68kbsd_collect_fpregset (regcache, &fpregs, regnum);
|
m68kbsd_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"));
|
perror_with_name (_("Couldn't write floating point status"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user