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 9B6E6387702F for ; Thu, 19 Mar 2020 13:08:50 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 9B6E6387702F 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=1584623326; bh=Ptq80GMhUJQuc3XgHpStkMT8dqLA4Cyj6GFCAPQthBQ=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=hNH3cHQnLoo0/6UiCxFmuiFDYOMGARZg2o1/lRZF6B1y+34xFmoVrKGNA3FUGMAzc AltuggbvrNi3joQ5Ae71gefITi+uqHv6OPzJm65Qh4K8v5D0xV+ftbtLBOyttUWfVE pia9pBXOqa2BjiHIXU2+5i8pA6Xz3pRQdd8jP8ew= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from localhost.localdomain ([89.79.191.25]) by mail.gmx.com (mrgmx105 [212.227.17.174]) with ESMTPSA (Nemesis) id 1MD9T7-1j5oFD0cy1-0097UL; Thu, 19 Mar 2020 14:08:46 +0100 From: Kamil Rytarowski To: gdb-patches@sourceware.org Cc: simark@simark.ca, Kamil Rytarowski Subject: [PATCH v2] Avoid get_ptrace_pid() usage on NetBSD in x86-bsd-nat.c Date: Thu, 19 Mar 2020 14:08:04 +0100 Message-Id: <20200319130804.13396-1-n54@gmx.com> X-Mailer: git-send-email 2.25.0 In-Reply-To: <20200318161328.24088-1-n54@gmx.com> References: <20200318161328.24088-1-n54@gmx.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:rGWERheyoauZVor5O0J1xyaKA/biz0eJoWbT4lmjUeFAtu3sGRS H3ELkSE6QlRZ6doznDq2+OPaBf6YoswpaF9k7AybIZJO1HPlFUS9cxDWTQ5jBdbQl2OADPJ 4vuGpe7mp9lAsxyUkhu0WjfB0e/GHouDSu5+eFojI+Ci4nbi9LksmES9ZUVePw9C/6gjfuI T3J1u4J0pzhq/LMRTjzrQ== X-UI-Out-Filterresults: notjunk:1;V03:K0:fy/hwFoA2jI=:TsQ5+/OmZKhcM067Mjq9me WJ8ApyvgBdjl49Q1bjtxJ8Z+GpzxmVvXrL4xfGewK8aZEQoBIH6Qt2jkWQih1Ryi//CQCmb+V nmeUbJPtXgd6lQ6TfziPw3lsQNF2G4ChOQ4YheEmSYrLZFJcoDeJMIabjvLLSK6XpI3pP48J1 9PK7LiNLk1wJVKVvha/aEUBZbXWH2GtwYtWqSP56v0m46ns7B/9UO6qVQQjR4FC6WNUOXyfUx WbWRzcJFOaoL+WDmj9yT/kwRP4ea8IOpM3wGmKd9oupFBkLVp7IbaRwGtx6Ut4W5Ytn1k2EIO IafdUPCuGhaHMe7rvbCuLy8DscxAxZNPSp5HzwxA9wfMorPdV4pEk2ALGk2Jiv5kBlFWonWWO QMiEa34F9jOClQBOfR/Gk/jQkVlfor/yIxl6TZMZAvIGUpfw9L1OyP7KnguRJPolmk6uThQc3 juPwd2G5HsVTw9MKLjnipmi0OYqwUl9iVvhUN9LookfCnFgVzAiSJAEBmpODDfzR6Vg85W0qq G+O3Aij0iZ0Cwa0gRUPA2kAvGvb4xO0PJ8fSosiVrL2N0ntRfomlWTo8EysZvWxqIxm2wSioP +pUllfIYbeZ20QLflzuXl8VVr0wUiYWqhY3ND7eyn/UvXx5Li4r+/aUptLyZ0/vAfFoSoPh/G kxc6mYv6H/t3MpqH9jsFtP/3RLdOeDCXE+vk/auWpNluoghWbPwlyOdvsCepMPXRnAE/XWUt/ Hcmb9n2JUDOBsx1vsHAVItRNyRYCluDqZ/MNrf7i2+egOp+CO7WoLc/5O/wA3oKXjOa6lm7xQ e/Q8boeG9k5xJz+HoqvEaHVwLeuZq92jR/3j3zb6hZo+d9S0StAqm5f59pH/RqAZy+jDclqNc 4USuWEksFApagC5rgs5D7m9k8AMepdxliANSZk/ksXZjiNhmmZ52DXjR1XjJLz1+O2uLURx4/ wazGoHzwdF4/RkhgKrCiZraBBSvqjQ8grZkWhG9d2IXMIddOvTnVUANv1CYzvsberChOiesjT N03iZilIHgOAg8MIQJbFbc0+xEELQ+BP9Pl5xEHndaJByjUoAm1sPjxXZcZ9XFfoCBGRu9jaD QOnAPBVjL+9SRnmW+2UJU1bz3AWyZaJD53oANFBY86EQvxfrsOY59T2o2gMq7AqjueM/0ZHb6 pF9w1TshmpMHsVUtpv9uKC6xVV3V7SF6MZ3Lx121YOCtJwOVuv0EajwyPzt3/W5t4/8vE= 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:08:52 -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_get, x86bsd_dr_set): Use gdb_ptrace. =2D-- gdb/ChangeLog | 5 +++++ gdb/x86-bsd-nat.c | 38 ++++++++++++++++++-------------------- 2 files changed, 23 insertions(+), 20 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 7f87eceaf70..23a5932489f 100644 =2D-- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2020-03-19 Kamil Rytarowski + + * x86-bsd-nat.c (gdb_ptrace): New. + * (x86bsd_dr_get, x86bsd_dr_set): Use gdb_ptrace. + 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..c1da7d6ce30 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,14 +69,8 @@ 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, lwp) = =3D=3D -1) perror_with_name (_("Couldn't read debug registers")); return DBREG_DRX ((&dbregs), regnum); @@ -73,14 +80,9 @@ static void x86bsd_dr_set (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, inferior_ptid, + (PTRACE_TYPE_ARG3) &dbregs, lwp) =3D=3D -1) perror_with_name (_("Couldn't get debug registers")); /* For some mysterious reason, some of the reserved bits in the @@ -92,12 +94,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, lwp) =3D=3D -1) perror_with_name (_("Couldn't write debug registers")); } } =2D- 2.25.0