From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mout.gmx.net (mout.gmx.net [212.227.17.22]) by sourceware.org (Postfix) with ESMTPS id 2F9D7385F01D for ; Thu, 19 Mar 2020 13:36:52 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 2F9D7385F01D Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=gmx.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=n54@gmx.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1584625008; bh=KKeRNDIuqXLKGo1damwgImt2+xlopUKaNK3I4k1RV5I=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=bq2XCOAMdQmQVMYNZda/r12VC80LyPpbVCab2L1IPdIxeXJ7FJ3nQoSPdOv+wnvLS Hvys63D6kQ1kw5AlbY2Fb7EAlZXzN7kRRhFW/bZwtkaNiQjEY2G3wTG7V48Owu2UFJ yoY0WWfWATEroPJKfvzETyJ9v+z3a4MeBTJTkrTI= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from localhost.localdomain ([89.79.191.25]) by mail.gmx.com (mrgmx104 [212.227.17.174]) with ESMTPSA (Nemesis) id 1Md6R1-1jnR5f2S8p-00aG1y; Thu, 19 Mar 2020 14:36:48 +0100 From: Kamil Rytarowski To: gdb-patches@sourceware.org Cc: simark@simark.ca, Kamil Rytarowski Subject: [PATCH v4] Avoid get_ptrace_pid() usage on NetBSD in x86-bsd-nat.c Date: Thu, 19 Mar 2020 14:36:07 +0100 Message-Id: <20200319133607.11872-1-n54@gmx.com> X-Mailer: git-send-email 2.25.0 In-Reply-To: <20200319131801.22487-1-n54@gmx.com> References: <20200319131801.22487-1-n54@gmx.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:VqMvH8+Oyi+wDQKcxK9tyuTJLYQ/u1yFljm2K5501r08uJkyR/A ofqQlfTczTC4K6hjIbXLbyqpostqXs3d8M4n+UgbqQ6Y1WjvOvAVagqC36G3ZroxRBm9jvG F83ZPeyU8XobyppaGPhKEqCq75je1EcfPl1WH40sci3xq9YVqJBLKqfAzoGBmahLZEMe/m5 p3MrqjoG75XA5DHn2tHdA== X-UI-Out-Filterresults: notjunk:1;V03:K0:Wc5QN43hgUU=:jitZmzHyFeS5AhGYH2uvP+ G/c6vKP4xvJFGXiFqfdNl1eSTYoBAEY1uVWXX5/Vil7LrhrjMVbsran6vvY2ww9teSrgphb5L B2V7Yej65xxyOCAbq5P4E0EQvA1sWakaBEY7VDpxUJcL07K9nnza/3kGH93iHGTP2OBGjS9SJ HMRWHtQgnr7ZIIZ/AcND18UKqk5ZVjPXEcuBAELpvHq5jkJ0kZChbTi/GB8u7peyQyOYnRcVM DxTQklO/D6PHtQdMJ3zS3lPUabzJr/aWmUs6+LchnZCZVBc+0tG7fBc5uOuiGGLR+CnY/0k4d 8vfy/OFRKY8prpRMImXhNbZpmaCC/tk8RIfbPf5vwX1uOO50Ol6Ym8Z384CHeJo1gEjRuS4di FslaiRnTLO50kbxiiL45aFTCm9t7Km/520HoAksS2gjlkBmEcBzlhcEGGqzwxSYpWJ33POldo HGOGzIvjJS/TlX8OtmGCWvb/LBgGOsYD1ecHVhifybxceb7om696w8JGHfsZuWLKt60IcunPZ lYljGpEKf0eM77eH4mcCH/faWyUOxaxwJAwhP45KmCzB+64aARXsX1Vbz8Zh9uIK1ElXuTD+6 wm+eelDm9kDu7V1E8l8isVw37W9PcWdjxEWXknreCX3ptMWtAewUsu0MNlTL+57efLwhl8ykG MX/t6O0g6DjpxPTTQfy7O3KIZO4gcGhvd85iRUID3RQbS9tr6NjV7Py7ba4bLIOLUx+mDoo5x JJ/Ta8wR6zGbc8h2LvOzKKRIsD7uAYXG8MrjDmGPUyZfGGv1ErmHuCZxJe7h0zy6rdRdc7eUm GSkCcNd3wty+Exsx/Xe4zFV+3Mu3/N61gpxuaNcGcSeloiG0d1OH9H8eFffYBGBly7R9LmZUt +T7DGauM4l/7WJhthR7uBzwCGxJ3vRpL7fuxBzGJK+fk4HULAKToLNkhA5+/AkFZ3b53Of6jq qJrNe1/Ffc/7PN5Axz2+kjeasmV2dr1XLd+dSvlRfKBsGwi0Kt7t2fzro0BLIBmd6nXeFM4Ms jg/yrLQmUHp3UxWHU6JSrvPDUcP6ydeFq9+OCxs51OitmYK99YfvlT3DBcXV0nUjtdQpyBV4N GU9OhNmCqxscq+Xs0DyLBvG6W8iugT8xYJByOnrjchBgFqiy0gcjZz2WqM7F591WhL+CSWuyg d0JCExajWNVcbysaeCeF7MP1XGAwizuAxcC4DdDm+qUmtKakHkW181+RwYW42Qmjmu2F0= 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, RCVD_IN_MSPIKE_H2, 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: Thu, 19 Mar 2020 13:36:53 -0000 Add gdb_ptrace() that wraps the ptrace(2) API and correctly passes the pid,lwp pair to the calls on NetBSD; and the result of get_ptrace_pid() on other BSD Operating Systems. gdb/ChangeLog: * x86-bsd-nat.c (gdb_ptrace): New. * (x86bsd_dr_set): Add new argument `ptid'. * (x86bsd_dr_get, x86bsd_dr_set, x86bsd_dr_set_control, x86bsd_dr_set_addr): Update. =2D-- gdb/ChangeLog | 7 +++++++ gdb/x86-bsd-nat.c | 43 ++++++++++++++++++++----------------------- 2 files changed, 27 insertions(+), 23 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 7f87eceaf70..0955d648e79 100644 =2D-- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,10 @@ +2020-03-19 Kamil Rytarowski + + * x86-bsd-nat.c (gdb_ptrace): New. + * (x86bsd_dr_set): Add new argument `ptid'. + * (x86bsd_dr_get, x86bsd_dr_set, x86bsd_dr_set_control, + x86bsd_dr_set_addr): Update. + 2020-03-19 Andrew Burgess * remote.c (remote_target::process_stop_reply): Handle events for diff --git a/gdb/x86-bsd-nat.c b/gdb/x86-bsd-nat.c index 640a3c28110..9e2bea1e020 100644 =2D-- a/gdb/x86-bsd-nat.c +++ b/gdb/x86-bsd-nat.c @@ -33,6 +33,19 @@ #include "inf-ptrace.h" =0C +static int +gdb_ptrace (PTRACE_TYPE_ARG1 request, ptid_t ptid, PTRACE_TYPE_ARG3 addr) +{ +#ifdef __NetBSD__ + /* Support for NetBSD threads: unlike other ptrace implementations in t= his + file, NetBSD requires that we pass both the pid and lwp. */ + return ptrace (request, ptid.pid (), addr, ptid.lwp ()); +#else + pid_t pid =3D get_ptrace_pid (ptid); + return ptrace (request, pid, addr, 0); +#endif +} + #ifdef PT_GETXSTATE_INFO size_t x86bsd_xsave_len; #endif @@ -56,31 +69,19 @@ static unsigned long x86bsd_dr_get (ptid_t ptid, int regnum) { struct dbreg dbregs; -#ifdef __NetBSD__ - int lwp =3D inferior_ptid.lwp (); -#else - int lwp =3D 0; -#endif - if (ptrace (PT_GETDBREGS, get_ptrace_pid (inferior_ptid), - (PTRACE_TYPE_ARG3) &dbregs, lwp) =3D=3D -1) + if (gdb_ptrace (PT_GETDBREGS, ptid, (PTRACE_TYPE_ARG3) &dbregs) =3D=3D = -1) perror_with_name (_("Couldn't read debug registers")); return DBREG_DRX ((&dbregs), regnum); } static void -x86bsd_dr_set (int regnum, unsigned long value) +x86bsd_dr_set (ptid_t ptid, int regnum, unsigned long value) { struct dbreg dbregs; -#ifdef __NetBSD__ - int lwp =3D inferior_ptid.lwp (); -#else - int lwp =3D 0; -#endif - if (ptrace (PT_GETDBREGS, get_ptrace_pid (inferior_ptid), - (PTRACE_TYPE_ARG3) &dbregs, lwp) =3D=3D -1) + if (gdb_ptrace (PT_GETDBREGS, ptid, (PTRACE_TYPE_ARG3) &dbregs) =3D=3D = -1) perror_with_name (_("Couldn't get debug registers")); /* For some mysterious reason, some of the reserved bits in the @@ -92,12 +93,8 @@ x86bsd_dr_set (int regnum, unsigned long value) for (thread_info *thread : current_inferior ()->non_exited_threads ()) { -#ifdef __NetBSD__ - lwp =3D thread->ptid.lwp (); -#endif - - if (ptrace (PT_SETDBREGS, get_ptrace_pid (thread->ptid), - (PTRACE_TYPE_ARG3) &dbregs, lwp) =3D=3D -1) + if (gdb_ptrace (PT_SETDBREGS, thread->ptid, + (PTRACE_TYPE_ARG3) &dbregs) =3D=3D -1) perror_with_name (_("Couldn't write debug registers")); } } @@ -105,7 +102,7 @@ x86bsd_dr_set (int regnum, unsigned long value) static void x86bsd_dr_set_control (unsigned long control) { - x86bsd_dr_set (7, control); + x86bsd_dr_set (inferior_ptid, 7, control); } static void @@ -113,7 +110,7 @@ x86bsd_dr_set_addr (int regnum, CORE_ADDR addr) { gdb_assert (regnum >=3D 0 && regnum <=3D 4); - x86bsd_dr_set (regnum, addr); + x86bsd_dr_set (inferior_ptid, regnum, addr); } static CORE_ADDR =2D- 2.25.0