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>
|
2015-11-24 Pedro Alves <palves@redhat.com>
|
||||||
|
|
||||||
PR 17539
|
PR 17539
|
||||||
|
|
|
@ -63,6 +63,21 @@ forks_exist_p (void)
|
||||||
return (fork_list != NULL);
|
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. */
|
/* Add a fork to the internal fork list. */
|
||||||
|
|
||||||
struct fork_info *
|
struct fork_info *
|
||||||
|
@ -83,8 +98,16 @@ add_fork (pid_t pid)
|
||||||
fp = XCNEW (struct fork_info);
|
fp = XCNEW (struct fork_info);
|
||||||
fp->ptid = ptid_build (pid, pid, 0);
|
fp->ptid = ptid_build (pid, pid, 0);
|
||||||
fp->num = ++highest_fork_num;
|
fp->num = ++highest_fork_num;
|
||||||
fp->next = fork_list;
|
|
||||||
|
if (fork_list == NULL)
|
||||||
fork_list = fp;
|
fork_list = fp;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
struct fork_info *last = find_last_fork ();
|
||||||
|
|
||||||
|
last->next = fp;
|
||||||
|
}
|
||||||
|
|
||||||
return fp;
|
return fp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -353,12 +376,13 @@ linux_fork_killall (void)
|
||||||
void
|
void
|
||||||
linux_fork_mourn_inferior (void)
|
linux_fork_mourn_inferior (void)
|
||||||
{
|
{
|
||||||
|
struct fork_info *last;
|
||||||
|
int status;
|
||||||
|
|
||||||
/* Wait just one more time to collect the inferior's exit status.
|
/* Wait just one more time to collect the inferior's exit status.
|
||||||
Do not check whether this succeeds though, since we may be
|
Do not check whether this succeeds though, since we may be
|
||||||
dealing with a process that we attached to. Such a process will
|
dealing with a process that we attached to. Such a process will
|
||||||
only report its exit status to its original parent. */
|
only report its exit status to its original parent. */
|
||||||
int status;
|
|
||||||
|
|
||||||
waitpid (ptid_get_pid (inferior_ptid), &status, 0);
|
waitpid (ptid_get_pid (inferior_ptid), &status, 0);
|
||||||
|
|
||||||
/* OK, presumably inferior_ptid is the one who has exited.
|
/* OK, presumably inferior_ptid is the one who has exited.
|
||||||
|
@ -371,7 +395,8 @@ linux_fork_mourn_inferior (void)
|
||||||
inferior_ptid yet. */
|
inferior_ptid yet. */
|
||||||
gdb_assert (fork_list);
|
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"),
|
printf_filtered (_("[Switching to %s]\n"),
|
||||||
target_pid_to_str (inferior_ptid));
|
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>
|
2015-11-24 Pedro Alves <palves@redhat.com>
|
||||||
|
|
||||||
PR 17539
|
PR 17539
|
||||||
|
|
|
@ -87,7 +87,7 @@ gdb_test "continue 10" "breakpoint 1.*" "break1 ten"
|
||||||
gdb_test "checkpoint" ".*" ""
|
gdb_test "checkpoint" ".*" ""
|
||||||
|
|
||||||
gdb_test "info checkpoints" \
|
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"
|
"info checkpoints one"
|
||||||
|
|
||||||
delete_breakpoints
|
delete_breakpoints
|
||||||
|
@ -294,7 +294,7 @@ gdb_test "continue" \
|
||||||
# There should be still at least five forks left
|
# 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"
|
"info checkpoints two"
|
||||||
|
|
||||||
#
|
#
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue