#include "observable.h"
#include "gdbcore.h"
#include "symfile.h"
-#include "common/environ.h"
+#include "gdbsupport/environ.h"
#include "cli/cli-utils.h"
#include "continuations.h"
#include "arch-utils.h"
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
if (pid != 0)
printf_unfiltered (_("[New inferior %d (%s)]\n"),
inf->num,
- target_pid_to_str (ptid_t (pid)));
+ target_pid_to_str (ptid_t (pid)).c_str ());
else
printf_unfiltered (_("[New inferior %d]\n"), inf->num);
}
gdb::observers::inferior_exit.notify (inf);
inf->pid = 0;
- inf->fake_pid_p = 0;
+ inf->fake_pid_p = false;
inf->priv = NULL;
if (inf->vfork_parent != NULL)
inf->pending_detach = 0;
/* Reset it. */
inf->control = inferior_control_state (NO_STOP_QUIETLY);
+
+ /* Clear the register cache and the frame cache. */
+ registers_changed ();
+ reinit_frame_cache ();
}
void
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 (print_inferior_events)
printf_unfiltered (_("[Inferior %d (%s) detached]\n"),
inf->num,
- target_pid_to_str (ptid_t (pid)));
+ target_pid_to_str (ptid_t (pid)).c_str ());
}
void
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;
}
}
/* Converts an inferior process id to a string. Like
target_pid_to_str, but special cases the null process. */
-static const char *
+static std::string
inferior_pid_to_str (int pid)
{
if (pid != 0)
filename = _("<noexec>");
uiout->message (_("[Switching to inferior %d [%s] (%s)]\n"),
- inf->num, inferior_pid_to_str (inf->pid), filename);
+ inf->num, inferior_pid_to_str (inf->pid).c_str (), filename);
}
/* Prints the list of inferiors and their details on UIOUT. This is a
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");
add_setshow_boolean_cmd ("inferior-events", no_class,
&print_inferior_events, _("\
-Set printing of inferior events (e.g., inferior start and exit)."), _("\
-Show printing of inferior events (e.g., inferior start and exit)."), NULL,
+Set printing of inferior events (such as inferior start and exit)."), _("\
+Show printing of inferior events (such as inferior start and exit)."), NULL,
NULL,
show_print_inferior_events,
&setprintlist, &showprintlist);