Mirror of the gdb-patches mailing list
 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; 15+ 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] 15+ messages in thread
* [PATCH] Add support for NetBSD threads in sparc-nat.c
@ 2020-03-14 18:27 Kamil Rytarowski
  2020-03-16 21:35 ` Christian Biesinger
  0 siblings, 1 reply; 15+ messages in thread
From: Kamil Rytarowski @ 2020-03-14 18:27 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.
---
 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) &regs, 0) == -1)
+      if (ptrace (PTRACE_GETREGS, pid, (PTRACE_TYPE_ARG3) &regs, lwp) == -1)
 	perror_with_name (_("Couldn't get registers"));

       sparc_supply_gregset (sparc_gregmap, regcache, -1, &regs);
@@ -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
 }

 \f
--
2.25.0



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

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

Thread overview: 15+ 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
  -- strict thread matches above, loose matches on Subject: below --
2020-03-14 18:27 [PATCH] " Kamil Rytarowski
2020-03-16 21:35 ` Christian Biesinger
2020-03-17  9:38   ` Kamil Rytarowski

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox