From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mout.gmx.net (mout.gmx.net [212.227.15.15]) by sourceware.org (Postfix) with ESMTPS id 0FD3C385F022 for ; Tue, 17 Mar 2020 15:11:38 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1584457893; bh=PRyA0AFta3iQXDABWHvDlGaOlZ39ncmRSmKL5JpY6uM=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=Dm5LYzrw4Wv8DH+xnK6zY1cuSlF5MNjO1Vp4d8t6P2TK15qTmnCdtQcCEGLli5XO9 yRZ+zEIVgcgxtQslF3mPEanE0BiJdW/6UH/3xDKfUEOyeO3gzt95rS66pP8J/23YkR L9bqpj+Lzf3/4RTm7r6AfiCh3fyl17YTNoWr0KzA= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from localhost.localdomain ([89.79.191.25]) by mail.gmx.com (mrgmx004 [212.227.17.184]) with ESMTPSA (Nemesis) id 1MAwbz-1j7r9J3oxl-00BMTL; Tue, 17 Mar 2020 16:11:33 +0100 From: Kamil Rytarowski To: gdb-patches@sourceware.org Cc: cbiesinger@google.com, simark@simark.ca, Kamil Rytarowski Subject: [PATCH v3] Add support for NetBSD threads in sparc-nat.c Date: Tue, 17 Mar 2020 16:10:48 +0100 Message-Id: <20200317151048.8728-1-n54@gmx.com> X-Mailer: git-send-email 2.25.0 In-Reply-To: <20200317094046.713-1-n54@gmx.com> References: <20200317094046.713-1-n54@gmx.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:zzaFe9aVn6vqZuI68HGcxPqhCyeufzJwaJHJAWzZ1v1YAg6nP83 B+zCZ0ZmzNOYt8IvlXzi36K6iF8x7eDFVfYuVl0pafNUg2z3WJ1PR6BnUCrItc5+4fErJEI SEDzFKtqlXTLVdIs+kDgvYJQQv8V64VcpejYrXSIxf7rrKlSjAiPU6tsY4yF459778JACcF BUBmcDh9IysCqBJavq2Ig== X-UI-Out-Filterresults: notjunk:1;V03:K0:AQOK4zb0hIc=:oOldg26nhQ2Zn9NFLa0ZyR nk6z5NulABzFqk3mpSZicczdkPAmQp5ENiNz7eeZ488t/p/zyUhGj+HGTY3XHItl3V/WSXCQ9 swqdkI+VlvyWYiXtXPo4RQHn5lSeh2BnXD0O43CJoN9Q33JAUGFOMu3Lx7AencZUyPbLlWvbi UdnujagMyyikQ7JuZPCPj/n1TptCM9wJ82ur+eoFP/jW2WjTpvP5Av5M8aAFxFwxabNh6mOpZ EpM9BW5KnRD/dYQ76PXVPEx9xdFUILArJPwl20NuinSzp5/7rrAVkOCLS5H7T8bnqSLC4pRrm 6HoELL1s7pn797dfXyG95DZ35Ye/Y/SV4IHzKORtdazGu7KEwPciqA4XI24cydKZu6q6MU2G/ WVk5GzbRZhuriY1PoVtiEtiUPprg047opXkvTmh+sjJ8us6JlVYF7OFMU0Pn0dXhw+b033jrS KuFLt0wrhbHf/p5QSmxw2Y0czYnbrwqC3I2KpAh7pmNSABfR9dW/yXFu/qjHDw3Yl/s4PQnxk /xyAncl90n+zvCmvdqaOWZQ60FFd5HZvLnX0GkqyuLu5mjD1Q1dt55MuwWdKPyXGCYmPHVLc5 RnKWXu1TXCvKCpQfWVrwR2Vnpurf4VN/Yb0TNU303CtS90Bj+BDp92kfMq5GLm60KGXdrBKwt pNMPuL4Un2r09bOn965IxmoRvXhEIGyGbMF39K8A6+9lGh/amfHe9oIJiW0XMJaFtn92pOH1s gd+MPXn97M6vozOaC90oNITVlcrd5fqJVBYCmKFurjoy0wX8d8QDbBUxF+3b9FO0Udrvma29V UVsGi3O/YUYWYzuR/3WxN6yv8I9gk8cb8F+zP1GwRAcsxHhQcRQug2HMX5LEsOIQ/OyGhEaaz uWj6/Omi+B4l2qrkJ/VVndB0d8GkE5tlvlTD5241ZfDyoZhSOPjwNYgeJ5RFNy1dpHnSHlHWq W6JjQ16f2b39f9DsgYVHHsf3D02KI/YtOMRrW2SnX6lhz2IU4rKnFidgCSu69P3fjP3aaptW8 6xJTP9aGcF2Mk7bNrzRL09CmF35AbeFWQbYShhRjkpzhgVr4mRsDQwPPqXvl7sqIbnn1O0oOC IZIgRNRJ5J/ssuH1Z+UGCAnPTL544xpQYZKtbPWnL+SNr7PUdot4tL0zPNSg13leoqjjMOke7 IZihweZRU3TI6DbCerhEshRoq5JlkEFeMjNES1z6tUYQl6plfKuSbxRvHw7FIcCJRHv9g= X-Spam-Status: No, score=-25.4 required=5.0 tests=DKIM_SIGNED, DKIM_VALID, FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_LOW, SPF_HELO_NONE, SPF_PASS autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 17 Mar 2020 15:11:40 -0000 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 argume= nt type, that is always unused. =2D-- gdb/sparc-nat.c | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/gdb/sparc-nat.c b/gdb/sparc-nat.c index dff0f521565..be99ebb6789 100644 =2D-- a/gdb/sparc-nat.c +++ b/gdb/sparc-nat.c @@ -78,6 +78,17 @@ typedef struct fp_status fpregset_t; #define PTRACE_SETFPREGS PT_SETFPREGS #endif +static inline int +gdb_ptrace(int request, pid_t pid, void *addr, struct regcache *regcache) +{ +#ifdef __NetBSD__ + /* Support for NetBSD threads. */ + return ptrace (request, pid, addr, regcache->ptid ().lwp ()); +#else + return ptrace (request, pid, addr, 0); +#endif +} + /* Register set description. */ const struct sparc_gregmap *sparc_gregmap; const struct sparc_fpregmap *sparc_fpregmap; @@ -166,7 +177,8 @@ sparc_fetch_inferior_registers (struct regcache *regca= che, int regnum) { gregset_t regs; - if (ptrace (PTRACE_GETREGS, pid, (PTRACE_TYPE_ARG3) ®s, 0) =3D= =3D -1) + if (gdb_ptrace (PTRACE_GETREGS, pid, + (PTRACE_TYPE_ARG3) ®s, regcache) =3D=3D -1) perror_with_name (_("Couldn't get registers")); sparc_supply_gregset (sparc_gregmap, regcache, -1, ®s); @@ -178,7 +190,8 @@ sparc_fetch_inferior_registers (struct regcache *regca= che, int regnum) { fpregset_t fpregs; - if (ptrace (PTRACE_GETFPREGS, pid, (PTRACE_TYPE_ARG3) &fpregs, 0) = =3D=3D -1) + if (gdb_ptrace (PTRACE_GETFPREGS, pid, + (PTRACE_TYPE_ARG3) &fpregs, regcache) =3D=3D -1) perror_with_name (_("Couldn't get floating point status")); sparc_supply_fpregset (sparc_fpregmap, regcache, -1, &fpregs); @@ -199,12 +212,14 @@ sparc_store_inferior_registers (struct regcache *reg= cache, int regnum) { gregset_t regs; - if (ptrace (PTRACE_GETREGS, pid, (PTRACE_TYPE_ARG3) ®s, 0) =3D= =3D -1) + if (gdb_ptrace (PTRACE_GETREGS, pid, + (PTRACE_TYPE_ARG3) ®s, regcache) =3D=3D -1) perror_with_name (_("Couldn't get registers")); sparc_collect_gregset (sparc_gregmap, regcache, regnum, ®s); - if (ptrace (PTRACE_SETREGS, pid, (PTRACE_TYPE_ARG3) ®s, 0) =3D= =3D -1) + if (gdb_ptrace (PTRACE_SETREGS, pid, + (PTRACE_TYPE_ARG3) ®s, regcache) =3D=3D -1) perror_with_name (_("Couldn't write registers")); /* Deal with the stack regs. */ @@ -225,7 +240,8 @@ sparc_store_inferior_registers (struct regcache *regca= che, int regnum) { fpregset_t fpregs, saved_fpregs; - if (ptrace (PTRACE_GETFPREGS, pid, (PTRACE_TYPE_ARG3) &fpregs, 0) = =3D=3D -1) + if (gdb_ptrace (PTRACE_GETFPREGS, pid, + (PTRACE_TYPE_ARG3) &fpregs, regcache) =3D=3D -1) perror_with_name (_("Couldn't get floating-point registers")); memcpy (&saved_fpregs, &fpregs, sizeof (fpregs)); @@ -237,8 +253,8 @@ sparc_store_inferior_registers (struct regcache *regca= che, int regnum) to write the registers if nothing changed. */ if (memcmp (&saved_fpregs, &fpregs, sizeof (fpregs)) !=3D 0) { - if (ptrace (PTRACE_SETFPREGS, pid, - (PTRACE_TYPE_ARG3) &fpregs, 0) =3D=3D -1) + if (gdb_ptrace (PTRACE_SETFPREGS, pid, + (PTRACE_TYPE_ARG3) &fpregs, regcache) =3D=3D -1) perror_with_name (_("Couldn't write floating-point registers")); } =2D- 2.25.0