aboutsummaryrefslogtreecommitdiff
path: root/gdb/target.c
diff options
context:
space:
mode:
authorPatrick Monnerat <patrick@monnerat.net>2022-03-12 13:41:47 +0100
committerTom Tromey <tromey@adacore.com>2022-03-14 07:49:18 -0600
commitfb85cece22a2cb3c0185e61cfc1323e9c5a6466e (patch)
tree24e2ccdafd6784676763833be4b45d9614fa0652 /gdb/target.c
parent79a0742380b5304c734ce6f4359d437325cc7121 (diff)
downloadgdb-fb85cece22a2cb3c0185e61cfc1323e9c5a6466e.zip
gdb-fb85cece22a2cb3c0185e61cfc1323e9c5a6466e.tar.gz
gdb-fb85cece22a2cb3c0185e61cfc1323e9c5a6466e.tar.bz2
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.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/gdb/target.c b/gdb/target.c
index 658698b..e3df927 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. */