gdb: defer commit resume until all available events are consumed concurrent-displaced-stepping-batching
authorSimon Marchi <simon.marchi@efficios.com>
Mon, 6 Jul 2020 19:53:28 +0000 (15:53 -0400)
committerSimon Marchi <simon.marchi@efficios.com>
Wed, 8 Jul 2020 18:43:16 +0000 (14:43 -0400)
commita33d4569f12ccd88d0e848c6ace060a19241cf1e
tree1d62207235a672984db9464bf9c3ed86c03abeb6
parent0e34289208d7a1486cb4b63eff8be79dc63280a0
gdb: defer commit resume until all available events are consumed

This patch makes GDB defer commit resume when handling a sequence of
target events.

In fetch_inferior_event, a scoped_restore object is instantiated (if
it's not already) to set the defer_commit_resume flag.  Any resumption
that is the result of handling that event will therefore not be
committed.

If there are other events immediatly consumable, they'll all be handled
while the "defer commit resume flag" is set.  Once do_target_wait returns
false, we know that we have consumed all immediatly available events,
then the "defer commit resume" flag is reset and a commit resume is
issued.

After having handled an event in fetch_inferior_event, we call
mark_infrun_async_event_handler to make sure that fetch_inferior_event
gets called at least once more, to get that final call where
do_target_wait returns no event.

Change-Id: I18112ba19a1ff4986530c660f530d847bb4a1f1d
gdb/infrun.c
This page took 0.025048 seconds and 4 git commands to generate.