On 16.03.2020 22:35, Christian Biesinger wrote: > On Sat, Mar 14, 2020 at 1:28 PM Kamil Rytarowski wrote: >> >> NetBSD ptrace(2) accepts thread id (LWP) as the 4th argument for threads. >> >> This file is still shared with other targets that use different 4th argument >> type. > > I wonder if it would be less ugly to have a function that handles this: > > inline int gdb_ptrace (...) { > #ifdef __NetBSD__ > return ptrace (..., lwp); > #else > return ptrace (..., (PTRACE_TYPE_ARG4) 0); > #endif > } > > Then call gdb_ptrace in this file. > > Thoughts? > > I will propose a similar approach, but using a preprocessor define. > > Christian > >> --- >> gdb/sparc-nat.c | 19 +++++++++++++++++-- >> 1 file changed, 17 insertions(+), 2 deletions(-) >> >> diff --git a/gdb/sparc-nat.c b/gdb/sparc-nat.c >> index dff0f521565..1e890bd8613 100644 >> --- a/gdb/sparc-nat.c >> +++ b/gdb/sparc-nat.c >> @@ -154,6 +154,12 @@ sparc_fetch_inferior_registers (struct regcache *regcache, int regnum) >> registers can be written. */ >> pid = get_ptrace_pid (regcache->ptid ()); >> >> +#ifdef __NetBSD__ >> +# define lwp regcache->ptid ().lwp () >> +#else >> +# define lwp (PTRACE_TYPE_ARG4) 0 >> +#endif >> + >> if (regnum == SPARC_G0_REGNUM) >> { >> gdb_byte zero[8] = { 0 }; >> @@ -166,7 +172,7 @@ sparc_fetch_inferior_registers (struct regcache *regcache, int regnum) >> { >> gregset_t regs; >> >> - if (ptrace (PTRACE_GETREGS, pid, (PTRACE_TYPE_ARG3) ®s, 0) == -1) >> + if (ptrace (PTRACE_GETREGS, pid, (PTRACE_TYPE_ARG3) ®s, lwp) == -1) >> perror_with_name (_("Couldn't get registers")); >> >> sparc_supply_gregset (sparc_gregmap, regcache, -1, ®s); >> @@ -178,11 +184,13 @@ sparc_fetch_inferior_registers (struct regcache *regcache, int regnum) >> { >> fpregset_t fpregs; >> >> - if (ptrace (PTRACE_GETFPREGS, pid, (PTRACE_TYPE_ARG3) &fpregs, 0) == -1) >> + if (ptrace (PTRACE_GETFPREGS, pid, (PTRACE_TYPE_ARG3) &fpregs, lwp) == -1) >> perror_with_name (_("Couldn't get floating point status")); >> >> sparc_supply_fpregset (sparc_fpregmap, regcache, -1, &fpregs); >> } >> + >> +#undef lwp >> } >> >> void >> @@ -195,6 +203,12 @@ sparc_store_inferior_registers (struct regcache *regcache, int regnum) >> about threaded assumptions. */ >> pid = get_ptrace_pid (regcache->ptid ()); >> >> +#ifdef __NetBSD__ >> +# define lwp regcache->ptid ().lwp () >> +#else >> +# define lwp (PTRACE_TYPE_ARG4) 0 >> +#endif >> + >> if (regnum == -1 || sparc_gregset_supplies_p (gdbarch, regnum)) >> { >> gregset_t regs; >> @@ -245,6 +259,7 @@ sparc_store_inferior_registers (struct regcache *regcache, int regnum) >> if (regnum != -1) >> return; >> } >> +#undef lwp >> } >> >> >> -- >> 2.25.0 >>