testsuite, gdb.btrace: make test names unique
authorMarkus Metzger <markus.t.metzger@intel.com>
Fri, 4 Dec 2020 09:01:29 +0000 (10:01 +0100)
committerMarkus Metzger <markus.t.metzger@intel.com>
Mon, 21 Dec 2020 07:57:37 +0000 (08:57 +0100)
gdb/testsuite/ChangeLog:
2020-12-04  Markus Metzger  <markus.t.metzger@intel.com>

* gdb.btrace/data.exp: Make test names unique.
* gdb.btrace/delta.exp: Likewise.
* gdb.btrace/enable.exp: Likewise.
* gdb.btrace/function_call_history.exp: Likewise.
* gdb.btrace/nohist.exp: Likewise.
* gdb.btrace/non-stop.exp: Likewise.
* gdb.btrace/rn-dl-bind.exp: Likewise.
* gdb.btrace/step.exp: Likewise.
* gdb.btrace/stepi.exp: Likewise.
* gdb.btrace/tailcall.exp: Likewise.

gdb/testsuite/ChangeLog
gdb/testsuite/gdb.btrace/data.exp
gdb/testsuite/gdb.btrace/delta.exp
gdb/testsuite/gdb.btrace/enable.exp
gdb/testsuite/gdb.btrace/function_call_history.exp
gdb/testsuite/gdb.btrace/nohist.exp
gdb/testsuite/gdb.btrace/non-stop.exp
gdb/testsuite/gdb.btrace/rn-dl-bind.exp
gdb/testsuite/gdb.btrace/step.exp
gdb/testsuite/gdb.btrace/stepi.exp
gdb/testsuite/gdb.btrace/tailcall.exp

index 63f7279ac04ed54b227e87bd3ae1743c3cfd6183..0e99e035ac86bb25a55ba690888fed59949952a7 100644 (file)
@@ -1,3 +1,16 @@
+2020-12-21  Markus Metzger  <markus.t.metzger@intel.com>
+
+       * gdb.btrace/data.exp: Make test names unique.
+       * gdb.btrace/delta.exp: Likewise.
+       * gdb.btrace/enable.exp: Likewise.
+       * gdb.btrace/function_call_history.exp: Likewise.
+       * gdb.btrace/nohist.exp: Likewise.
+       * gdb.btrace/non-stop.exp: Likewise.
+       * gdb.btrace/rn-dl-bind.exp: Likewise.
+       * gdb.btrace/step.exp: Likewise.
+       * gdb.btrace/stepi.exp: Likewise.
+       * gdb.btrace/tailcall.exp: Likewise.
+
 2020-12-21  Markus Metzger  <markus.t.metzger@intel.com>
 
        * gdb.btrace/enable.exp: Update error message.
index b10970f6760a4fd8257abc121b9c5660bbc04db3..28ac1ad46ade7dec880a6300a4ed26909aa5cc4d 100644 (file)
@@ -40,16 +40,24 @@ gdb_test "next" ".*main\.3.*"
 gdb_test "reverse-step" ".*test\.4.*"
 
 # we can't read memory while we're replaying
-gdb_test "print glob" "unavailable\[^\\\r\\\n\]*"
-gdb_test "print loc" "unavailable\[^\\\r\\\n\]*"
+with_test_prefix "replay" {
+    with_test_prefix "default" {
+       gdb_test "print glob" "unavailable\[^\\\r\\\n\]*"
+       gdb_test "print loc" "unavailable\[^\\\r\\\n\]*"
+    }
 
-# we can read memory if we explicitly allow it.
-gdb_test_no_output "set record btrace replay-memory-access read-write"
-gdb_test "print glob" "1"
+    # we can read memory if we explicitly allow it.
+    with_test_prefix "read-write" {
+       gdb_test_no_output "set record btrace replay-memory-access read-write"
+       gdb_test "print glob" "1"
+    }
 
-# we can't if we don't explicitly allow it.
-gdb_test_no_output "set record btrace replay-memory-access read-only"
-gdb_test "print glob" "unavailable\[^\\\r\\\n\]*"
+    # we can't if we don't explicitly allow it.
+    with_test_prefix "read-only" {
+       gdb_test_no_output "set record btrace replay-memory-access read-only"
+       gdb_test "print glob" "unavailable\[^\\\r\\\n\]*"
+    }
+}
 
 # stop replaying and try again
 gdb_test "record goto end" ".*main\.3.*"
index 0fe0e99f9aca76ef29cda0e1c363f36bdf3231b4..5489121465328be1b1035c9b3e73e8d1b1f63c02 100644 (file)
@@ -73,18 +73,22 @@ with_test_prefix "twice" {
 }
 
 # check that we can reverse-stepi that instruction
-gdb_test "reverse-stepi"
-gdb_test "info record" [multi_line \
-  "Active record target: record-btrace" \
-  "Recording format: .*" \
-  "Recorded 1 instructions in 1 functions \\\(0 gaps\\\) for .*" \
-  "Replay in progress\.  At instruction 1\." \
-  ] "reverse-stepi"
+with_test_prefix "reverse" {
+    gdb_test "reverse-stepi"
+    gdb_test "info record" [multi_line \
+      "Active record target: record-btrace" \
+      "Recording format: .*" \
+      "Recorded 1 instructions in 1 functions \\\(0 gaps\\\) for .*" \
+      "Replay in progress\.  At instruction 1\." \
+    ]
+}
 
 # and back
-gdb_test "stepi"
-gdb_test "info record" [multi_line \
-  "Active record target: record-btrace" \
-  "Recording format: .*" \
-  "Recorded 1 instructions in 1 functions \\\(0 gaps\\\) for .*" \
-  ] "and back"
+with_test_prefix "forward" {
+    gdb_test "stepi"
+    gdb_test "info record" [multi_line \
+      "Active record target: record-btrace" \
+      "Recording format: .*" \
+      "Recorded 1 instructions in 1 functions \\\(0 gaps\\\) for .*" \
+    ]
+}
index 8ce1dab076f346b737a6e890bf08900930fa7d88..d147e90874acdf977d743322a25186458f0c0004 100644 (file)
@@ -100,7 +100,7 @@ if ![runto_main] {
     untested "failed to run to main"
     return -1
 }
-gdb_test_no_output "record btrace"
+gdb_test_no_output "record btrace" "enable after restart"
 if ![runto_main] {
     untested "failed to run to main"
     return -1
index bc28ec7cccd5de2d3aff727acb25ddea467d13af..51536ff60353b38f01bdf60ca256cb0c36526e78 100644 (file)
@@ -240,7 +240,7 @@ gdb_continue_to_breakpoint "cont to fib.3"
 gdb_continue_to_breakpoint "cont to fib.4"
 
 # start tracing
-gdb_test_no_output "record btrace"
+gdb_test_no_output "record btrace" "start recording after rerun"
 
 # continue until line 30 above
 delete_breakpoints
index 0273ceef81548fa3e8b3186f878094537cc6672e..90883c069732fd7ce04f82edcc55545f6a20c400 100644 (file)
@@ -42,8 +42,12 @@ proc check_not_replaying {} {
 
 gdb_test_no_output "record btrace"
 
-check_not_replaying
+with_test_prefix "forward" {
+    check_not_replaying
+}
 
 gdb_test "reverse-continue" "No more reverse-execution history\.\r\n.*"
 
-check_not_replaying
+with_test_prefix "backward" {
+    check_not_replaying
+}
index 1637fab888aacb5f2a9d55d3b0da026c7895016d..0a9b753eca4cac60b960ada546bf047ce1e9f5db 100644 (file)
@@ -60,17 +60,15 @@ proc gdb_cont_to { threads cmd line nthreads } {
     # the prompt precedes any further output except some errors.
     gdb_test_multiple "$full_cmd &" "$full_cmd: prompt" {
         -re "$gdb_prompt " {
-            pass "$full_cmd: prompt"
+            pass $gdb_test_name
         }
     }
 
     # now check for the expected line - one per thread.
     for {set i 0} {$i < $nthreads} {incr i} {
-        set test "$full_cmd: thread $i"
-
-        gdb_test_multiple "" $test {
+        gdb_test_multiple "" "$full_cmd: thread $i" {
             -re "$line\[^\\\r\\\n\]*\r\n" {
-                pass $test
+                pass $gdb_test_name
             }
         }
     }
@@ -96,9 +94,13 @@ proc gdb_cont_to_no_history { threads cmd nthreads } {
 }
 
 # trace the code between the two breakpoints
-gdb_cont_to_bp_line "$srcfile:$bp_1" all 2
-gdb_test_no_output "record btrace"
-gdb_cont_to_bp_line "$srcfile:$bp_2" all 2
+with_test_prefix "prepare" {
+    gdb_cont_to_bp_line "$srcfile:$bp_1" all 2
+}
+with_test_prefix "record" {
+    gdb_test_no_output "record btrace"
+    gdb_cont_to_bp_line "$srcfile:$bp_2" all 2
+}
 
 # we don't need those breakpoints any longer.
 # they will only disturb our stepping.
@@ -112,15 +114,15 @@ with_test_prefix "navigate" {
     gdb_test "thread apply 1 record goto 2" "$loop_line"
     gdb_test "thread apply 2 record goto 4" "$loop_line"
     gdb_test "thread apply 1 info record" \
-        ".*Replay in progress\.  At instruction 2\."
+        ".*Replay in progress\.  At instruction 2\." "thread 1 at insn 2"
     gdb_test "thread apply 2 info record" \
-        ".*Replay in progress\.  At instruction 4\."
+        ".*Replay in progress\.  At instruction 4\." "thread 2 at insn 4"
 
     gdb_test "thread apply all record goto 5" "$loop_line"
     gdb_test "thread apply 1 info record" \
-        ".*Replay in progress\.  At instruction 5\."
+        ".*Replay in progress\.  At instruction 5\." "thread 1 at insn 5"
     gdb_test "thread apply 2 info record" \
-        ".*Replay in progress\.  At instruction 5\."
+        ".*Replay in progress\.  At instruction 5\." "thread 2 at insn 5"
 }
 
 with_test_prefix "step" {
@@ -177,31 +179,37 @@ with_test_prefix "reverse-step" {
 
 with_test_prefix "continue" {
     with_test_prefix "thread 1" {
-        gdb_cont_to_no_history 1 "continue" 1
-        gdb_test "thread apply 1 info record" \
-            ".*Recorded \[0-9\]+ instructions \[^\\\r\\\n\]*"
-        gdb_test "thread apply 2 info record" \
-            ".*Replay in progress\.  At instruction 5\."
-
-        gdb_cont_to_no_history 1 "reverse-continue" 1
-        gdb_test "thread apply 1 info record" \
-            ".*Replay in progress\.  At instruction 1\."
-        gdb_test "thread apply 2 info record" \
-            ".*Replay in progress\.  At instruction 5\."
+       with_test_prefix "continue" {
+           gdb_cont_to_no_history 1 "continue" 1
+           gdb_test "thread apply 1 info record" \
+               ".*Recorded \[0-9\]+ instructions \[^\\\r\\\n\]*"
+           gdb_test "thread apply 2 info record" \
+               ".*Replay in progress\.  At instruction 5\."
+       }
+       with_test_prefix "reverse-continue" {
+           gdb_cont_to_no_history 1 "reverse-continue" 1
+           gdb_test "thread apply 1 info record" \
+               ".*Replay in progress\.  At instruction 1\."
+           gdb_test "thread apply 2 info record" \
+               ".*Replay in progress\.  At instruction 5\."
+       }
     }
 
     with_test_prefix "thread 2" {
-        gdb_cont_to_no_history 2 "continue" 1
-        gdb_test "thread apply 1 info record" \
-            ".*Replay in progress\.  At instruction 1\."
-        gdb_test "thread apply 2 info record" \
-            ".*Recorded \[0-9\]+ instructions \[^\\\r\\\n\]*"
-
-        gdb_cont_to_no_history 2 "reverse-continue" 1
-        gdb_test "thread apply 1 info record" \
-            ".*Replay in progress\.  At instruction 1\."
-        gdb_test "thread apply 2 info record" \
-            ".*Replay in progress\.  At instruction 1\."
+       with_test_prefix "continue" {
+           gdb_cont_to_no_history 2 "continue" 1
+           gdb_test "thread apply 1 info record" \
+               ".*Replay in progress\.  At instruction 1\."
+           gdb_test "thread apply 2 info record" \
+               ".*Recorded \[0-9\]+ instructions \[^\\\r\\\n\]*"
+       }
+       with_test_prefix "reverse-continue" {
+           gdb_cont_to_no_history 2 "reverse-continue" 1
+           gdb_test "thread apply 1 info record" \
+               ".*Replay in progress\.  At instruction 1\."
+           gdb_test "thread apply 2 info record" \
+               ".*Replay in progress\.  At instruction 1\."
+       }
     }
 }
 
index ab2dda413ef39a1cc24c7eda05e1e3e38ed4c08a..46804864026e6443d80a37fa172a9a316b138de8 100644 (file)
@@ -38,18 +38,18 @@ if ![runto_main] {
 
 # trace the code for the call to test
 gdb_test_no_output "record btrace"
-gdb_test "next" ".*main\.2.*"
+gdb_test "next" ".*main\.2.*" "next.1"
 
 # just dump the function-call-history to help debugging
 gdb_test_no_output "set record function-call-history-size 0"
 gdb_test "record function-call-history /cli 1" ".*"
 
 # check that we can reverse-next and next
-gdb_test "reverse-next" ".*main\.1.*"
-gdb_test "next" ".*main\.2.*"
+gdb_test "reverse-next" ".*main\.1.*" "reverse-next.1"
+gdb_test "next" ".*main\.2.*" "next.2"
 
 # now go into test and try to reverse-next and next over the library call
-gdb_test "reverse-step" ".*test\.3.*"
-gdb_test "reverse-step" ".*test\.2.*"
-gdb_test "reverse-next" ".*test\.1.*"
-gdb_test "next" ".*test\.2.*"
+gdb_test "reverse-step" ".*test\.3.*" "reverse-step.1"
+gdb_test "reverse-step" ".*test\.2.*" "reverse-step.2"
+gdb_test "reverse-next" ".*test\.1.*" "reverse-next.2"
+gdb_test "next" ".*test\.2.*" "next.3"
index 19850256590138a1867faf5a0b64268b004b6529..a71c46dde6bf08c9678ac83e247f897cc5725f5c 100644 (file)
@@ -33,16 +33,20 @@ if ![runto_main] {
 }
 
 # trace the call to the test function
-gdb_test_no_output "record btrace"
-gdb_test "next"
+with_test_prefix "record" {
+    gdb_test_no_output "record btrace"
+    gdb_test "next"
+}
 
 # let's step around a bit
-gdb_test "reverse-next" ".*main\.2.*"
-gdb_test "step" ".*fun4\.2.*"
-gdb_test "next" ".*fun4\.3.*"
-gdb_test "step" ".*fun2\.2.*"
-gdb_test "finish" ".*fun4\.4.*"
-gdb_test "reverse-step" ".*fun2\.3.*"
-gdb_test "reverse-finish" ".*fun4\.3.*"
-gdb_test "reverse-next" ".*fun4\.2.*"
-gdb_test "reverse-finish" ".*main\.2.*"
+with_test_prefix "replay" {
+    gdb_test "reverse-next" ".*main\.2.*" "reverse-next.1"
+    gdb_test "step" ".*fun4\.2.*" "step.1"
+    gdb_test "next" ".*fun4\.3.*" "next.1"
+    gdb_test "step" ".*fun2\.2.*" "step.2"
+    gdb_test "finish" ".*fun4\.4.*" "finish.1"
+    gdb_test "reverse-step" ".*fun2\.3.*" "reverse-step.1"
+    gdb_test "reverse-finish" ".*fun4\.3.*" "reverse-finish.1"
+    gdb_test "reverse-next" ".*fun4\.2.*" "reverse-next.2"
+    gdb_test "reverse-finish" ".*main\.2.*" "reverse-finish.2"
+}
index 1ab1b9adfa161a9df5fe3dcad46224265eba3c93..4e2bf1a8e81884d96c68ff5d446bb0eb433680a5 100644 (file)
@@ -61,82 +61,122 @@ proc check_replay_at { insn } {
     ".*" \
     "Recorded 40 instructions in 16 functions \\\(0 gaps\\\) for .*" \
     "Replay in progress\.  At instruction $insn\." \
-    ]
+    ] "check replay at $insn"
 }
 
 # trace the call to the test function
-gdb_test_no_output "record btrace"
-gdb_test "next"
+with_test_prefix "record" {
+    gdb_test_no_output "record btrace"
+    gdb_test "next" ".*" "next.1"
+}
 
 # we start with stepping to make sure that the trace is fetched automatically
-gdb_test "reverse-stepi" ".*fun4\.5.*"
-gdb_test "reverse-stepi" ".*fun4\.5.*"
+with_test_prefix "fetch" {
+    gdb_test "reverse-stepi" ".*fun4\.5.*" "reverse-stepi.1"
+    gdb_test "reverse-stepi" ".*fun4\.5.*" "reverse-stepi.2"
 
-# let's check where we are in the trace
-with_test_prefix "reverse-stepi to 39" { check_replay_at 39 }
+    # let's check where we are in the trace
+    check_replay_at 39
+}
 
 # let's step forward and check again
-gdb_test "stepi" ".*fun4\.5.*"
-with_test_prefix "stepi to 40" { check_replay_at 40 }
+with_test_prefix "stepi" {
+    gdb_test "stepi" ".*fun4\.5.*"
+    check_replay_at 40
+}
 
 # with the next step, we stop replaying
-gdb_test "stepi" ".*main\.3.*"
-gdb_test "info record" [multi_line \
-  "Active record target: record-btrace" \
-  ".*" \
-  "Recorded 40 instructions in 16 functions \\\(0 gaps\\\) for \[^\\\r\\\n\]*" \
-  ] "stepi to live"
+with_test_prefix "end" {
+    gdb_test "stepi" ".*main\.3.*"
+    gdb_test "info record" [multi_line \
+      "Active record target: record-btrace" \
+      ".*" \
+      "Recorded 40 instructions in 16 functions \\\(0 gaps\\\) for \[^\\\r\\\n\]*" \
+                              ]
+}
 
 # let's try nexti
-gdb_test "reverse-nexti" ".*main\.2.*"
-with_test_prefix "reverse-nexti - 1" { check_replay_at 1 }
+with_test_prefix "reverse-nexti.1" {
+    gdb_test "reverse-nexti" ".*main\.2.*"
+    check_replay_at 1
+}
 
 # we can't reverse-nexti any further
-gdb_test "reverse-nexti" "No more reverse-execution history\.\r\n.*main\.2.*"
-with_test_prefix "reverse-nexti - 1" { check_replay_at 1 }
+with_test_prefix "reverse-nexti.2" {
+    gdb_test "reverse-nexti" \
+       "No more reverse-execution history\.\r\n.*main\.2.*" \
+       "reverse-nexti.2"
+    check_replay_at 1
+}
 
 # but we can step back again
-gdb_test "nexti" ".*main\.3.*" "next, 1.5"
-gdb_test "info record" [multi_line \
-  "Active record target: record-btrace" \
-  ".*" \
-  "Recorded 40 instructions in 16 functions \\\(0 gaps\\\) for \[^\\\r\\\n\]*" \
-  ] "nexti back"
+with_test_prefix "nexti" {
+    gdb_test "nexti" ".*main\.3.*"
+    gdb_test "info record" [multi_line \
+      "Active record target: record-btrace" \
+      ".*" \
+      "Recorded 40 instructions in 16 functions \\\(0 gaps\\\) for \[^\\\r\\\n\]*" \
+                              ]
+}
 
 # let's step from a goto position somewhere in the middle
-gdb_test "record goto 22" ".*fun3\.2.*"
-with_test_prefix "goto 22" { check_replay_at 22 }
+with_test_prefix "goto" {
+    gdb_test "record goto 22" ".*fun3\.2.*"
+    with_test_prefix "goto 22" { check_replay_at 22 }
 
-gdb_test "stepi" ".*fun1\.1.*"
-with_test_prefix "stepi to 23" { check_replay_at 23 }
+    gdb_test "stepi" ".*fun1\.1.*" "stepi.3"
+    with_test_prefix "stepi to 23" { check_replay_at 23 }
 
-gdb_test "reverse-stepi" ".*fun3\.2.*"
-with_test_prefix "reverse-stepi to 22" { check_replay_at 22 }
+    gdb_test "reverse-stepi" ".*fun3\.2.*" "reverse-stepi.3"
+    with_test_prefix "reverse-stepi to 22" { check_replay_at 22 }
 
-gdb_test "nexti" ".*fun3\.3.*"
-with_test_prefix "nexti to 27" { check_replay_at 27 }
+    gdb_test "nexti" ".*fun3\.3.*"
+    with_test_prefix "nexti to 27" { check_replay_at 27 }
 
-gdb_test "reverse-nexti" ".*fun3\.2.*"
-with_test_prefix "reverse-nexti to 22" { check_replay_at 22 }
+    gdb_test "reverse-nexti" ".*fun3\.2.*" "reverse-nexti.3"
+    with_test_prefix "reverse-nexti to 22" { check_replay_at 22 }
+}
 
 # let's try to step off the left end
-gdb_test "record goto begin" ".*main\.2.*"
-with_test_prefix "goto begin" { check_replay_at 1 }
-
-gdb_test "reverse-stepi" "No more reverse-execution history\.\r\n.*main\.2.*"
-gdb_test "reverse-stepi" "No more reverse-execution history\.\r\n.*main\.2.*"
-with_test_prefix "reverse-stepi at begin" { check_replay_at 1 }
-
-gdb_test "reverse-nexti" "No more reverse-execution history\.\r\n.*main\.2.*"
-gdb_test "reverse-nexti" "No more reverse-execution history\.\r\n.*main\.2.*"
-with_test_prefix "reverse-nexti at begin" { check_replay_at 1 }
-
-# we can step forward, though
-gdb_test "stepi" ".*fun4\.1.*"
-with_test_prefix "stepi to 2" { check_replay_at 2 }
+with_test_prefix "goto begin" {
+    gdb_test "record goto begin" ".*main\.2.*"
+    check_replay_at 1
+
+    with_test_prefix "reverse-stepi" {
+       gdb_test "reverse-stepi" \
+           "No more reverse-execution history\.\r\n.*main\.2.*" \
+           "reverse-stepi.1"
+       gdb_test "reverse-stepi" \
+           "No more reverse-execution history\.\r\n.*main\.2.*" \
+           "reverse-stepi.2"
+       check_replay_at 1
+    }
+
+    with_test_prefix "reverse-nexti" {
+       gdb_test "reverse-nexti" \
+           "No more reverse-execution history\.\r\n.*main\.2.*" \
+           "reverse-nexti.1"
+       gdb_test "reverse-nexti" \
+           "No more reverse-execution history\.\r\n.*main\.2.*" \
+           "reverse-nexti.2"
+       check_replay_at 1
+    }
+
+    # we can step forward, though
+    with_test_prefix "stepi" {
+       gdb_test "stepi" ".*fun4\.1.*"
+       check_replay_at 2
+    }
+}
 
 # let's try to step off the left end again
-gdb_test "reverse-stepi" ".*main\.2.*"
-gdb_test "reverse-stepi" "No more reverse-execution history\.\r\n.*main\.2.*"
-gdb_test "reverse-stepi" "No more reverse-execution history\.\r\n.*main\.2.*"
-with_test_prefix "reverse-stepi at begin" { check_replay_at 1 }
+with_test_prefix "reverse-stepi" {
+    gdb_test "reverse-stepi" ".*main\.2.*" "reverse-stepi.1"
+    gdb_test "reverse-stepi" \
+       "No more reverse-execution history\.\r\n.*main\.2.*" \
+       "reverse-stepi.2"
+    gdb_test "reverse-stepi" \
+       "No more reverse-execution history\.\r\n.*main\.2.*" \
+       "reverse-stepi.3"
+    check_replay_at 1
+}
index 2937a3b4fe99e516ff381248691d1e4a9e1ceb2f..4f86a6f20889d8f4c14ff627786f556838f6a6b4 100644 (file)
@@ -93,13 +93,23 @@ gdb_test "up" "#2\[^\r\n\]*main \\(\\) at tailcall.c:37\r\n.*" "up to main"
 gdb_test "down" "#1\[^\r\n\]*foo \\(\\) at tailcall.c:29\r\n.*" "down to foo"
 
 # test stepping into and out of tailcalls.
-gdb_test "finish" "\[^\r\n\]*main \\(\\) at tailcall.c:38\r\n.*"
-gdb_test "reverse-step" "\[^\r\n\]*bar \\(\\) at tailcall.c:24\r\n.*"
-gdb_test "reverse-finish" "\[^\r\n\]*foo \\(\\) at tailcall.c:29\r\n.*"
-gdb_test "reverse-step" "\[^\r\n\]*main \\(\\) at tailcall.c:37\r\n.*"
-gdb_test "next" "\[^\r\n\]*38.*"
-gdb_test "reverse-next" "\[^\r\n\]*main \\(\\) at tailcall.c:37\r\n.*"
-gdb_test "step" "\[^\r\n\]*foo \\(\\) at tailcall.c:29\r\n.*"
-gdb_test "finish" "\[^\r\n\]*main \\(\\) at tailcall.c:38\r\n.*"
-gdb_test "reverse-step" "\[^\r\n\]*bar \\(\\) at tailcall.c:24\r\n.*"
-gdb_test "finish" "\[^\r\n\]*main \\(\\) at tailcall.c:38\r\n.*"
+gdb_test "finish" "\[^\r\n\]*main \\(\\) at tailcall.c:38\r\n.*" \
+    "finish.1"
+gdb_test "reverse-step" "\[^\r\n\]*bar \\(\\) at tailcall.c:24\r\n.*" \
+    "reverse-step.1"
+gdb_test "reverse-finish" "\[^\r\n\]*foo \\(\\) at tailcall.c:29\r\n.*" \
+    "reverse-finish.1"
+gdb_test "reverse-step" "\[^\r\n\]*main \\(\\) at tailcall.c:37\r\n.*" \
+    "reverse-step.2"
+gdb_test "next" "\[^\r\n\]*38.*" \
+    "next.1"
+gdb_test "reverse-next" "\[^\r\n\]*main \\(\\) at tailcall.c:37\r\n.*" \
+    "reverse-next.1"
+gdb_test "step" "\[^\r\n\]*foo \\(\\) at tailcall.c:29\r\n.*" \
+    "step.1"
+gdb_test "finish" "\[^\r\n\]*main \\(\\) at tailcall.c:38\r\n.*" \
+    "finish.2"
+gdb_test "reverse-step" "\[^\r\n\]*bar \\(\\) at tailcall.c:24\r\n.*" \
+    "reverse-step.3"
+gdb_test "finish" "\[^\r\n\]*main \\(\\) at tailcall.c:38\r\n.*" \
+    "finish.3"