public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
* [PATCH] Add support for NetBSD threads in sparc-nat.c
@ 2020-03-17  9:40 Kamil Rytarowski
  2020-03-17 15:10 ` [PATCH v3] " Kamil Rytarowski
  0 siblings, 1 reply; 12+ messages in thread
From: Kamil Rytarowski @ 2020-03-17  9:40 UTC (permalink / raw)
  To: gdb-patches

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, that is always unused.
---
 gdb/sparc-nat.c | 22 +++++++++++++++-------
 1 file changed, 15 insertions(+), 7 deletions(-)

diff --git a/gdb/sparc-nat.c b/gdb/sparc-nat.c
index dff0f521565..9743bc3f3a0 100644
--- a/gdb/sparc-nat.c
+++ b/gdb/sparc-nat.c
@@ -78,6 +78,14 @@ typedef struct fp_status fpregset_t;
 #define PTRACE_SETFPREGS PT_SETFPREGS
 #endif

+/* Support for NetBSD threads.  */
+#ifdef __NetBSD__
+# define gdb_ptrace(request, pid, addr) \
+  ptrace (request, pid, addr, regcache->ptid ().lwp ())
+#else
+# define gdb_ptrace(request, pid, addr) ptrace (request, pid, addr, 0)
+#endif
+
 /* Register set description.  */
 const struct sparc_gregmap *sparc_gregmap;
 const struct sparc_fpregmap *sparc_fpregmap;
@@ -166,7 +174,7 @@ sparc_fetch_inferior_registers (struct regcache *regcache, int regnum)
     {
       gregset_t regs;

-      if (ptrace (PTRACE_GETREGS, pid, (PTRACE_TYPE_ARG3) &regs, 0) == -1)
+      if (gdb_ptrace (PTRACE_GETREGS, pid, (PTRACE_TYPE_ARG3) &regs) == -1)
 	perror_with_name (_("Couldn't get registers"));

       sparc_supply_gregset (sparc_gregmap, regcache, -1, &regs);
@@ -178,7 +186,7 @@ sparc_fetch_inferior_registers (struct regcache *regcache, int regnum)
     {
       fpregset_t fpregs;

-      if (ptrace (PTRACE_GETFPREGS, pid, (PTRACE_TYPE_ARG3) &fpregs, 0) == -1)
+      if (gdb_ptrace (PTRACE_GETFPREGS, pid, (PTRACE_TYPE_ARG3) &fpregs) == -1)
 	perror_with_name (_("Couldn't get floating point status"));

       sparc_supply_fpregset (sparc_fpregmap, regcache, -1, &fpregs);
@@ -199,12 +207,12 @@ sparc_store_inferior_registers (struct regcache *regcache, int regnum)
     {
       gregset_t regs;

-      if (ptrace (PTRACE_GETREGS, pid, (PTRACE_TYPE_ARG3) &regs, 0) == -1)
+      if (gdb_ptrace (PTRACE_GETREGS, pid, (PTRACE_TYPE_ARG3) &regs) == -1)
 	perror_with_name (_("Couldn't get registers"));

       sparc_collect_gregset (sparc_gregmap, regcache, regnum, &regs);

-      if (ptrace (PTRACE_SETREGS, pid, (PTRACE_TYPE_ARG3) &regs, 0) == -1)
+      if (gdb_ptrace (PTRACE_SETREGS, pid, (PTRACE_TYPE_ARG3) &regs) == -1)
 	perror_with_name (_("Couldn't write registers"));

       /* Deal with the stack regs.  */
@@ -225,7 +233,7 @@ sparc_store_inferior_registers (struct regcache *regcache, int regnum)
     {
       fpregset_t fpregs, saved_fpregs;

-      if (ptrace (PTRACE_GETFPREGS, pid, (PTRACE_TYPE_ARG3) &fpregs, 0) == -1)
+      if (gdb_ptrace (PTRACE_GETFPREGS, pid, (PTRACE_TYPE_ARG3) &fpregs) == -1)
 	perror_with_name (_("Couldn't get floating-point registers"));

       memcpy (&saved_fpregs, &fpregs, sizeof (fpregs));
@@ -237,8 +245,8 @@ sparc_store_inferior_registers (struct regcache *regcache, int regnum)
 	 to write the registers if nothing changed.  */
       if (memcmp (&saved_fpregs, &fpregs, sizeof (fpregs)) != 0)
 	{
-	  if (ptrace (PTRACE_SETFPREGS, pid,
-		      (PTRACE_TYPE_ARG3) &fpregs, 0) == -1)
+	  if (gdb_ptrace (PTRACE_SETFPREGS, pid,
+		      (PTRACE_TYPE_ARG3) &fpregs) == -1)
 	    perror_with_name (_("Couldn't write floating-point registers"));
 	}

--
2.25.0


^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2020-03-17 19:09 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-03-17  9:40 [PATCH] Add support for NetBSD threads in sparc-nat.c Kamil Rytarowski
2020-03-17 15:10 ` [PATCH v3] " Kamil Rytarowski
2020-03-17 16:03   ` Simon Marchi
2020-03-17 16:46     ` [PATCH v4] " Kamil Rytarowski
2020-03-17 16:51       ` Simon Marchi
2020-03-17 16:59         ` Simon Marchi
2020-03-17 17:07           ` Kamil Rytarowski
2020-03-17 17:10             ` Simon Marchi
2020-03-17 18:14               ` Kamil Rytarowski
2020-03-17 18:18       ` [PATCH v5] " Kamil Rytarowski
2020-03-17 19:07         ` Simon Marchi
2020-03-17 19:09           ` Simon Marchi

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).