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 C9AB03877034 for ; Thu, 19 Mar 2020 13:19:02 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org C9AB03877034 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=1584623940; bh=OSI2UJxYaXzIH6plol6WLeO5brl63Est4RX8r+4+UZY=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=BUW66xo4S5PEgNv6s+rLi2c0v6tFnfthg61pkubnVYt3E7S31/uSXFaOHfHjpPn9R D1NzEa8QbWXlJnjk/+PGu0NPPad+hafZy7M53S8bdp2gjkK4yKSP3WiWPszpf/wa4w cKU4IDy24EtgSZETwGH06llJ8VS6KeOPMF5Cl9IM= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from localhost.localdomain ([89.79.191.25]) by mail.gmx.com (mrgmx005 [212.227.17.184]) with ESMTPSA (Nemesis) id 1ML9yS-1iwhhQ3nIw-00IGVh; Thu, 19 Mar 2020 14:18:59 +0100 From: Kamil Rytarowski To: gdb-patches@sourceware.org Cc: simark@simark.ca, Kamil Rytarowski Subject: [PATCH v3] Avoid get_ptrace_pid() usage on NetBSD in x86-bsd-nat.c Date: Thu, 19 Mar 2020 14:18:01 +0100 Message-Id: <20200319131801.22487-1-n54@gmx.com> X-Mailer: git-send-email 2.25.0 In-Reply-To: <6b3250d6-027d-46c7-2884-569d9a0aaa13@simark.ca> References: <6b3250d6-027d-46c7-2884-569d9a0aaa13@simark.ca> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:WKU+WgiDHVVq7ICAmFcOGF+JUUZ9SXM7vdJH4rpa50kHwhHhRcl urmn1LSzLbwGJzwXxUnZGXllDfr4f//Pfoi4rQMsJ2gj2QCiIdkyog/VuWRE05I4CezFz8B WShK+QWvmVHVvSjC2SONqN+G+llMHZN+Ahyo9Q9d55gll5AvnKC7zwcnZVl+cj5e896XdE4 BsIbqRRbNn3GPqZL2Rfng== X-UI-Out-Filterresults: notjunk:1;V03:K0:X3HtO0UjDZM=:9l7p9wdUPbR2ZHZjdIbw31 Kwhn21TsM8lwQh/lsNOUntC+75rtRidk8YDm1bHpY84+G7LyUs/FllNcsmg/e+8lv8VnPuhBY OU3UlY/txrOAQk/aM73M50ozFnPKiH5Z+MboGOCWPzSge/ID0YvFEtAKC6VskpUxkOIzwRR+5 yI8UEw97pDH8vEAfJ9Wz2d1Itl+LAKVxHQ+pC6i72thj9wbyA903j4nST/jR88CijlBGwYTCL jV840I5ZJ2L1PiAF55eABROfBXiT1w058bLl37Qt3z8k0LUxMrq/URkVq1nozagXkb61zUFON lZd50dRr5BifKqHE8G1NRd7yvSTJayKNv39BP9tYPOJWd7I7pkuR637YfOBp/Yk9nRKCPQsXh jxg1ueH+b6YABwnZtGIxiPQvnRdv5r5DccN63pN/IQJQqEiaCmGDCCEEuUrA6TNoR+hLzdxuG pojCwBEgSjPYKeCMJJWEO97N1oO2MUwJ2f7KIB4SKO/vKaJXi/mIElCxciELG6Ego8ZfIswJs 3NB4FNev9xz/Fve9krqiZXp+m4aFmZJUscCs8/mdFoJuRCVrJo/jIBtLsS2suFxi7VwiApkRv Jl38lwm8oA/8Uu24+AwOLx4JjLRA06ULf/wgNgbcrpR4HlJktrCNDy53gDvjaABXHlrRAdMKY r3Q+VfbLG01ShGt1I3PQRBgZyfpy74VN7qVNUtnGhyOUeijIOSvylRumIE6dVTOql13X+0hkf cH3DaoRmH+fVE7wWrM+xYKOC/1Db1gFq4NcAAjn8XfnpRuIyV31pcxGglvw+eEabb9IzzVvBg Fv13EDjid/3NM5OD7kJZtZdzWQ6WaNaKx6UPpIIGWF7nkSblAqZkwIjTVVmREUpYpH1Dz1Ph9 eqeRB18jIdwQlBSonBDi6OXOxEyqlz/dOlAMYjGeSvQ9QY2nR0Y0pj8c3yCIzCSzHRNlvtxLJ mk6ot9pk8RGa2pc64+0A0SdBRZnk9t0hEEE+8SiiSZKM1Vlh9ifR66331KVCqZR+k8LerS6LZ MV5HfkdszxnO4QsVZgdfU9tVwJoKIJQEcXV17VivDtT3HU7Bkf9mTEA1uX2vuETdoHvl2nXxA 20WeDJrVIlbzNUW+NqFEL38Lv+/AeOE0CsRZVsRnn3oKMdxwpCWDHmCDCrsbd3v/idQ9ZGlor NYm2/O7JPjfGWzpXpSvhrOyMu9OJVBvUbaJztAIQumuJw5uyaCMlNowlRkba7WhelbvEw= 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: Thu, 19 Mar 2020 13:19:04 -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..4332cb717bc 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) =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) =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) =3D=3D -1) perror_with_name (_("Couldn't write debug registers")); } } =2D- 2.25.0