List checkpoints in ascending order
Before: (gdb) info checkpoints 3 process 29132 at 0x4008ad, file foo.c, line 81 2 process 29131 at 0x4008ad, file foo.c, line 81 1 process 29130 at 0x4008ad, file foo.c, line 81 * 0 Thread 0x7ffff7fc5740 (LWP 29128) (main process) at 0x4008ad, file foo.c, line 81 After: (gdb) info checkpoints * 0 Thread 0x7ffff7fc5740 (LWP 29128) (main process) at 0x4008ad, file foo.c, line 81 1 process 29130 at 0x4008ad, file foo.c, line 81 2 process 29131 at 0x4008ad, file foo.c, line 81 3 process 29132 at 0x4008ad, file foo.c, line 81 gdb/ChangeLog: 2015-11-24 Pedro Alves <palves@redhat.com> PR 17539 * printcmd.c (display_command): Append new display at the end of the list. gdb/testsuite/ChangeLog: 2015-11-24 Pedro Alves <palves@redhat.com> PR 17539 * gdb.base/display.exp: Expect displays to be sorted in ascending order. Use multi_line. * gdb.base/solib-display.exp: Likewise.
This commit is contained in:
parent
7e0aa6aa99
commit
2f341b6e28
4 changed files with 45 additions and 7 deletions
|
@ -63,6 +63,21 @@ forks_exist_p (void)
|
|||
return (fork_list != NULL);
|
||||
}
|
||||
|
||||
/* Return the last fork in the list. */
|
||||
|
||||
static struct fork_info *
|
||||
find_last_fork (void)
|
||||
{
|
||||
struct fork_info *last;
|
||||
|
||||
if (fork_list == NULL)
|
||||
return NULL;
|
||||
|
||||
for (last = fork_list; last->next != NULL; last = last->next)
|
||||
;
|
||||
return last;
|
||||
}
|
||||
|
||||
/* Add a fork to the internal fork list. */
|
||||
|
||||
struct fork_info *
|
||||
|
@ -83,8 +98,16 @@ add_fork (pid_t pid)
|
|||
fp = XCNEW (struct fork_info);
|
||||
fp->ptid = ptid_build (pid, pid, 0);
|
||||
fp->num = ++highest_fork_num;
|
||||
fp->next = fork_list;
|
||||
fork_list = fp;
|
||||
|
||||
if (fork_list == NULL)
|
||||
fork_list = fp;
|
||||
else
|
||||
{
|
||||
struct fork_info *last = find_last_fork ();
|
||||
|
||||
last->next = fp;
|
||||
}
|
||||
|
||||
return fp;
|
||||
}
|
||||
|
||||
|
@ -353,12 +376,13 @@ linux_fork_killall (void)
|
|||
void
|
||||
linux_fork_mourn_inferior (void)
|
||||
{
|
||||
struct fork_info *last;
|
||||
int status;
|
||||
|
||||
/* Wait just one more time to collect the inferior's exit status.
|
||||
Do not check whether this succeeds though, since we may be
|
||||
dealing with a process that we attached to. Such a process will
|
||||
only report its exit status to its original parent. */
|
||||
int status;
|
||||
|
||||
waitpid (ptid_get_pid (inferior_ptid), &status, 0);
|
||||
|
||||
/* OK, presumably inferior_ptid is the one who has exited.
|
||||
|
@ -371,7 +395,8 @@ linux_fork_mourn_inferior (void)
|
|||
inferior_ptid yet. */
|
||||
gdb_assert (fork_list);
|
||||
|
||||
fork_load_infrun_state (fork_list);
|
||||
last = find_last_fork ();
|
||||
fork_load_infrun_state (last);
|
||||
printf_filtered (_("[Switching to %s]\n"),
|
||||
target_pid_to_str (inferior_ptid));
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue