diff options
author | Kamil Rytarowski <n54@gmx.com> | 2020-03-14 15:44:28 +0100 |
---|---|---|
committer | Kamil Rytarowski <n54@gmx.com> | 2020-03-14 15:44:28 +0100 |
commit | 75c56d3d1298de72aa67555f2c723a80b4818e04 (patch) | |
tree | b0b794b163b77992b715b9c86426b116ef5b107b | |
parent | 6018d381a00515933016c539d2fdc18ad0d304b8 (diff) | |
download | gdb-75c56d3d1298de72aa67555f2c723a80b4818e04.zip gdb-75c56d3d1298de72aa67555f2c723a80b4818e04.tar.gz gdb-75c56d3d1298de72aa67555f2c723a80b4818e04.tar.bz2 |
Add support for NetBSD threads in arm-nbsd-nat.c
NetBSD ptrace(2) accepts thread id (LWP) as the 4th argument for threads.
gdb/ChangeLog:
* arm-nbsd-nat.c (fetch_register): New variable lwp and pass
it to the ptrace call.
* arm-nbsd-nat.c (fetch_fp_register): Likewise.
* arm-nbsd-nat.c (fetch_fp_regs): Likewise.
* arm-nbsd-nat.c (store_register): Likewise.
* arm-nbsd-nat.c (store_regs): Likewise.
* arm-nbsd-nat.c (store_fp_register): Likewise.
* arm-nbsd-nat.c (store_fp_regs): Likewise.
-rw-r--r-- | gdb/ChangeLog | 11 | ||||
-rw-r--r-- | gdb/arm-nbsd-nat.c | 26 |
2 files changed, 28 insertions, 9 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 66ef062..10f52eb 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,16 @@ 2020-03-14 Kamil Rytarowski <n54@gmx.com> + * arm-nbsd-nat.c (fetch_register): New variable lwp and pass + it to the ptrace call. + * arm-nbsd-nat.c (fetch_fp_register): Likewise. + * arm-nbsd-nat.c (fetch_fp_regs): Likewise. + * arm-nbsd-nat.c (store_register): Likewise. + * arm-nbsd-nat.c (store_regs): Likewise. + * arm-nbsd-nat.c (store_fp_register): Likewise. + * arm-nbsd-nat.c (store_fp_regs): Likewise. + +2020-03-14 Kamil Rytarowski <n54@gmx.com> + * arm-nbsd-nat.c (arm_netbsd_nat_target): Inherit from nbsd_nat_target instead of inf_ptrace_target. * arm-nbsd-nat.c: Include "nbsd-nat.h", as we are now using diff --git a/gdb/arm-nbsd-nat.c b/gdb/arm-nbsd-nat.c index e7cd236..a8a67e6 100644 --- a/gdb/arm-nbsd-nat.c +++ b/gdb/arm-nbsd-nat.c @@ -66,9 +66,10 @@ fetch_register (struct regcache *regcache, int regno) { struct reg inferior_registers; int ret; + int lwp = regcache->ptid ().lwp (); ret = ptrace (PT_GETREGS, regcache->ptid ().pid (), - (PTRACE_TYPE_ARG3) &inferior_registers, 0); + (PTRACE_TYPE_ARG3) &inferior_registers, lwp); if (ret < 0) { @@ -83,8 +84,10 @@ static void fetch_fp_register (struct regcache *regcache, int regno) { struct fpreg inferior_fp_registers; + int lwp = regcache->ptid ().lwp (); + int ret = ptrace (PT_GETFPREGS, regcache->ptid ().pid (), - (PTRACE_TYPE_ARG3) &inferior_fp_registers, 0); + (PTRACE_TYPE_ARG3) &inferior_fp_registers, lwp); struct vfpreg &vfp = inferior_fp_registers.fpr_vfp; @@ -111,11 +114,12 @@ static void fetch_fp_regs (struct regcache *regcache) { struct fpreg inferior_fp_registers; + int lwp = regcache->ptid ().lwp (); int ret; int regno; ret = ptrace (PT_GETFPREGS, regcache->ptid ().pid (), - (PTRACE_TYPE_ARG3) &inferior_fp_registers, 0); + (PTRACE_TYPE_ARG3) &inferior_fp_registers, lwp); if (ret < 0) { @@ -149,10 +153,11 @@ store_register (const struct regcache *regcache, int regno) { struct gdbarch *gdbarch = regcache->arch (); struct reg inferior_registers; + int lwp = regcache->ptid ().lwp (); int ret; ret = ptrace (PT_GETREGS, regcache->ptid ().pid (), - (PTRACE_TYPE_ARG3) &inferior_registers, 0); + (PTRACE_TYPE_ARG3) &inferior_registers, lwp); if (ret < 0) { @@ -210,7 +215,7 @@ store_register (const struct regcache *regcache, int regno) } ret = ptrace (PT_SETREGS, regcache->ptid ().pid (), - (PTRACE_TYPE_ARG3) &inferior_registers, 0); + (PTRACE_TYPE_ARG3) &inferior_registers, lwp); if (ret < 0) warning (_("unable to write register %d to inferior"), regno); @@ -221,6 +226,7 @@ store_regs (const struct regcache *regcache) { struct gdbarch *gdbarch = regcache->arch (); struct reg inferior_registers; + int lwp = regcache->ptid ().lwp (); int ret; int regno; @@ -252,7 +258,7 @@ store_regs (const struct regcache *regcache) } ret = ptrace (PT_SETREGS, regcache->ptid ().pid (), - (PTRACE_TYPE_ARG3) &inferior_registers, 0); + (PTRACE_TYPE_ARG3) &inferior_registers, lwp); if (ret < 0) warning (_("unable to store general registers")); @@ -262,8 +268,9 @@ static void store_fp_register (const struct regcache *regcache, int regno) { struct fpreg inferior_fp_registers; + int lwp = regcache->ptid ().lwp (); int ret = ptrace (PT_GETFPREGS, regcache->ptid ().pid (), - (PTRACE_TYPE_ARG3) &inferior_fp_registers, 0); + (PTRACE_TYPE_ARG3) &inferior_fp_registers, lwp); struct vfpreg &vfp = inferior_fp_registers.fpr_vfp; if (ret < 0) @@ -285,7 +292,7 @@ store_fp_register (const struct regcache *regcache, int regno) warning (_("Invalid register number.")); ret = ptrace (PT_SETFPREGS, regcache->ptid ().pid (), - (PTRACE_TYPE_ARG3) &inferior_fp_registers, 0); + (PTRACE_TYPE_ARG3) &inferior_fp_registers, lwp); if (ret < 0) warning (_("unable to write register %d to inferior"), regno); @@ -295,6 +302,7 @@ static void store_fp_regs (const struct regcache *regcache) { struct gdbarch_tdep *tdep = gdbarch_tdep (regcache->arch ()); + int lwp = regcache->ptid ().lwp (); if (tdep->vfp_register_count == 0) return; @@ -307,7 +315,7 @@ store_fp_regs (const struct regcache *regcache) (char *) &fpregs.fpr_vfp.vfp_fpscr); int ret = ptrace (PT_SETFPREGS, regcache->ptid ().pid (), - (PTRACE_TYPE_ARG3) &fpregs, 0); + (PTRACE_TYPE_ARG3) &fpregs, lwp); if (ret < 0) warning (_("unable to store floating-point registers")); |