Message ID | 20170404190401.38028-1-jhb@FreeBSD.org |
---|---|
State | New |
Headers | show |
On 2017-04-04 15:04, John Baldwin wrote: > gdb/ChangeLog: > > * amd64-bsd-nat.c (amd64bsd_fetch_inferior_registers, > amd64bsd_store_inferior_registers): Use ptid from regcache. > --- > gdb/ChangeLog | 5 +++++ > gdb/amd64-bsd-nat.c | 32 ++++++++++++++------------------ > 2 files changed, 19 insertions(+), 18 deletions(-) > > diff --git a/gdb/ChangeLog b/gdb/ChangeLog > index fc8dbe18da..259acca1ce 100644 > --- a/gdb/ChangeLog > +++ b/gdb/ChangeLog > @@ -1,3 +1,8 @@ > +2017-04-04 John Baldwin <jhb@FreeBSD.org> > + > + * amd64-bsd-nat.c (amd64bsd_fetch_inferior_registers, > + amd64bsd_store_inferior_registers): Use ptid from regcache. > + > 2017-04-04 Simon Marchi <simon.marchi@polymtl.ca> > > * remote.c (set_general_thread, set_continue_thread): Use ptid_t > diff --git a/gdb/amd64-bsd-nat.c b/gdb/amd64-bsd-nat.c > index 5678e94d11..ca61a3551b 100644 > --- a/gdb/amd64-bsd-nat.c > +++ b/gdb/amd64-bsd-nat.c > @@ -43,13 +43,13 @@ amd64bsd_fetch_inferior_registers (struct > target_ops *ops, > struct regcache *regcache, int regnum) > { > struct gdbarch *gdbarch = get_regcache_arch (regcache); > + pid_t pid = get_ptrace_pid (regcache_get_ptid (regcache)); > > if (regnum == -1 || amd64_native_gregset_supplies_p (gdbarch, > regnum)) > { > struct reg regs; > > - if (ptrace (PT_GETREGS, get_ptrace_pid (inferior_ptid), > - (PTRACE_TYPE_ARG3) ®s, 0) == -1) > + if (ptrace (PT_GETREGS, pid, (PTRACE_TYPE_ARG3) ®s, 0) == -1) > perror_with_name (_("Couldn't get registers")); > > amd64_supply_native_gregset (regcache, ®s, -1); > @@ -66,8 +66,8 @@ amd64bsd_fetch_inferior_registers (struct target_ops > *ops, > if (x86bsd_xsave_len != 0) > { > xstateregs = alloca (x86bsd_xsave_len); > - if (ptrace (PT_GETXSTATE, get_ptrace_pid (inferior_ptid), > - (PTRACE_TYPE_ARG3) xstateregs, 0) == -1) > + if (ptrace (PT_GETXSTATE, pid, (PTRACE_TYPE_ARG3) xstateregs, 0) > + == -1) > perror_with_name (_("Couldn't get extended state status")); > > amd64_supply_xsave (regcache, -1, xstateregs); > @@ -75,8 +75,7 @@ amd64bsd_fetch_inferior_registers (struct target_ops > *ops, > } > #endif > > - if (ptrace (PT_GETFPREGS, get_ptrace_pid (inferior_ptid), > - (PTRACE_TYPE_ARG3) &fpregs, 0) == -1) > + if (ptrace (PT_GETFPREGS, pid, (PTRACE_TYPE_ARG3) &fpregs, 0) == > -1) > perror_with_name (_("Couldn't get floating point status")); > > amd64_supply_fxsave (regcache, -1, &fpregs); > @@ -91,19 +90,18 @@ amd64bsd_store_inferior_registers (struct > target_ops *ops, > struct regcache *regcache, int regnum) > { > struct gdbarch *gdbarch = get_regcache_arch (regcache); > + pid_t pid = get_ptrace_pid (regcache_get_ptid (regcache)); > > if (regnum == -1 || amd64_native_gregset_supplies_p (gdbarch, > regnum)) > { > struct reg regs; > > - if (ptrace (PT_GETREGS, get_ptrace_pid (inferior_ptid), > - (PTRACE_TYPE_ARG3) ®s, 0) == -1) > + if (ptrace (PT_GETREGS, pid, (PTRACE_TYPE_ARG3) ®s, 0) == -1) > perror_with_name (_("Couldn't get registers")); > > amd64_collect_native_gregset (regcache, ®s, regnum); > > - if (ptrace (PT_SETREGS, get_ptrace_pid (inferior_ptid), > - (PTRACE_TYPE_ARG3) ®s, 0) == -1) > + if (ptrace (PT_SETREGS, pid, (PTRACE_TYPE_ARG3) ®s, 0) == -1) > perror_with_name (_("Couldn't write registers")); > > if (regnum != -1) > @@ -119,27 +117,25 @@ amd64bsd_store_inferior_registers (struct > target_ops *ops, > if (x86bsd_xsave_len != 0) > { > xstateregs = alloca (x86bsd_xsave_len); > - if (ptrace (PT_GETXSTATE, get_ptrace_pid (inferior_ptid), > - (PTRACE_TYPE_ARG3) xstateregs, 0) == -1) > + if (ptrace (PT_GETXSTATE, pid, (PTRACE_TYPE_ARG3) xstateregs, 0) > + == -1) > perror_with_name (_("Couldn't get extended state status")); > > amd64_collect_xsave (regcache, regnum, xstateregs, 0); > > - if (ptrace (PT_SETXSTATE, get_ptrace_pid (inferior_ptid), > - (PTRACE_TYPE_ARG3) xstateregs, x86bsd_xsave_len) == -1) > + if (ptrace (PT_SETXSTATE, pid, (PTRACE_TYPE_ARG3) xstateregs, > + x86bsd_xsave_len) == -1) > perror_with_name (_("Couldn't write extended state status")); > return; > } > #endif > > - if (ptrace (PT_GETFPREGS, get_ptrace_pid (inferior_ptid), > - (PTRACE_TYPE_ARG3) &fpregs, 0) == -1) > + if (ptrace (PT_GETFPREGS, pid, (PTRACE_TYPE_ARG3) &fpregs, 0) == > -1) > perror_with_name (_("Couldn't get floating point status")); > > amd64_collect_fxsave (regcache, regnum, &fpregs); > > - if (ptrace (PT_SETFPREGS, get_ptrace_pid (inferior_ptid), > - (PTRACE_TYPE_ARG3) &fpregs, 0) == -1) > + if (ptrace (PT_SETFPREGS, pid, (PTRACE_TYPE_ARG3) &fpregs, 0) == > -1) > perror_with_name (_("Couldn't write floating point status")); > } > Whoops, looks like an oversight on my part. Thanks!
On Tuesday, April 04, 2017 03:29:29 PM Simon Marchi wrote: > On 2017-04-04 15:04, John Baldwin wrote: > > gdb/ChangeLog: > > > > * amd64-bsd-nat.c (amd64bsd_fetch_inferior_registers, > > amd64bsd_store_inferior_registers): Use ptid from regcache. > > --- > > gdb/ChangeLog | 5 +++++ > > gdb/amd64-bsd-nat.c | 32 ++++++++++++++------------------ > > 2 files changed, 19 insertions(+), 18 deletions(-) > > > > diff --git a/gdb/ChangeLog b/gdb/ChangeLog > > index fc8dbe18da..259acca1ce 100644 > > --- a/gdb/ChangeLog > > +++ b/gdb/ChangeLog > > @@ -1,3 +1,8 @@ > > +2017-04-04 John Baldwin <jhb@FreeBSD.org> > > + > > + * amd64-bsd-nat.c (amd64bsd_fetch_inferior_registers, > > + amd64bsd_store_inferior_registers): Use ptid from regcache. > > + > > 2017-04-04 Simon Marchi <simon.marchi@polymtl.ca> > > > > * remote.c (set_general_thread, set_continue_thread): Use ptid_t > > diff --git a/gdb/amd64-bsd-nat.c b/gdb/amd64-bsd-nat.c > > index 5678e94d11..ca61a3551b 100644 > > --- a/gdb/amd64-bsd-nat.c > > +++ b/gdb/amd64-bsd-nat.c > > @@ -43,13 +43,13 @@ amd64bsd_fetch_inferior_registers (struct > > target_ops *ops, > > struct regcache *regcache, int regnum) > > { > > struct gdbarch *gdbarch = get_regcache_arch (regcache); > > + pid_t pid = get_ptrace_pid (regcache_get_ptid (regcache)); > > > > if (regnum == -1 || amd64_native_gregset_supplies_p (gdbarch, > > regnum)) > > { > > struct reg regs; > > > > - if (ptrace (PT_GETREGS, get_ptrace_pid (inferior_ptid), > > - (PTRACE_TYPE_ARG3) ®s, 0) == -1) > > + if (ptrace (PT_GETREGS, pid, (PTRACE_TYPE_ARG3) ®s, 0) == -1) > > perror_with_name (_("Couldn't get registers")); > > > > amd64_supply_native_gregset (regcache, ®s, -1); > > @@ -66,8 +66,8 @@ amd64bsd_fetch_inferior_registers (struct target_ops > > *ops, > > if (x86bsd_xsave_len != 0) > > { > > xstateregs = alloca (x86bsd_xsave_len); > > - if (ptrace (PT_GETXSTATE, get_ptrace_pid (inferior_ptid), > > - (PTRACE_TYPE_ARG3) xstateregs, 0) == -1) > > + if (ptrace (PT_GETXSTATE, pid, (PTRACE_TYPE_ARG3) xstateregs, 0) > > + == -1) > > perror_with_name (_("Couldn't get extended state status")); > > > > amd64_supply_xsave (regcache, -1, xstateregs); > > @@ -75,8 +75,7 @@ amd64bsd_fetch_inferior_registers (struct target_ops > > *ops, > > } > > #endif > > > > - if (ptrace (PT_GETFPREGS, get_ptrace_pid (inferior_ptid), > > - (PTRACE_TYPE_ARG3) &fpregs, 0) == -1) > > + if (ptrace (PT_GETFPREGS, pid, (PTRACE_TYPE_ARG3) &fpregs, 0) == > > -1) > > perror_with_name (_("Couldn't get floating point status")); > > > > amd64_supply_fxsave (regcache, -1, &fpregs); > > @@ -91,19 +90,18 @@ amd64bsd_store_inferior_registers (struct > > target_ops *ops, > > struct regcache *regcache, int regnum) > > { > > struct gdbarch *gdbarch = get_regcache_arch (regcache); > > + pid_t pid = get_ptrace_pid (regcache_get_ptid (regcache)); > > > > if (regnum == -1 || amd64_native_gregset_supplies_p (gdbarch, > > regnum)) > > { > > struct reg regs; > > > > - if (ptrace (PT_GETREGS, get_ptrace_pid (inferior_ptid), > > - (PTRACE_TYPE_ARG3) ®s, 0) == -1) > > + if (ptrace (PT_GETREGS, pid, (PTRACE_TYPE_ARG3) ®s, 0) == -1) > > perror_with_name (_("Couldn't get registers")); > > > > amd64_collect_native_gregset (regcache, ®s, regnum); > > > > - if (ptrace (PT_SETREGS, get_ptrace_pid (inferior_ptid), > > - (PTRACE_TYPE_ARG3) ®s, 0) == -1) > > + if (ptrace (PT_SETREGS, pid, (PTRACE_TYPE_ARG3) ®s, 0) == -1) > > perror_with_name (_("Couldn't write registers")); > > > > if (regnum != -1) > > @@ -119,27 +117,25 @@ amd64bsd_store_inferior_registers (struct > > target_ops *ops, > > if (x86bsd_xsave_len != 0) > > { > > xstateregs = alloca (x86bsd_xsave_len); > > - if (ptrace (PT_GETXSTATE, get_ptrace_pid (inferior_ptid), > > - (PTRACE_TYPE_ARG3) xstateregs, 0) == -1) > > + if (ptrace (PT_GETXSTATE, pid, (PTRACE_TYPE_ARG3) xstateregs, 0) > > + == -1) > > perror_with_name (_("Couldn't get extended state status")); > > > > amd64_collect_xsave (regcache, regnum, xstateregs, 0); > > > > - if (ptrace (PT_SETXSTATE, get_ptrace_pid (inferior_ptid), > > - (PTRACE_TYPE_ARG3) xstateregs, x86bsd_xsave_len) == -1) > > + if (ptrace (PT_SETXSTATE, pid, (PTRACE_TYPE_ARG3) xstateregs, > > + x86bsd_xsave_len) == -1) > > perror_with_name (_("Couldn't write extended state status")); > > return; > > } > > #endif > > > > - if (ptrace (PT_GETFPREGS, get_ptrace_pid (inferior_ptid), > > - (PTRACE_TYPE_ARG3) &fpregs, 0) == -1) > > + if (ptrace (PT_GETFPREGS, pid, (PTRACE_TYPE_ARG3) &fpregs, 0) == > > -1) > > perror_with_name (_("Couldn't get floating point status")); > > > > amd64_collect_fxsave (regcache, regnum, &fpregs); > > > > - if (ptrace (PT_SETFPREGS, get_ptrace_pid (inferior_ptid), > > - (PTRACE_TYPE_ARG3) &fpregs, 0) == -1) > > + if (ptrace (PT_SETFPREGS, pid, (PTRACE_TYPE_ARG3) &fpregs, 0) == > > -1) > > perror_with_name (_("Couldn't write floating point status")); > > } > > > > Whoops, looks like an oversight on my part. > > Thanks! No problem. I checked the rest of the inferior_ptid's in the *bsd* files and they all seem sane? The debug register stuff uses inferior_ptid, but it also uses that on other platforms. (And I think we don't store debug registers in the register cache.)
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index fc8dbe18da..259acca1ce 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2017-04-04 John Baldwin <jhb@FreeBSD.org> + + * amd64-bsd-nat.c (amd64bsd_fetch_inferior_registers, + amd64bsd_store_inferior_registers): Use ptid from regcache. + 2017-04-04 Simon Marchi <simon.marchi@polymtl.ca> * remote.c (set_general_thread, set_continue_thread): Use ptid_t diff --git a/gdb/amd64-bsd-nat.c b/gdb/amd64-bsd-nat.c index 5678e94d11..ca61a3551b 100644 --- a/gdb/amd64-bsd-nat.c +++ b/gdb/amd64-bsd-nat.c @@ -43,13 +43,13 @@ amd64bsd_fetch_inferior_registers (struct target_ops *ops, struct regcache *regcache, int regnum) { struct gdbarch *gdbarch = get_regcache_arch (regcache); + pid_t pid = get_ptrace_pid (regcache_get_ptid (regcache)); if (regnum == -1 || amd64_native_gregset_supplies_p (gdbarch, regnum)) { struct reg regs; - if (ptrace (PT_GETREGS, get_ptrace_pid (inferior_ptid), - (PTRACE_TYPE_ARG3) ®s, 0) == -1) + if (ptrace (PT_GETREGS, pid, (PTRACE_TYPE_ARG3) ®s, 0) == -1) perror_with_name (_("Couldn't get registers")); amd64_supply_native_gregset (regcache, ®s, -1); @@ -66,8 +66,8 @@ amd64bsd_fetch_inferior_registers (struct target_ops *ops, if (x86bsd_xsave_len != 0) { xstateregs = alloca (x86bsd_xsave_len); - if (ptrace (PT_GETXSTATE, get_ptrace_pid (inferior_ptid), - (PTRACE_TYPE_ARG3) xstateregs, 0) == -1) + if (ptrace (PT_GETXSTATE, pid, (PTRACE_TYPE_ARG3) xstateregs, 0) + == -1) perror_with_name (_("Couldn't get extended state status")); amd64_supply_xsave (regcache, -1, xstateregs); @@ -75,8 +75,7 @@ amd64bsd_fetch_inferior_registers (struct target_ops *ops, } #endif - if (ptrace (PT_GETFPREGS, get_ptrace_pid (inferior_ptid), - (PTRACE_TYPE_ARG3) &fpregs, 0) == -1) + if (ptrace (PT_GETFPREGS, pid, (PTRACE_TYPE_ARG3) &fpregs, 0) == -1) perror_with_name (_("Couldn't get floating point status")); amd64_supply_fxsave (regcache, -1, &fpregs); @@ -91,19 +90,18 @@ amd64bsd_store_inferior_registers (struct target_ops *ops, struct regcache *regcache, int regnum) { struct gdbarch *gdbarch = get_regcache_arch (regcache); + pid_t pid = get_ptrace_pid (regcache_get_ptid (regcache)); if (regnum == -1 || amd64_native_gregset_supplies_p (gdbarch, regnum)) { struct reg regs; - if (ptrace (PT_GETREGS, get_ptrace_pid (inferior_ptid), - (PTRACE_TYPE_ARG3) ®s, 0) == -1) + if (ptrace (PT_GETREGS, pid, (PTRACE_TYPE_ARG3) ®s, 0) == -1) perror_with_name (_("Couldn't get registers")); amd64_collect_native_gregset (regcache, ®s, regnum); - if (ptrace (PT_SETREGS, get_ptrace_pid (inferior_ptid), - (PTRACE_TYPE_ARG3) ®s, 0) == -1) + if (ptrace (PT_SETREGS, pid, (PTRACE_TYPE_ARG3) ®s, 0) == -1) perror_with_name (_("Couldn't write registers")); if (regnum != -1) @@ -119,27 +117,25 @@ amd64bsd_store_inferior_registers (struct target_ops *ops, if (x86bsd_xsave_len != 0) { xstateregs = alloca (x86bsd_xsave_len); - if (ptrace (PT_GETXSTATE, get_ptrace_pid (inferior_ptid), - (PTRACE_TYPE_ARG3) xstateregs, 0) == -1) + if (ptrace (PT_GETXSTATE, pid, (PTRACE_TYPE_ARG3) xstateregs, 0) + == -1) perror_with_name (_("Couldn't get extended state status")); amd64_collect_xsave (regcache, regnum, xstateregs, 0); - if (ptrace (PT_SETXSTATE, get_ptrace_pid (inferior_ptid), - (PTRACE_TYPE_ARG3) xstateregs, x86bsd_xsave_len) == -1) + if (ptrace (PT_SETXSTATE, pid, (PTRACE_TYPE_ARG3) xstateregs, + x86bsd_xsave_len) == -1) perror_with_name (_("Couldn't write extended state status")); return; } #endif - if (ptrace (PT_GETFPREGS, get_ptrace_pid (inferior_ptid), - (PTRACE_TYPE_ARG3) &fpregs, 0) == -1) + if (ptrace (PT_GETFPREGS, pid, (PTRACE_TYPE_ARG3) &fpregs, 0) == -1) perror_with_name (_("Couldn't get floating point status")); amd64_collect_fxsave (regcache, regnum, &fpregs); - if (ptrace (PT_SETFPREGS, get_ptrace_pid (inferior_ptid), - (PTRACE_TYPE_ARG3) &fpregs, 0) == -1) + if (ptrace (PT_SETFPREGS, pid, (PTRACE_TYPE_ARG3) &fpregs, 0) == -1) perror_with_name (_("Couldn't write floating point status")); } }