From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1879) id 4E0353858418; Thu, 2 Feb 2023 15:08:47 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 4E0353858418 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1675350527; bh=qqzD3AWoBvkfr/QmYaBU4r21WMDO6iibeP1DMdAxOX4=; h=From:To:Subject:Date:From; b=Ql4Y0zq1MqDsdhgQEhShQiZIhkKtgMu6b8FrQahhvxvwF0L27bOVq7Xt/zq+dq8KK pdqqC4Ey3s3RdP6upt12y8rPJaDklm90BBXDpd8FxWSVsldWYxgCw5nAaYjentx+0p ebWxCU1VVmOLRki0Iz1utUWcviInpYmJWXlWl/yU= Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable From: Simon Marchi To: gdb-cvs@sourceware.org Subject: [binutils-gdb] gdb: add inferior_pre_detach observable X-Act-Checkin: binutils-gdb X-Git-Author: Simon Marchi X-Git-Refname: refs/heads/master X-Git-Oldrev: 7b065306be39502cd2e6b60696280ac720c67e66 X-Git-Newrev: 9056c917b3e7a7d41c586087bdb8779197254d1e Message-Id: <20230202150847.4E0353858418@sourceware.org> Date: Thu, 2 Feb 2023 15:08:47 +0000 (GMT) List-Id: https://sourceware.org/git/gitweb.cgi?p=3Dbinutils-gdb.git;h=3D9056c917b3e7= a7d41c586087bdb8779197254d1e commit 9056c917b3e7a7d41c586087bdb8779197254d1e Author: Simon Marchi Date: Wed Sep 28 14:35:26 2022 -0400 gdb: add inferior_pre_detach observable =20 Add an observable notified in target_detach just before calling the detach method on the inferior's target stack. This allows observer to do some work on the inferior while it's still ptrace-attached, in the case of a native Linux inferior. Specifically, the amd-dbgapi target will need it in order to call amd_dbgapi_process_detach before the process gets ptrace-detached. =20 Change-Id: I28b6065e251012a4c2db8a600fe13ba31671e3c9 Approved-By: Andrew Burgess Diff: --- gdb/observable.c | 1 + gdb/observable.h | 3 +++ gdb/target.c | 2 ++ 3 files changed, 6 insertions(+) diff --git a/gdb/observable.c b/gdb/observable.c index 5906e58628e..28249a5ad01 100644 --- a/gdb/observable.c +++ b/gdb/observable.c @@ -62,6 +62,7 @@ DEFINE_OBSERVABLE (architecture_changed); DEFINE_OBSERVABLE (thread_ptid_changed); DEFINE_OBSERVABLE (inferior_added); DEFINE_OBSERVABLE (inferior_appeared); +DEFINE_OBSERVABLE (inferior_pre_detach); DEFINE_OBSERVABLE (inferior_exit); DEFINE_OBSERVABLE (inferior_removed); DEFINE_OBSERVABLE (memory_changed); diff --git a/gdb/observable.h b/gdb/observable.h index aed326e4338..efd0446e168 100644 --- a/gdb/observable.h +++ b/gdb/observable.h @@ -181,6 +181,9 @@ extern observable inferior_= added; process. */ extern observable inferior_appeared; =20 +/* Inferior INF is about to be detached. */ +extern observable inferior_pre_detach; + /* Either the inferior associated with INF has been detached from the process, or the process has exited. */ extern observable inferior_exit; diff --git a/gdb/target.c b/gdb/target.c index d5bfd7d0849..d0aa8f5cc6c 100644 --- a/gdb/target.c +++ b/gdb/target.c @@ -2528,6 +2528,8 @@ target_detach (inferior *inf, int from_tty) =20 prepare_for_detach (); =20 + gdb::observers::inferior_pre_detach.notify (inf); + /* Hold a strong reference because detaching may unpush the target. */ auto proc_target_ref =3D target_ops_ref::new_reference (inf->process_tar= get ());