diff options
author | Patrick Monnerat <patrick@monnerat.net> | 2022-03-12 13:41:47 +0100 |
---|---|---|
committer | Tom Tromey <tromey@adacore.com> | 2022-03-14 07:49:18 -0600 |
commit | fb85cece22a2cb3c0185e61cfc1323e9c5a6466e (patch) | |
tree | 24e2ccdafd6784676763833be4b45d9614fa0652 /gdb/target.c | |
parent | 79a0742380b5304c734ce6f4359d437325cc7121 (diff) | |
download | binutils-gdb-fb85cece22a2cb3c0185e61cfc1323e9c5a6466e.tar.gz |
Replace deprecated_target_wait_hook by observers
Commit b60cea7 (Make target_wait options use enum flags) broke
deprecated_target_wait_hook usage: there's a commit comment telling
this hook has not been converted.
Rather than trying to mend it, this patch replaces the hook by two
target_wait observers:
target_pre_wait (ptid_t ptid)
target_post_wait (ptid_t event_ptid)
Upon target_wait entry, target_pre_wait is notified with the ptid
passed to target_wait. Upon exit, target_post_wait is notified with
the event ptid returned by target_wait. Should an exception occur,
event_ptid is null_ptid.
This change benefits to Insight (out-of-tree): there's no real use of the
late hook in gdb itself.
Diffstat (limited to 'gdb/target.c')
-rw-r--r-- | gdb/target.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/gdb/target.c b/gdb/target.c index 658698b4e2b..e3df9275c9a 100644 --- a/gdb/target.c +++ b/gdb/target.c @@ -26,6 +26,7 @@ #include "symtab.h" #include "inferior.h" #include "infrun.h" +#include "observable.h" #include "bfd.h" #include "symfile.h" #include "objfiles.h" @@ -2609,7 +2610,18 @@ target_wait (ptid_t ptid, struct target_waitstatus *status, if (!target_can_async_p (target)) gdb_assert ((options & TARGET_WNOHANG) == 0); - return target->wait (ptid, status, options); + try + { + gdb::observers::target_pre_wait.notify (ptid); + ptid_t event_ptid = target->wait (ptid, status, options); + gdb::observers::target_post_wait.notify (event_ptid); + return event_ptid; + } + catch (...) + { + gdb::observers::target_post_wait.notify (null_ptid); + throw; + } } /* See target.h. */ |