mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-19 09:14:14 +08:00
PR gdb/11327, PR gdb/11328, PR breakpoints/11368:
* infrun.c (handle_inferior_event): Change initialization of stop_stack_dummy. (handle_inferior_event): Change assignment to stop_stack_dummy. (normal_stop): Update use of stop_stack_dummy. (struct inferior_status) <stop_stack_dummy>: Change type. * inferior.h (stop_stack_dummy): Update. * infcmd.c (stop_stack_dummy): Change type. * infcall.c (cleanup_delete_std_terminate_breakpoint): New function. (call_function_by_hand): Call set_std_terminate_breakpoint. Rewrite std::terminate handling. * breakpoint.h (enum bptype) <bp_std_terminate, bp_std_terminate_master>: New. (enum stop_stack_kind): New. (struct bpstat_what) <call_dummy>: Change type. (set_std_terminate_breakpoint, delete_std_terminate_breakpoint): Declare. * breakpoint.c (create_std_terminate_master_breakpoint): New function. (update_breakpoints_after_exec): Handle bp_std_terminate_master. Call create_std_terminate_master_breakpoint. (print_it_typical): Handle new breakpoint kinds. (bpstat_stop_status): Handle bp_std_terminate_master. (bpstat_what): Correctly set call_dummy field. Handle bp_std_terminate_master and bp_std_terminate. (print_one_breakpoint_location): Update. (allocate_bp_location): Update. (set_std_terminate_breakpoint): New function. (delete_std_terminate_breakpoint): Likewise. (create_thread_event_breakpoint): Update. (delete_command): Update. (breakpoint_re_set_one): Update. (breakpoint_re_set): Call create_std_terminate_master_breakpoint.
This commit is contained in:
@ -2904,7 +2904,7 @@ handle_inferior_event (struct execution_control_state *ecs)
|
||||
target_last_waitstatus = ecs->ws;
|
||||
|
||||
/* Always clear state belonging to the previous time we stopped. */
|
||||
stop_stack_dummy = 0;
|
||||
stop_stack_dummy = STOP_NONE;
|
||||
|
||||
/* If it's a new process, add it to the thread database */
|
||||
|
||||
@ -3970,7 +3970,7 @@ process_event_stop_test:
|
||||
|
||||
if (what.call_dummy)
|
||||
{
|
||||
stop_stack_dummy = 1;
|
||||
stop_stack_dummy = what.call_dummy;
|
||||
}
|
||||
|
||||
switch (what.main_action)
|
||||
@ -5460,7 +5460,7 @@ Further execution is probably impossible.\n"));
|
||||
stop_registers = regcache_dup (get_current_regcache ());
|
||||
}
|
||||
|
||||
if (stop_stack_dummy)
|
||||
if (stop_stack_dummy == STOP_STACK_DUMMY)
|
||||
{
|
||||
/* Pop the empty frame that contains the stack dummy.
|
||||
This also restores inferior state prior to the call
|
||||
@ -6038,7 +6038,7 @@ struct inferior_status
|
||||
{
|
||||
bpstat stop_bpstat;
|
||||
int stop_step;
|
||||
int stop_stack_dummy;
|
||||
enum stop_stack_kind stop_stack_dummy;
|
||||
int stopped_by_random_signal;
|
||||
int stepping_over_breakpoint;
|
||||
CORE_ADDR step_range_start;
|
||||
|
Reference in New Issue
Block a user