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 18EB238A2410 for ; Wed, 18 Mar 2020 16:14:32 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 18EB238A2410 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=1584548068; bh=/E1I8kJMjwvm0QED0qSUTgRZQkkIybgMEMjbMKDNSzk=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date; b=QYpb36/ul0CeXAJOB6bm30o26vQ/X8hVVdg6pV93JSIH6JbUi1ZI2sbK+iil5DmBR KrR3H3YA5zrpuOF1pJKNDUU5TwvvMrtUOANKPr6iuv9pBYUphsDAZlyL0qLjfqJ4Bm xMYzD4mgqUqyK0AB+J89fq9Jf/74ha4p4mKOMABE= 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 1My36T-1jUuRH1FmB-00zUbb; Wed, 18 Mar 2020 17:14:28 +0100 From: Kamil Rytarowski To: gdb-patches@sourceware.org Cc: simark@simark.ca, Kamil Rytarowski Subject: [PATCH] Avoid get_ptrace_pid() usage on NetBSD in x86-bsd-nat.c Date: Wed, 18 Mar 2020 17:13:28 +0100 Message-Id: <20200318161328.24088-1-n54@gmx.com> X-Mailer: git-send-email 2.25.0 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:rpvsunajxik5imQfCXPA9sFdSjr7P+lOdTGUWwNXlubcPNo1v// T7mnZ5WJogNIyf0ZsiIqWk++dHmbkA3HmKu9YWOUAGdT2flzHIb0nkbun03onpjqtxgg9CB 4pyI8fVG5rsWLdYAqlMHzZQC81BZoqiGqcdWtr5/9W37WSsKcfXUYGBCSVsRHutqZUd18z6 ivdysemSIA6hW7ybNrZRQ== X-UI-Out-Filterresults: notjunk:1;V03:K0:nnbquEzuKOw=:5pH3mvuHtp235ik73xEByj 2rIxETJXT5Q6Q8VdYGs2mpjARmjHhnekVqrFhfzoTzPlwgSfcyZHTHVoBZ6nYNh9UnEtzLKB5 AHKp3K9tffh4PFSPIrDlcbt+EqUgzomijjbavi6mR/e6lecgcXJuhCa5QUAFwX3VpLBZHp8ed HuFMmMmXzwQBsvN+lLft7KIeE5C7nmCY36zUAnqCOmCGMs9zR5FREfvV75pDpzJqSOFHDSVyv C9VnbdjRKK8xcffUAzcnADLOERorsfwm0Do+JjHIYjXw6BFE6FWmIR28LCJbKYrFLhNInTXfq EUDA44y5ie2Wb1GzraBP5iVBr4HPTKYOiz07bwijPU75WG68CSvl2s2uay0BsVo6WrEmow4q7 jwNCl7+vuvH4mljzzhf/vurJQe+SZkIhc3+6I/guxrJxy3N2tW1Y7usBtXZpbXoyasEDOn5HL gZ8f664LJmgINdyIHi0NmbfupV1HEfsCwnAskqcpj5Lkg2bJMB2W0ehRUvyhVGS9XeVRawZGf kXt27kIWC8xTPzLauv1IYTSJoS83QoxjzuAu0LDBnDp5/9yHZ5MsZUwOY1cHZj2oK5LA+enQv D8NWtNPt/GDGsCBFM+g/XnGs0KfmZ+cC4k25WY4RXmKBr9/57FlOh6mnpxBzq7uqEDTKGg3ON L9tsGSK6mADUsbyYJzWfCEIU6gn2G3LGKosqZreyu3tufuWGV8jslBumK/FARa3I57mXqHI28 MB38nerX8zmSWopGIYoZWSwb68Qvlueyiuv6lCBvR5ggtYAO4SEH/xwkESVsLCsYmcTJgXdCp pHzg0eZkMrzfLCklWyYOW4j9hQYbUKYEdYED/Tiokv9acX9OYS47N7KeR8sC5scGNBB0OtA1A u6ms5iBJUhNYcAj699nPr9hOaNGj3JwVb8RPbLbjrUeezmqqIT2snRxNrhdx4sYeYphcntwnT 4f2kGPE27XKRahPNYprlM5g0Pp3VZLpeDmxGs9YPXsbKyJQVrfXumdWSvHE1Nak3YdbTWs/If XXK97Gz75D393XaXrvAo/lJzPzYm55CAKxNWKSdwevDSWLYR3hSRllwGOOLL7SP0vaVOvjxku r7Db0WusQ8OQeeXWOo9bm0FdD9sW5IxSIEgF4f6rENHSeYV5QABMuTWYC9DoUfGQ+Q0MOUQBK ftp75+j/MnpnMT154C2LOcheXJ8U8hcEmY0Y0N7UVot65jjeguUQ37aElTBnx6A/saPzE= 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: Wed, 18 Mar 2020 16:14:35 -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 | 39 +++++++++++++++++++-------------------- 2 files changed, 24 insertions(+), 20 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 84964dc00ac..1beb835df78 100644 =2D-- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2020-03-18 Kamil Rytarowski + + * x86-bsd-nat.c (gdb_ptrace): New. + * (x86bsd_dr_get, x86bsd_dr_set): Use gdb_ptrace. + 2020-03-17 Kamil Rytarowski * regformats/regdef.h: Put reg in gdb namespace. diff --git a/gdb/x86-bsd-nat.c b/gdb/x86-bsd-nat.c index 640a3c28110..37d0bfda37c 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,9 @@ 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, inferior_ptid, + (PTRACE_TYPE_ARG3) &dbregs) =3D=3D -1) perror_with_name (_("Couldn't read debug registers")); return DBREG_DRX ((&dbregs), regnum); @@ -73,14 +81,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 +95,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