mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-12-26 09:08:59 +00:00
* inferior.h (stop_bpstat): Delete.
* breakpoint.h (bpstat_do_actions): Remove bpstat* argument. * breakpoint.c (bpstat_do_actions): Rename to ... (bpstat_do_actions_1): ... this. Make static. Change return type to int. Return true if a breakpoint proceeded. (bpstat_do_actions): New, as wrapper around bpstat_do_actions_1. (delete_breakpoint): Don't reference the global stop_bpstat; it's gone. * gdbthread.h (struct thread_info): Add stop_bpstat. (save_infrun_state, load_infrun_state): Remove stop_bpstat argument. * thread.c (load_infrun_state, save_infrun_state): Remove stop_bpstat argument, and the code referencing it. * infcall.c: Include "gdbthread.h". (call_function_by_hand): Adjust. * exceptions.c: Include "gdbthread.h". (throw_exception): Adjust. * infcmd.c (stop_bpstat): Delete. (continue_command): In all-stop, set the ignore count on the thread that reported the stop. In non-stop, set it on the current thread. (finish_command_continuation): Adjust. (program_info): Adjust. * infrun.c (clear_proceed_status): Adjust. (context_switch): Don't context-switch stop_bpstat. (handle_inferior_event): Adjust. (normal_stop): Adjust. (save_inferior_status, restore_inferior_status): Adjust. * inf-loop.c (inferior_event_handler): Remove parameter to bpstat_do_actions call. * top.c (command_loop): Remove parameter to bpstat_do_actions call. Call it unconditionally. * event-top.c (command_handler): Ditto. * python/python.c (execute_gdb_command): Ditto.
This commit is contained in:
55
gdb/infcmd.c
55
gdb/infcmd.c
@@ -155,10 +155,6 @@ enum target_signal stop_signal;
|
||||
|
||||
CORE_ADDR stop_pc;
|
||||
|
||||
/* Chain containing status of breakpoint(s) that we have stopped at. */
|
||||
|
||||
bpstat stop_bpstat;
|
||||
|
||||
/* Flag indicating that a command has proceeded the inferior past the
|
||||
current breakpoint. */
|
||||
|
||||
@@ -673,9 +669,23 @@ Can't resume all threads and specify proceed count simultaneously."));
|
||||
stopped at. */
|
||||
if (args != NULL)
|
||||
{
|
||||
bpstat bs = stop_bpstat;
|
||||
bpstat bs = NULL;
|
||||
int num, stat;
|
||||
int stopped = 0;
|
||||
struct thread_info *tp;
|
||||
|
||||
if (non_stop)
|
||||
tp = find_thread_pid (inferior_ptid);
|
||||
else
|
||||
{
|
||||
ptid_t last_ptid;
|
||||
struct target_waitstatus ws;
|
||||
|
||||
get_last_target_status (&last_ptid, &ws);
|
||||
tp = find_thread_pid (last_ptid);
|
||||
}
|
||||
if (tp != NULL)
|
||||
bs = tp->stop_bpstat;
|
||||
|
||||
while ((stat = bpstat_num (&bs, &num)) != 0)
|
||||
if (stat > 0)
|
||||
@@ -1319,7 +1329,14 @@ finish_command_continuation (void *arg)
|
||||
{
|
||||
struct finish_command_continuation_args *a = arg;
|
||||
|
||||
if (bpstat_find_breakpoint (stop_bpstat, a->breakpoint) != NULL
|
||||
bpstat bs = NULL;
|
||||
|
||||
if (!ptid_equal (inferior_ptid, null_ptid)
|
||||
&& target_has_execution
|
||||
&& is_stopped (inferior_ptid))
|
||||
bs = inferior_thread ()->stop_bpstat;
|
||||
|
||||
if (bpstat_find_breakpoint (bs, a->breakpoint) != NULL
|
||||
&& a->function != NULL)
|
||||
{
|
||||
struct type *value_type;
|
||||
@@ -1339,7 +1356,7 @@ finish_command_continuation (void *arg)
|
||||
next stop will be in the same thread that we started doing a
|
||||
finish on. This suppressing (or some other replacement means)
|
||||
should be a thread property. */
|
||||
observer_notify_normal_stop (stop_bpstat);
|
||||
observer_notify_normal_stop (bs);
|
||||
suppress_stop_observer = 0;
|
||||
delete_breakpoint (a->breakpoint);
|
||||
}
|
||||
@@ -1436,9 +1453,10 @@ finish_command (char *arg, int from_tty)
|
||||
static void
|
||||
program_info (char *args, int from_tty)
|
||||
{
|
||||
bpstat bs = stop_bpstat;
|
||||
int num;
|
||||
int stat = bpstat_num (&bs, &num);
|
||||
bpstat bs;
|
||||
int num, stat;
|
||||
struct thread_info *tp;
|
||||
ptid_t ptid;
|
||||
|
||||
if (!target_has_execution)
|
||||
{
|
||||
@@ -1446,6 +1464,23 @@ program_info (char *args, int from_tty)
|
||||
return;
|
||||
}
|
||||
|
||||
if (non_stop)
|
||||
ptid = inferior_ptid;
|
||||
else
|
||||
{
|
||||
struct target_waitstatus ws;
|
||||
get_last_target_status (&ptid, &ws);
|
||||
}
|
||||
|
||||
if (ptid_equal (ptid, null_ptid) || is_exited (ptid))
|
||||
error (_("Invalid selected thread."));
|
||||
else if (is_running (ptid))
|
||||
error (_("Selected thread is running."));
|
||||
|
||||
tp = find_thread_pid (ptid);
|
||||
bs = tp->stop_bpstat;
|
||||
stat = bpstat_num (&bs, &num);
|
||||
|
||||
target_files_info ();
|
||||
printf_filtered (_("Program stopped at %s.\n"),
|
||||
hex_string ((unsigned long) stop_pc));
|
||||
|
||||
Reference in New Issue
Block a user