* infrun.c (normal_stop): Use has_stack_frames instead of

target_has_stack.
	* mi/mi-main.c (mi_execute_command): Avoid calling inferior_thread
	when there is no thread selected.
	(mi_cmd_execute): Don't special case commands that can run without
	a valid selected thread.
	* top.c (execute_command): Don't special case commands that can
	run without a valid selected thread.  Use has_stack_frames.
	* infcmd.c (ensure_valid_thread): New.
	(continue_1, step_1, jump_command, signal_command): Use it.
	(detach_command): Error out if there's no selected thread/inferior.
	* thread.c (print_thread_info): Allow having no thread selected.
	(switch_to_thread): Don't read the PC if there is no current thread.
	(do_restore_current_thread_cleanup): Don't record the current
	frame if there is no current thread.
	(make_cleanup_restore_current_thread): Don't read frame info if
	there is no selected thread.
	(_initialize_thread): Don't mark commands as
	"no_selected_thread_ok".
	* frame.c (get_current_frame): Error out if there is no valid
	selected thread.
	(has_stack_frames): Return false if there is no valid
	selected thread.
	* cli/cli-cmds.c (init_cli_cmds): Don't mark commands as
	"no_selected_thread_ok".
	* cli/cli-decode.c (set_cmd_no_selected_thread_ok)
	(get_cmd_no_selected_thread_ok): Delete.
	* cli/cli-decode.h (CMD_NO_SELECTED_THREAD_OK): Delete.
	(set_cmd_no_selected_thread_ok, get_cmd_no_selected_thread_ok):
	Delete declaration.
	* stack.c (get_selected_block): Use has_stack_frames.
This commit is contained in:
Pedro Alves
2009-03-25 21:42:35 +00:00
parent f04c6d38e2
commit d729566a19
12 changed files with 137 additions and 134 deletions

View File

@@ -6606,19 +6606,6 @@ remote_mourn_1 (struct target_ops *target)
generic_mourn_inferior ();
}
static int
select_new_thread_callback (struct thread_info *th, void* data)
{
if (!is_exited (th->ptid))
{
switch_to_thread (th->ptid);
printf_filtered (_("[Switching to %s]\n"),
target_pid_to_str (inferior_ptid));
return 1;
}
return 0;
}
static void
extended_remote_mourn_1 (struct target_ops *target)
{
@@ -6662,16 +6649,7 @@ extended_remote_mourn_1 (struct target_ops *target)
/* Call common code to mark the inferior as not running. */
generic_mourn_inferior ();
if (have_inferiors ())
{
extern void nullify_last_target_wait_ptid ();
/* Multi-process case. The current process has exited, but
there are other processes to debug. Switch to the first
available. */
iterate_over_threads (select_new_thread_callback, NULL);
nullify_last_target_wait_ptid ();
}
else
if (!have_inferiors ())
{
if (!remote_multi_process_p (rs))
{