From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mout.gmx.net (mout.gmx.net [212.227.15.19]) by sourceware.org (Postfix) with ESMTPS id 43585385B835 for ; Thu, 16 Apr 2020 16:59:56 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 43585385B835 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=1587056392; bh=+hDiGnCXjKjkFP7/oMzMzNInAp/Nlu8aDYIr77Zhbw4=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date; b=Q7NsxAmhG2cPUigLzyeIbwj1rLi1/XThF6IRShPoqKd1DdGtlAJMSn5MsRW49vnWV 6CUNfVUAtvQMLzpst8BZu5/HU5aMtoWEGlienY2GzzLP5eYcCYeqzbmSVwLrce7d5u Si4z0C7iZnrkBgM54t6W1Kpv4I2i0eRfenSa+Ti0= 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 1Mzyya-1j4ihq1OQo-00x4Xe; Thu, 16 Apr 2020 18:59:52 +0200 From: Kamil Rytarowski To: gdb-patches@sourceware.org Subject: [PATCH] Move OpenBSD-only functions from inf-ptrace to obsd-nat Date: Thu, 16 Apr 2020 18:58:59 +0200 Message-Id: <20200416165859.10785-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:yO6JIni5KJkR4ECo0/90bCHgF7i8SGD/+sGUsr2yja3JwSqOIOB X7u7+FLDh6WAn2rDYBs0ySg+t/VxWmvZ9IsxjE101f7OaOMkhkduYeE6AvW9HqApY4UFfCX ClmpPK5EDDqpl8ej7JV14LbSe4hLGmymuVQwPtN/en8RTuZUcd+H1nsr8+rPx1SUTJrkNg/ T/tvn1nOEoKqudQJ4yrQg== X-UI-Out-Filterresults: notjunk:1;V03:K0:l4T9QK3k5No=:TWCbcVJpff7JsiuzDnbJ2P Fv687sdHJ9aijmoRPcW5tOgzzyAfvjUnWt/61gT+ydET4guE4KHWgjoCZqKdyDRmOgXkBkqU2 8T3bHIJHzTH+j01jb/JG6sgB2nY5PJSjRVHWI8+DW4tebZtSIcpFjTtYSC+aBWoOYb2hhqdnl +j8tvyaaVcw08v5G0sPtQ7A0eyoaR+M3XmIxi67Z1byzKtOiN6YsBtmoGFIOBN3FMy+eCi6pL YY9zBG5hF23ktHaVGfUShn8wEOoZAHWquT5xtOSS7I17wqpzmm//mg7YLysf8ASO6vPvbxTkX BR71KuqXQLB9gf8SV/b6MB91FDffOMXytka06IMXk6hf5wS41+3srvEekTsjHCg4JnyLWyYS3 zLXXr+Cx9SfBrxcZVHtJxV1Xm0LmoB6b/UXP8wzh/scTmUtjmA2z8Bs5L0UlhVpa/7uV4LkCA XnlFSegfJ/jSdYBC6zQXYyrCIoZB5RTMtFzVMTzG2Yu6tskjju7yUJYKq2N1ejHG28sNF6ea1 eT3EbH2yjnv6fm3O0NdCvFQoGB6IxUN86lJl/c1QngBywYPXVk+9iU8va7XwHLQONXINc34Gn 53OszMKHGJyzUL9pFJ5AoM9f8OKdEfQ/t78ziVRB10WNQkgOaqyggwjoIwBAT0Jc70EJWhgmU wvDi73DhM+tB9Ta4ec//ke7o9kthh8Gjw+0WYEb2hJ8RRZP4TARcoNcHmLiCqgq3A5huDQrKF ZtnAh6/m7evhBNIiflwBgJ2mpAjBfZSLEm9W4NIcYYO8D7Zqj1JLQYE2q73/d5TrYvY+Ymrkn /G3jpoFyAnrXdmAqZobgX/yQsS2e6yX73EnY53XTykwTsZjH00uz6dXIu7+NQGWBKpUY5RDfe z8EhM3pN54AjuJzXHXuP/NpXnBa7g12ypQNyLeIZCMIiyri1NwtmJWIsSvsvsl2BkVl0ztVE9 FSgiaPzOEQNsD6B7y1ENOUngRxpZDAiIsUm0bWI4xw0KQsc2VxlkY1bzK+SEC2suDWmp8qerS cstuFFqw+8tE1Fpwr3aN0zHMR1+qmcX2WKxItF/9gRXDGwkANLyAgqPIlnIEaYH+OtPmlIsC+ HpKjv20fMLiqI4Y+TwL4Qwwb9nG0gAW7UOT4M1adRwh8zxNsYTpuXqPmUckADWYbeqAF4IHjt uF8b4mz5hBxvs2sYz92N9w3Z4AhLEll5/FOuXq8AZdg47XUYJLrhVNgdiXRAyleJWKRkE= X-Spam-Status: No, score=-28.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_BARRACUDACENTRAL, RCVD_IN_DNSWL_LOW, SPF_HELO_NONE, SPF_PASS, TXREP 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, 16 Apr 2020 16:59:58 -0000 All major BSDs implement PT_GET_PROCESS_STATE, but they differ in details and want to implement follow-fork functionality differently. gdb/ChangeLog: * inf-ptrace.h (follow_fork, insert_fork_catchpoint) (remove_fork_catchpoint, post_startup_inferior) (post_attach): Move... * obsd-nat.h (follow_fork, insert_fork_catchpoint) (remove_fork_catchpoint, post_startup_inferior) (post_attach): ...here. * inf-ptrace.c (follow_fork, insert_fork_catchpoint) (remove_fork_catchpoint, post_startup_inferior) (post_attach): Move... * obsd-nat.c (follow_fork, insert_fork_catchpoint) (remove_fork_catchpoint, post_startup_inferior) (post_attach): ...here. =2D-- gdb/ChangeLog | 15 +++++++++++ gdb/inf-ptrace.c | 70 ------------------------------------------------ gdb/inf-ptrace.h | 11 -------- gdb/obsd-nat.c | 63 +++++++++++++++++++++++++++++++++++++++++++ gdb/obsd-nat.h | 12 +++++++++ 5 files changed, 90 insertions(+), 81 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 6c280e3f49f..0ac4ca9f4ef 100644 =2D-- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,18 @@ +2020-04-15 Kamil Rytarowski + + * inf-ptrace.h (follow_fork, insert_fork_catchpoint) + (remove_fork_catchpoint, post_startup_inferior) + (post_attach): Move... + * obsd-nat.h (follow_fork, insert_fork_catchpoint) + (remove_fork_catchpoint, post_startup_inferior) + (post_attach): ...here. + * inf-ptrace.c (follow_fork, insert_fork_catchpoint) + (remove_fork_catchpoint, post_startup_inferior) + (post_attach): Move... + * obsd-nat.c (follow_fork, insert_fork_catchpoint) + (remove_fork_catchpoint, post_startup_inferior) + (post_attach): ...here. + 2020-04-16 Pedro Alves * inferior.c (delete_inferior): Use delete operator directly diff --git a/gdb/inf-ptrace.c b/gdb/inf-ptrace.c index 1fa7aa3f73e..cfc0f54f5f1 100644 =2D-- a/gdb/inf-ptrace.c +++ b/gdb/inf-ptrace.c @@ -68,42 +68,6 @@ typedef std::unique_ptr target_unpush_up; inf_ptrace_target::~inf_ptrace_target () {} -#ifdef PT_GET_PROCESS_STATE - -/* Target hook for follow_fork. On entry and at return inferior_ptid is - the ptid of the followed inferior. */ - -bool -inf_ptrace_target::follow_fork (bool follow_child, bool detach_fork) -{ - if (!follow_child) - { - struct thread_info *tp =3D inferior_thread (); - pid_t child_pid =3D tp->pending_follow.value.related_pid.pid (); - - /* Breakpoints have already been detached from the child by - infrun.c. */ - - if (ptrace (PT_DETACH, child_pid, (PTRACE_TYPE_ARG3)1, 0) =3D=3D -1= ) - perror_with_name (("ptrace")); - } - - return false; -} - -int -inf_ptrace_target::insert_fork_catchpoint (int pid) -{ - return 0; -} - -int -inf_ptrace_target::remove_fork_catchpoint (int pid) -{ - return 0; -} - -#endif /* PT_GET_PROCESS_STATE */ =0C /* Prepare to be traced. */ @@ -159,23 +123,6 @@ inf_ptrace_target::create_inferior (const char *exec_= file, target_post_startup_inferior (ptid); } -#ifdef PT_GET_PROCESS_STATE - -void -inf_ptrace_target::post_startup_inferior (ptid_t pid) -{ - ptrace_event_t pe; - - /* Set the initial event mask. */ - memset (&pe, 0, sizeof pe); - pe.pe_set_event |=3D PTRACE_FORK; - if (ptrace (PT_SET_EVENT_MASK, pid.pid (), - (PTRACE_TYPE_ARG3)&pe, sizeof pe) =3D=3D -1) - perror_with_name (("ptrace")); -} - -#endif - /* Clean up a rotting corpse of an inferior after it died. */ void @@ -255,23 +202,6 @@ inf_ptrace_target::attach (const char *args, int from= _tty) unpusher.release (); } -#ifdef PT_GET_PROCESS_STATE - -void -inf_ptrace_target::post_attach (int pid) -{ - ptrace_event_t pe; - - /* Set the initial event mask. */ - memset (&pe, 0, sizeof pe); - pe.pe_set_event |=3D PTRACE_FORK; - if (ptrace (PT_SET_EVENT_MASK, pid, - (PTRACE_TYPE_ARG3)&pe, sizeof pe) =3D=3D -1) - perror_with_name (("ptrace")); -} - -#endif - /* Detach from the inferior. If FROM_TTY is non-zero, be chatty about it= . */ void diff --git a/gdb/inf-ptrace.h b/gdb/inf-ptrace.h index 05c1277ec4e..fb0fd629c9d 100644 =2D-- a/gdb/inf-ptrace.h +++ b/gdb/inf-ptrace.h @@ -43,17 +43,6 @@ struct inf_ptrace_target : public inf_child_target void create_inferior (const char *, const std::string &, char **, int) override; -#ifdef PT_GET_PROCESS_STATE - bool follow_fork (bool, bool) override; - - int insert_fork_catchpoint (int) override; - - int remove_fork_catchpoint (int) override; - - void post_startup_inferior (ptid_t) override; - - void post_attach (int) override; -#endif void mourn_inferior () override; diff --git a/gdb/obsd-nat.c b/gdb/obsd-nat.c index b1f3d0b1b43..6667a0add7f 100644 =2D-- a/gdb/obsd-nat.c +++ b/gdb/obsd-nat.c @@ -161,3 +161,66 @@ obsd_nat_target::wait (ptid_t ptid, struct target_wai= tstatus *ourstatus, } #endif /* PT_GET_THREAD_FIRST */ + +#ifdef PT_GET_PROCESS_STATE + +void +obsd_nat_target::post_attach (int pid) +{ + ptrace_event_t pe; + + /* Set the initial event mask. */ + memset (&pe, 0, sizeof pe); + pe.pe_set_event |=3D PTRACE_FORK; + if (ptrace (PT_SET_EVENT_MASK, pid, + (PTRACE_TYPE_ARG3)&pe, sizeof pe) =3D=3D -1) + perror_with_name (("ptrace")); +} + +void +obsd_nat_target::post_startup_inferior (ptid_t pid) +{ + ptrace_event_t pe; + + /* Set the initial event mask. */ + memset (&pe, 0, sizeof pe); + pe.pe_set_event |=3D PTRACE_FORK; + if (ptrace (PT_SET_EVENT_MASK, pid.pid (), + (PTRACE_TYPE_ARG3)&pe, sizeof pe) =3D=3D -1) + perror_with_name (("ptrace")); +} + +/* Target hook for follow_fork. On entry and at return inferior_ptid is + the ptid of the followed inferior. */ + +bool +obsd_nat_target::follow_fork (bool follow_child, bool detach_fork) +{ + if (!follow_child) + { + struct thread_info *tp =3D inferior_thread (); + pid_t child_pid =3D tp->pending_follow.value.related_pid.pid (); + + /* Breakpoints have already been detached from the child by + infrun.c. */ + + if (ptrace (PT_DETACH, child_pid, (PTRACE_TYPE_ARG3)1, 0) =3D=3D -1= ) + perror_with_name (("ptrace")); + } + + return false; +} + +int +obsd_nat_target::insert_fork_catchpoint (int pid) +{ + return 0; +} + +int +obsd_nat_target::remove_fork_catchpoint (int pid) +{ + return 0; +} + +#endif /* PT_GET_PROCESS_STATE */ diff --git a/gdb/obsd-nat.h b/gdb/obsd-nat.h index 8b39afc6a25..e5962004d4c 100644 =2D-- a/gdb/obsd-nat.h +++ b/gdb/obsd-nat.h @@ -28,6 +28,18 @@ class obsd_nat_target : public inf_ptrace_target std::string pid_to_str (ptid_t) override; void update_thread_list () override; ptid_t wait (ptid_t, struct target_waitstatus *, int) override; + +#ifdef PT_GET_PROCESS_STATE + bool follow_fork (bool, bool) override; + + int insert_fork_catchpoint (int) override; + + int remove_fork_catchpoint (int) override; + + void post_startup_inferior (ptid_t) override; + + void post_attach (int) override; +#endif }; #endif /* obsd-nat.h */ =2D- 2.25.0