/* Multi-process control for GDB, the GNU debugger.
- Copyright (C) 2008-2019 Free Software Foundation, Inc.
+ Copyright (C) 2008-2020 Free Software Foundation, Inc.
This file is part of GDB.
static int highest_inferior_num;
/* See inferior.h. */
-int print_inferior_events = 1;
+bool print_inferior_events = true;
/* The Current Inferior. This is a strong reference. I.e., whenever
an inferior is the current inferior, its refcount is
exit_inferior_1 (inf, 0);
}
-void
-exit_inferior_silent (int pid)
-{
- struct inferior *inf = find_inferior_pid (pid);
-
- exit_inferior_1 (inf, 1);
-}
-
void
exit_inferior_silent (inferior *inf)
{
{
/* If this is the first inferior with threads, reset the global
thread id. */
+ delete_exited_threads ();
if (!any_thread_p ())
init_thread_list ();
int num_inf = 0;
for (inferior *inf : all_non_exited_inferiors ())
- if (target_has_execution_1 (ptid_t (inf->pid)))
+ if (inf->has_execution ())
for (thread_info *tp ATTRIBUTE_UNUSED : inf->non_exited_threads ())
{
/* Found a live thread in this inferior, go to the next
void
prune_inferiors (void)
{
- struct inferior *ss, **ss_link;
+ inferior *ss;
ss = inferior_list;
- ss_link = &inferior_list;
while (ss)
{
if (!ss->deletable ()
|| !ss->removable
|| ss->pid != 0)
{
- ss_link = &ss->next;
- ss = *ss_link;
+ ss = ss->next;
continue;
}
- *ss_link = ss->next;
+ inferior *ss_next = ss->next;
delete_inferior (ss);
- ss = *ss_link;
+ ss = ss_next;
}
}
else
uiout->field_skip ("current");
- uiout->field_int ("number", inf->num);
+ uiout->field_signed ("number", inf->num);
uiout->field_string ("target-id", inferior_pid_to_str (inf->pid));
if (inf->vfork_parent)
{
uiout->text (_("\n\tis vfork child of inferior "));
- uiout->field_int ("vfork-parent", inf->vfork_parent->num);
+ uiout->field_signed ("vfork-parent", inf->vfork_parent->num);
}
if (inf->vfork_child)
{
uiout->text (_("\n\tis vfork parent of inferior "));
- uiout->field_int ("vfork-child", inf->vfork_child->num);
+ uiout->field_signed ("vfork-child", inf->vfork_child->num);
}
uiout->text ("\n");
bfd_cache_close_all ();
}
+/* See inferior.h. */
+
+void
+switch_to_inferior_no_thread (inferior *inf)
+{
+ set_current_inferior (inf);
+ switch_to_no_thread ();
+ set_current_program_space (inf->pspace);
+}
+
static void
inferior_command (const char *args, int from_tty)
{
}
else
{
- set_current_inferior (inf);
- switch_to_no_thread ();
- set_current_program_space (inf->pspace);
+ switch_to_inferior_no_thread (inf);
gdb::observers::user_selected_context_changed.notify
(USER_SELECTED_INFERIOR);
if (exec != NULL)
{
/* Switch over temporarily, while reading executable and
- symbols.q. */
- set_current_program_space (inf->pspace);
- set_current_inferior (inf);
- switch_to_no_thread ();
-
+ symbols. */
+ switch_to_inferior_no_thread (inf);
exec_file_attach (exec.get (), from_tty);
symbol_file_add_main (exec.get (), add_flags);
}