forked from Imagelibrary/binutils-gdb
Suppress normal stop observer when it's problematic.
* inferior.h (suppress_normal_stop_observer): New.
* infcall.c (call_function_by_hand): Disable stop events when
doing function calls.
* infmcd.c (suppress_normal_stop_observer): New.
(finish_command_continuation): Call normal_stop observer
explicitly.
(finish_command): Disable stop events inside proceed.
* infrun.c (normal_stop): Don't call normal stop observer if
suppressed of if multi-step is in progress.
This commit is contained in:
@@ -706,6 +706,7 @@ call_function_by_hand (struct value *function, int nargs, struct value **args)
|
||||
|
||||
{
|
||||
struct cleanup *old_cleanups = make_cleanup (null_cleanup, 0);
|
||||
struct cleanup *old_cleanups2;
|
||||
int saved_async = 0;
|
||||
|
||||
/* If all error()s out of proceed ended up calling normal_stop
|
||||
@@ -718,8 +719,12 @@ call_function_by_hand (struct value *function, int nargs, struct value **args)
|
||||
|
||||
if (target_can_async_p ())
|
||||
saved_async = target_async_mask (0);
|
||||
|
||||
|
||||
old_cleanups2 = make_cleanup_restore_integer
|
||||
(&suppress_normal_stop_observer);
|
||||
suppress_normal_stop_observer = 1;
|
||||
proceed (real_pc, TARGET_SIGNAL_0, 0);
|
||||
do_cleanups (old_cleanups2);
|
||||
|
||||
if (saved_async)
|
||||
target_async_mask (saved_async);
|
||||
|
||||
Reference in New Issue
Block a user