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
|
@ -1,3 +1,9 @@
|
|||
2015-11-24 Pedro Alves <palves@redhat.com>
|
||||
|
||||
PR 17539
|
||||
* printcmd.c (display_command): Append new display at the end of
|
||||
the list.
|
||||
|
||||
2015-11-24 Pedro Alves <palves@redhat.com>
|
||||
|
||||
PR 17539
|
||||
|
|
|
@ -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));
|
||||
|
||||
|
|
|
@ -1,3 +1,10 @@
|
|||
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.
|
||||
|
||||
2015-11-24 Pedro Alves <palves@redhat.com>
|
||||
|
||||
PR 17539
|
||||
|
|
|
@ -87,7 +87,7 @@ gdb_test "continue 10" "breakpoint 1.*" "break1 ten"
|
|||
gdb_test "checkpoint" ".*" ""
|
||||
|
||||
gdb_test "info checkpoints" \
|
||||
" 10 .* 9 .* 8 .* 7 .* 6 .* 5 .* 4 .* 3 .* 2 .* 1 .*" \
|
||||
" 1 .* 2 .* 3 .* 4 .* 5 .* 6 .* 7 .* 8 .* 9 .* 10 .*" \
|
||||
"info checkpoints one"
|
||||
|
||||
delete_breakpoints
|
||||
|
@ -294,7 +294,7 @@ gdb_test "continue" \
|
|||
# There should be still at least five forks left
|
||||
#
|
||||
|
||||
gdb_test "info checkpoints" " 5 .* 4 .* 3 .* 2 .* 1 .*" \
|
||||
gdb_test "info checkpoints" " 1 .* 2 .* 3 .* 4 .* 5 .*" \
|
||||
"info checkpoints two"
|
||||
|
||||
#
|
||||
|
|
Loading…
Reference in a new issue