]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
gdb tests: Allow for "LWP" or "process" in thread IDs from info threads
authorJohn Baldwin <jhb@FreeBSD.org>
Sat, 23 Mar 2024 00:29:47 +0000 (17:29 -0700)
committerJohn Baldwin <jhb@FreeBSD.org>
Sat, 23 Mar 2024 00:29:47 +0000 (17:29 -0700)
Several tests assume that the first word after a thread ID in 'info
threads' output is "Thread".  However, several targets use "LWP"
instead such as the FreeBSD and NetBSD native targets.  The Linux
native target also uses "LWP" if libthread_db is not being used.
Targets that do not support threads use "process" as the first word
via normal_pid_to_str.

Add a tdlabel_re global variable as a regular-expression for a thread
label in `info threads' that matches either "process", "Thread", or
"LWP".

Some other tests in the tree don't require a specific word, and
some targets may use other first words (e.g. OpenBSD uses "thread"
and Ravenscar threads use "Ravenscar Thread").

24 files changed:
gdb/testsuite/gdb.multi/multi-target-thread-find.exp
gdb/testsuite/gdb.python/py-thrhandle.exp
gdb/testsuite/gdb.server/stop-reply-no-thread-multi.exp
gdb/testsuite/gdb.threads/execl.exp
gdb/testsuite/gdb.threads/fork-child-threads.exp
gdb/testsuite/gdb.threads/fork-thread-pending.exp
gdb/testsuite/gdb.threads/info-threads-cur-sal.exp
gdb/testsuite/gdb.threads/interrupt-while-step-over.exp
gdb/testsuite/gdb.threads/leader-exit.exp
gdb/testsuite/gdb.threads/manythreads.exp
gdb/testsuite/gdb.threads/no-unwaited-for-left.exp
gdb/testsuite/gdb.threads/non-ldr-exc-2.exp
gdb/testsuite/gdb.threads/pthreads.exp
gdb/testsuite/gdb.threads/signal-command-handle-nopass.exp
gdb/testsuite/gdb.threads/signal-command-multiple-signals-pending.exp
gdb/testsuite/gdb.threads/signal-delivered-right-thread.exp
gdb/testsuite/gdb.threads/signal-sigtrap.exp
gdb/testsuite/gdb.threads/staticthreads.exp
gdb/testsuite/gdb.threads/thread-specific-bp.exp
gdb/testsuite/gdb.threads/thread-specific.exp
gdb/testsuite/gdb.threads/tls.exp
gdb/testsuite/gdb.trace/report.exp
gdb/testsuite/gdb.trace/strace.exp
gdb/testsuite/lib/gdb.exp

index e07c5c46f87756c7ed3840c081705262b4556266..ee6df54b41154897ac5715e92611bc09097fe2e2 100644 (file)
@@ -50,7 +50,7 @@ proc test_thread_find {} {
     }
     set any "\[^\r\n\]*"
     gdb_test_multiple "info threads" "collect thread id" {
-       -re ". ($decimal).$decimal  (Thread ${any}) \"threadname_\[0-9\]+\" $any" {
+       -re ". ($decimal).$decimal  (${tdlabel_re} ${any}) \"threadname_\[0-9\]+\" $any" {
            set thr_num $expect_out(1,string)
            set target_id($thr_num) $expect_out(2,string)
            exp_continue
index 939f0a86f480e94cec8cc01264016ab929c77032..702a3a53fd8d3b7b15cfbfc388327daf89daeba6 100644 (file)
@@ -63,7 +63,7 @@ gdb_test "continue" \
 # reported in the "Id" column.
 
 gdb_test "info threads"  \
-       {.*[\r\n]+\* +([0-9]+) +Thread[^\r\n]* do_something \(n=\1\) at.*}
+       [format {.*[\r\n]+\* +([0-9]+) +%s[^\r\n]* do_something \(n=\1\) at.*} $tdlabel_re]
 
 # Check for expected results when passing a valid thread handle to
 # thread_from_handle().
index d311c19b71b143d16c59ccb0abcbcbe2afd9bae9..bd1acda4d9034b3fe3b3f0a41f90a5e7421bb80d 100644 (file)
@@ -84,13 +84,13 @@ proc run_test { target_non_stop disable_feature } {
 
     # There should be only one thread listed at this point.
     gdb_test_multiple "info threads" "" {
-       -re "2 Thread.*$gdb_prompt $" {
+       -re "2 ${tdlabel_re}.*$gdb_prompt $" {
            fail $gdb_test_name
        }
        -re "has terminated.*$gdb_prompt $" {
            fail $gdb_test_name
        }
-       -re "\\\* 1\[\t \]*Thread\[^\r\n\]*\r\n$gdb_prompt $" {
+       -re "\\\* 1\[\t \]*${tdlabel_re}\[^\r\n\]*\r\n$gdb_prompt $" {
            pass $gdb_test_name
        }
     }
@@ -100,7 +100,7 @@ proc run_test { target_non_stop disable_feature } {
 
     # There should be two threads at this point with thread 1 selected.
     gdb_test "info threads" \
-       "\\\* 1\[\t \]*Thread\[^\r\n\]*\r\n  2\[\t \]*Thread\[^\r\n\]*" \
+       "\\\* 1\[\t \]*${tdlabel_re}\[^\r\n\]*\r\n  2\[\t \]*${tdlabel_re}\[^\r\n\]*" \
        "second thread should now exist"
 
     # Switch threads.
@@ -124,7 +124,7 @@ proc run_test { target_non_stop disable_feature } {
 
     # Check that thread 2 is still selected.
     gdb_test "info threads" \
-       "  1\[\t \]*Thread\[^\r\n\]*\r\n\\\* 2\[\t \]*Thread\[^\r\n\]*" \
+       "  1\[\t \]*${tdlabel_re}\[^\r\n\]*\r\n\\\* 2\[\t \]*${tdlabel_re}\[^\r\n\]*" \
        "second thread should still be selected after stepi"
 
     # Turn scheduler locking off again so that when we continue all
index 5a7b9e53a95d38a0e277a094aec694dca7a473cc..194438bce3cd63617efa9bd35b2cb78208e11ddb 100644 (file)
@@ -43,7 +43,7 @@ gdb_test "b [gdb_get_line_number "breakpoint here"]" \
 
 gdb_test "continue" ".*breakpoint here.*" "continue to exec"
 
-gdb_test "info threads" "1 *Thread.*2 *Thread.*3 *Thread.*" "info threads before exec"
+gdb_test "info threads" "1 *${tdlabel_re}.*2 *${tdlabel_re}.*3 *${tdlabel_re}.*" "info threads before exec"
 
 # Work around PR25656, where the breakpoint above sets 2 breakpoint locations:
 # - one on gdb.threads/execl.c:$linenumber, and
@@ -58,11 +58,11 @@ gdb_test "continue" ".*Breakpoint 1, main.*" \
     "continue across exec"
 
 gdb_test_multiple "info threads" "info threads after exec" {
-    -re "2 *Thread .*$gdb_prompt $" {
+    -re "2 *${tdlabel_re} .*$gdb_prompt $" {
        # Old threads left behind.
        fail "$gdb_test_name"
     }
-    -re "4 *Thread .*$gdb_prompt $" {
+    -re "4 *${tdlabel_re} .*$gdb_prompt $" {
        # New threads registered.
        fail "$gdb_test_name"
     }
index 91d2a934d3c6ea75bdd65cf5f196be59ecfafb88..8f1397008c225248a51d528f94ce896e121257bf 100644 (file)
@@ -44,4 +44,4 @@ gdb_test "continue" "Breakpoint 2, start.*" "get to the spawned thread"
 # * 3 Thread 0x40a00950 (LWP 5553)  start (arg=0x0) at ../.././gdb/testsuite/gdb.threads/fork-child-threads.c:28
 #   2 Thread 0x2aaaaaac3000 (LWP 5552)  0x00000031674076dd in pthread_join (threadid=<optimized out>, thread_return=<optimized out>) at pthread_join.c:89
 
-gdb_test "info threads" " Thread .* Thread .*" "two threads found"
+gdb_test "info threads" " ${tdlabel_re} .* ${tdlabel_re} .*" "two threads found"
index 25bd8e69799e0b596e95916367368daa9d0e4e68..d31a347ec855cada5ad9a3e91c0b668864fc2eda 100644 (file)
@@ -37,7 +37,7 @@ gdb_breakpoint "start" "" "1, set breakpoint at start"
 
 gdb_test "continue" "Catchpoint.*" "1, get to the fork event"
 
-gdb_test "info threads" " Thread .* Thread .* Thread .* Thread .*" "1, multiple threads found"
+gdb_test "info threads" " ${tdlabel_re} .* ${tdlabel_re} .* ${tdlabel_re} .* ${tdlabel_re} .*" "1, multiple threads found"
 
 gdb_test "thread 1" ".*" "1, switched away from event thread"
 
@@ -45,10 +45,10 @@ gdb_test "continue" "Not resuming.*" "1, refused to resume"
 
 set test "1, followed to the child, found one thread"
 gdb_test_multiple "info threads" "metest" {
-    -re " Thread .* Thread .*$gdb_prompt $" {
+    -re " ${tdlabel_re} .* ${tdlabel_re} .*$gdb_prompt $" {
        fail "$test"
     }
-    -re " Thread .*$gdb_prompt $" {
+    -re " ${tdlabel_re} .*$gdb_prompt $" {
        pass "$test"
     }
     -re "$gdb_prompt $" {
@@ -63,10 +63,10 @@ gdb_test "continue" "Breakpoint 3, start.*" "1, get to the spawned thread in for
 
 set test "1, followed to the child, found two threads"
 gdb_test_multiple "info threads" "$test" {
-    -re " Thread .* Thread .* Thread .*$gdb_prompt $" {
+    -re " ${tdlabel_re} .* ${tdlabel_re} .* ${tdlabel_re} .*$gdb_prompt $" {
        fail "$test"
     }
-    -re " Thread .* Thread .*$gdb_prompt $" {
+    -re " ${tdlabel_re} .* ${tdlabel_re} .*$gdb_prompt $" {
        pass "$test"
     }
     -re "$gdb_prompt $" {
@@ -90,16 +90,16 @@ gdb_breakpoint "start"
 
 gdb_test "continue" "Catchpoint.*" "2, get to the fork event"
 
-gdb_test "info threads" " Thread .* Thread .* Thread .* Thread .*" "2, multiple threads found"
+gdb_test "info threads" " ${tdlabel_re} .* ${tdlabel_re} .* ${tdlabel_re} .* ${tdlabel_re} .*" "2, multiple threads found"
 
 gdb_test "continue" "Breakpoint 3, start.*" "2, get to the spawned thread in fork child"
 
 set test "2, followed to the child, found two threads"
 gdb_test_multiple "info threads" "$test" {
-    -re " Thread .* Thread .* Thread .*$gdb_prompt $" {
+    -re " ${tdlabel_re} .* ${tdlabel_re} .* ${tdlabel_re} .*$gdb_prompt $" {
        fail "$test"
     }
-    -re " Thread .* Thread .*$gdb_prompt $" {
+    -re " ${tdlabel_re} .* ${tdlabel_re} .*$gdb_prompt $" {
        pass "$test"
     }
     -re "$gdb_prompt $" {
index 44dfd0d03ade53ed77cb8ab92125eaddf6eaffea..664c962992bc629f016d5b12a7c09ef37c0672ca 100644 (file)
@@ -43,8 +43,8 @@ gdb_test "list $line" \
 gdb_test "info threads" \
     [multi_line \
         "\[ \t\]*Id\[ \t\]+Target\[ \t\]+Id\[ \t\]+Frame\[ \t\]*" \
-        "  1 *Thread \[^\r\n\]* .* \[^\r\n\]*" \
-        "\\* 2 *Thread \[^\r\n\]* at \[^\r\n\]*"] \
+        "  1 *${tdlabel_re} \[^\r\n\]* .* \[^\r\n\]*" \
+        "\\* 2 *${tdlabel_re} \[^\r\n\]* at \[^\r\n\]*"] \
     "info threads before break"
 
 # Check that "break" is still operating on the same file by default.
@@ -53,8 +53,8 @@ gdb_test "break $line" ".*${srcfile2}.*" "break on line"
 gdb_test "info threads" \
     [multi_line \
         "\[ \t\]*Id\[ \t\]+Target\[ \t\]+Id\[ \t\]+Frame\[ \t\]*" \
-        "  1 *Thread \[^\r\n\]* .* \[^\r\n\]*" \
-        "\\* 2 *Thread \[^\r\n\]* at \[^\r\n\]*"] \
+        "  1 *${tdlabel_re} \[^\r\n\]* .* \[^\r\n\]*" \
+        "\\* 2 *${tdlabel_re} \[^\r\n\]* at \[^\r\n\]*"] \
     "info threads before list"
 
 # And that so is "list".
index 9e669ac756b1bedfcfe4342a25a7f266a50aa86f..bb05754a5baee49acaf333c940c9a4a3a7798e37 100644 (file)
@@ -74,6 +74,7 @@ proc test_one_iteration {} {
     global gdb_prompt
     global NUM_THREADS
     global decimal
+    global tdlabel_re
 
     set saw_continuing 0
     set test "continue -a &"
@@ -145,7 +146,7 @@ proc test_one_iteration {} {
     set running_count 0
     set test "all threads are stopped"
     return_if_nonzero [gdb_test_multiple "info threads" $test {
-       -re "Thread \[^\r\n\]* \\(running\\)" {
+       -re "${tdlabel_re} \[^\r\n\]* \\(running\\)" {
            incr running_count
            exp_continue
        }
index 7b64e3a49dc6935004c810a6425e49673d85407c..daddc15140d4cfe31df3cec04500549cc6ac5a8a 100644 (file)
@@ -34,7 +34,7 @@ gdb_breakpoint [gdb_get_line_number "break-here"]
 gdb_continue_to_breakpoint "break-here" ".* break-here .*"
 
 gdb_test "info threads" \
-        "\r\n\[ \t\]*Id\[ \t\]+Target\[ \t\]+Id\[ \t\]+Frame\[ \t\]*\r\n\\* 2 *Thread \[^\r\n\]* at \[^\r\n\]*" \
+        "\r\n\[ \t\]*Id\[ \t\]+Target\[ \t\]+Id\[ \t\]+Frame\[ \t\]*\r\n\\* 2 *${tdlabel_re} \[^\r\n\]* at \[^\r\n\]*" \
         "single thread has been left"
 
 # Test that ctrl-c works even if the leader has exited.
index 6e236c2c91e82f9fa04f6e2bbd360b6b658c0d26..e660506ca0c9ce28c6d8b016058d9ff3b5e50d00 100644 (file)
@@ -112,7 +112,7 @@ interrupt_and_wait "stop threads 1"
 set cmd "info threads"
 set ok 0
 gdb_test_multiple $cmd $cmd {
-    -re " 1 *Thread " {
+    -re " 1 *${tdlabel_re} " {
        set ok 1
        exp_continue
     }
index 7f19d733bb288c528b063d4dab27621460edee89..e04cd6bce72bede105c846557e1083651123af3c 100644 (file)
@@ -42,7 +42,7 @@ gdb_test "continue" \
     "continue stops when thread 2 exits"
 
 gdb_test "info threads" \
-        "\r\n\[ \t\]*Id\[ \t\]+Target\[ \t\]+Id\[ \t\]+Frame\[ \t\]*\r\n *1 *Thread \[^\r\n\]* \[^\r\n\]*\[\r\n\]*The current thread <Thread ID 2> has terminated.*" \
+        "\r\n\[ \t\]*Id\[ \t\]+Target\[ \t\]+Id\[ \t\]+Frame\[ \t\]*\r\n *1 *${tdlabel_re} \[^\r\n\]* \[^\r\n\]*\[\r\n\]*The current thread <Thread ID 2> has terminated.*" \
         "only main thread left, thread 2 terminated"
 
 # Select the main thread, let the third thread start, and stop at the
@@ -63,7 +63,7 @@ gdb_test "continue" \
     "continue stops when the main thread exits"
 
 gdb_test "info threads" \
-        "\r\n\[ \t\]*Id\[ \t\]+Target\[ \t\]+Id\[ \t\]+Frame\[ \t\]*\r\n *3 *Thread \[^\r\n\]* \[^\r\n\]*\[\r\n\]*The current thread <Thread ID 1> has terminated.*" \
+        "\r\n\[ \t\]*Id\[ \t\]+Target\[ \t\]+Id\[ \t\]+Frame\[ \t\]*\r\n *3 *${tdlabel_re} \[^\r\n\]* \[^\r\n\]*\[\r\n\]*The current thread <Thread ID 1> has terminated.*" \
         "only thread 3 left, main thread terminated"
 
 # Make sure thread apply all works when we have exited threads in the
index df52159ba5021f5d015d9585a2097937b91e221c..de63df38e4fd5b359b327ad047ed85b961d061bc 100644 (file)
@@ -26,6 +26,7 @@ if {[gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${binfile}" executab
 
 proc do_test { lock_sched nonstop } {
     global executable
+    global tdlabel_re
 
     save_vars { GDBFLAGS } {
       append GDBFLAGS " -ex \"set non-stop $nonstop\""
@@ -44,7 +45,7 @@ proc do_test { lock_sched nonstop } {
     }
 
     gdb_test "info threads" \
-       "\r\n\[ \t\]*Id\[ \t\]+Target\[ \t\]+Id\[ \t\]+Frame\[ \t\]*\r\n\\* 2 *Thread \[^\r\n\]* at \[^\r\n\]*" \
+       "\r\n\[ \t\]*Id\[ \t\]+Target\[ \t\]+Id\[ \t\]+Frame\[ \t\]*\r\n\\* 2 *${tdlabel_re} \[^\r\n\]* at \[^\r\n\]*" \
        "single thread left"
 
     # Also test with sched-lock to make sure we can follow the
index 68108329be8547be4c5782b08f69ac251568b8ec..4a63a53598d45765f7f795e0f7ccf7aab46facdf 100644 (file)
@@ -123,11 +123,12 @@ proc test_startup {} {
     global srcdir srcfile gdb_prompt expect_out
     global horiz
     global main_id thread1_id thread2_id
+    global tdlabel_re
 
     # We should be able to do an info threads before starting any others.
     set return_me 1
     gdb_test_multiple "info threads" "info threads" {
-       -re ".*Thread.*main.*$gdb_prompt $" {
+       -re ".*${tdlabel_re}.*main.*$gdb_prompt $" {
            pass "info threads"
            set return_me 0
        }
@@ -142,7 +143,7 @@ proc test_startup {} {
 
     # Extract the thread id number of main thread from "info threads" output.
     gdb_test_multiple "info threads" "get main thread id" {
-       -re "(\[0-9\]+)(${horiz}Thread${horiz}main.*)($gdb_prompt $)" {
+       -re "(\[0-9\]+)(${horiz}${tdlabel_re}${horiz}main.*)($gdb_prompt $)" {
        }
     }
 
@@ -157,7 +158,7 @@ proc test_startup {} {
 
     # Extract the thread id number of thread 1 from "info threads" output.
     gdb_test_multiple "info threads" "get thread 1 id" {
-       -re "(\[0-9\]+)(${horiz}Thread${horiz}thread1.*)($gdb_prompt $)" {
+       -re "(\[0-9\]+)(${horiz}${tdlabel_re}${horiz}thread1.*)($gdb_prompt $)" {
        }
     }
 
@@ -172,7 +173,7 @@ proc test_startup {} {
 
     # Extract the thread id number of thread 2 from "info threads" output.
     gdb_test_multiple "info threads" "get thread 2 id" {
-       -re "(\[0-9\]+)(${horiz}Thread${horiz}thread2.*)($gdb_prompt $)" {
+       -re "(\[0-9\]+)(${horiz}${tdlabel_re}${horiz}thread2.*)($gdb_prompt $)" {
        }
     }
 
index e41fceb6b32430c54c4921c4d92986e64326fbe2..808006ab7b440e3567e3ff6081d3a9528cdcfa1c 100644 (file)
@@ -32,7 +32,7 @@ if {[gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${binfile}" \
 # request a signal be delivered with the "signal" command.
 
 proc test { step_over } {
-    global srcfile binfile
+    global srcfile binfile tdlabel_re
 
     with_test_prefix "step-over $step_over" {
        clean_restart ${binfile}
@@ -59,7 +59,7 @@ proc test { step_over } {
 
        gdb_test "thread 1" "Switching to thread 1.*"
 
-       set pattern "\\\* 1\[ \t\]+Thread.*"
+       set pattern "\\\* 1\[ \t\]+${tdlabel_re}.*"
 
        gdb_test "info threads" $pattern "thread 1 selected"
 
index 1b46df7dc84175c3be29469341a4f3d4f796c34b..5f47d75a981a1e79e76ccd83c39c14137ab7b507 100644 (file)
@@ -29,7 +29,7 @@ if {[gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${binfile}" \
 # scheduler-locking) of the test to perform.
 
 proc test { schedlock } {
-    global srcfile binfile
+    global srcfile binfile tdlabel_re
 
     with_test_prefix "schedlock $schedlock" {
        clean_restart ${binfile}
@@ -60,7 +60,7 @@ proc test { schedlock } {
        gdb_test "continue" "all_threads_signalled.*" \
            "continue to all_threads signalled"
 
-       gdb_test "info threads" "\\\* 1\[ \t\]+Thread.*" "thread 1 selected"
+       gdb_test "info threads" "\\\* 1\[ \t\]+${tdlabel_re}.*" "thread 1 selected"
 
        # With schedlock still enabled, let each thread report its
        # signal.
index 5812c7dd8f059f0c7c222504d80842f92137bbfc..71a85986b854dcd33e9ca44ae94c022da6235d47 100644 (file)
@@ -26,7 +26,7 @@ if {[gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${binfile}" \
 # with "signal 0" or "continue".
 
 proc test { command } {
-    global srcfile binfile
+    global srcfile binfile tdlabel_re
 
     with_test_prefix "$command" {
        clean_restart ${binfile}
@@ -39,7 +39,7 @@ proc test { command } {
 
        gdb_test "continue" "Thread 2 .*received signal SIGUSR1.*" "stop with SIGUSR1"
 
-       set pattern "\\\* 2\[ \t\]+Thread.*"
+       set pattern "\\\* 2\[ \t\]+${tdlabel_re}.*"
 
        gdb_test "info threads" $pattern "thread 2 intercepted signal"
 
index 369467569544f3e215c6f9b435d3722cf4dc121f..8058a5b601600dda203ccbc480643b0ab0c2a870 100644 (file)
@@ -29,7 +29,7 @@ if {[build_executable "failed to prepare" $testfile $srcfile \
 # SIGTRAP.
 
 proc test { sigtrap_thread } {
-    global srcfile binfile
+    global srcfile binfile tdlabel_re
 
     with_test_prefix "sigtrap thread $sigtrap_thread" {
        clean_restart ${binfile}
@@ -38,7 +38,7 @@ proc test { sigtrap_thread } {
            return 0
        }
 
-       set pattern "\\\* 2\[ \t\]+Thread.*"
+       set pattern "\\\* 2\[ \t\]+${tdlabel_re}.*"
        gdb_test "info threads" $pattern "thread 2 hit breakpoint"
 
        gdb_test "break sigtrap_handler" "Breakpoint .* at .*$srcfile.*"
@@ -54,7 +54,7 @@ proc test { sigtrap_thread } {
            "Continuing with signal SIGTRAP.*Breakpoint .* sigtrap_handler .*" \
            "signal SIGTRAP reaches handler"
 
-       set pattern "\\\* $sigtrap_thread\[ \t\]+Thread.*"
+       set pattern "\\\* $sigtrap_thread\[ \t\]+${tdlabel_re}.*"
        gdb_test "info threads" $pattern "right thread got the signal"
     }
 }
index 0a3a104e3885ed8d426753bc9d5522f2c44db9c4..320bbbbf3d6bf32d20c99e197f8b344a48decbd8 100644 (file)
@@ -73,7 +73,7 @@ gdb_test "continue" " .*sem_post .*" "handle $sig helps"
 
 set test "info threads"
 gdb_test_multiple "info threads" "$test" {
-    -re " Thread .*$gdb_prompt " {
+    -re " ${tdlabel_re} .*$gdb_prompt " {
        pass "$test"
     }
     -re "$gdb_prompt " {
index 5508c919201b7095aa5e27e98479c1125311dbec..e7641d2c9b43bf2e9f8dd8c0e4f7b4b704deec0a 100644 (file)
@@ -29,11 +29,12 @@ if {[gdb_compile_pthreads \
 
 proc get_thread_id {func} {
     global gdb_prompt
+    global tdlabel_re
 
     set thre -1
     set test "get $func thread id"
     gdb_test_multiple "info threads" $test {
-       -re "(\[0-9\]+)\[^\n\r\]*Thread\[^\n\r\]*$func.*$gdb_prompt $" {
+       -re "(\[0-9\]+)\[^\n\r\]*${tdlabel_re}\[^\n\r\]*$func.*$gdb_prompt $" {
            # Get the thread's id.
            set thre $expect_out(1,string)
            pass $test
index 984df6d9ee266ec5d4ebed01bd1722969ae7a19b..26bba8b9961c672df0c180ae38d32bc61285c982 100644 (file)
@@ -28,6 +28,7 @@ if {[gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${binfile}" executab
 proc get_thread_list { } {
   global gdb_prompt
   global expect_out
+  global tdlabel_re
 
   set thr_list ""
 
@@ -41,11 +42,11 @@ proc get_thread_list { } {
     -re "^ *Id *Target Id\[^\n\]*\n" {
       exp_continue
     }
-    -re "^\\*  *(\[0-9\]*) *Thread \[^\n\]*main\[^\n\]*\n" {
+    -re "^\\*  *(\[0-9\]*) *${tdlabel_re} \[^\n\]*main\[^\n\]*\n" {
       set thr_list "$expect_out(1,string) $thr_list"
       exp_continue
     }
-    -re "^  *(\[0-9\]*) *Thread \[^\n\]*\n" {
+    -re "^  *(\[0-9\]*) *${tdlabel_re} \[^\n\]*\n" {
       lappend thr_list $expect_out(1,string)
       exp_continue
     }
index 08c994c9bf12a9c8e7dd2483dc94b97e3bcf37f7..c6fdb6f944d32954bba4080ef01c75c83453d592 100644 (file)
@@ -207,19 +207,19 @@ gdb_expect {
     timeout { fail "continue to first thread (timeout)" }
 }
 
-gdb_test "info thread" ".*Thread.*spin.*" \
+gdb_test "info thread" ".*${tdlabel_re}.*spin.*" \
        "at least one th in spin while stopped at first th"
 
 check_thread_local "first"
 
 gdb_test "continue" ".*Breakpoint 2.*tls value.*" "continue to second thread"
-gdb_test "info thread" "Thread.*spin.*" \
+gdb_test "info thread" "${tdlabel_re}.*spin.*" \
        "at least one th in spin while stopped at second th"
 
 check_thread_local "second"
 
 gdb_test "continue" ".*Breakpoint 2.*tls value.*" "continue to third thread"
-gdb_test "info thread" ".*Thread.*spin.*" \
+gdb_test "info thread" ".*${tdlabel_re}.*spin.*" \
        "at least one th in spin while stopped at third th"
 
 check_thread_local "third"
@@ -229,7 +229,7 @@ gdb_test "continue" ".*Breakpoint 3.*still alive.*" "continue to synch point"
 set no_of_threads 0
 send_gdb "info thread\n"
 gdb_expect {
-    -re "^info thread\[ \t\r\n\]+ *Id .*Frame\[ \t\r\n\]+.*(\[0-9\]+) *Thread\[^\r\n\]+\r\n$gdb_prompt $" {
+    -re "^info thread\[ \t\r\n\]+ *Id .*Frame\[ \t\r\n\]+.*(\[0-9\]+) *${tdlabel_re}\[^\r\n\]+\r\n$gdb_prompt $" {
           set no_of_threads $expect_out(1,string)
           pass "get number of threads"
         }
@@ -280,10 +280,10 @@ gdb_test "continue" ".*Breakpoint 4.*before exit.*" "threads exited"
 
 send_gdb "info thread\n" 
 gdb_expect {
-    -re ".* 1 *Thread.*2 *Thread.*$gdb_prompt $" {
+    -re ".* 1 *${tdlabel_re}.*2 *${tdlabel_re}.*$gdb_prompt $" {
         fail "too many threads left at end"
     }
-    -re ".*\\\* 1 *Thread.*main.*$gdb_prompt $" {
+    -re ".*\\\* 1 *${tdlabel_re}.*main.*$gdb_prompt $" {
         pass "expect only base thread at end"
     }
     -re ".*No stack.*$gdb_prompt $" {
index 9ae542ba795245e02f9485a0e6f9a711db95c4e9..a6e1650a02e3d701224c5602fcfcf3a40a20fa24 100644 (file)
@@ -380,7 +380,7 @@ proc use_collected_data { data_source } {
 
        # There is always a thread of an inferior, either a live one or
        # a faked one.
-       gdb_test "info threads" "\\* ${decimal}    (process|Thread) \[0-9\.\]+\[ \t\].*"
+       gdb_test "info threads" "\\* ${decimal}    ${tdlabel_re} \[0-9\.\]+\[ \t\].*"
        gdb_test "info inferiors" "\\* 1    process ${decimal} \[ \t\]+\[^\r\n\]*\[ \t\]+${binfile}.*"
     }
 }
index e8af92917a0c94afc7bafa2ebecf085c9d07cdc6..730acda6489d06b7b69ba046e76865f5abcab6e9 100644 (file)
@@ -139,7 +139,7 @@ proc strace_info_marker { } {
        # List all the thread.  It is expected to get three threads without
        # any errors.
        gdb_test_multiple "info threads 3 2 1" "info threads" {
-           -re "3\[ \t\]+Thread .*2\[ \t\]+Thread .*1\[ \t\]+Thread .*${gdb_prompt} $" {
+           -re "3\[ \t\]+${tdlabel_re} .*2\[ \t\]+${tdlabel_re} .*1\[ \t\]+${tdlabel_re} .*${gdb_prompt} $" {
                pass "info threads"
            }
        }
index a0c4855ffc5589db91a1a8831e787faea3aa1722..606a393271fc79c40fc08d21ed9d90be843905cb 100644 (file)
@@ -289,6 +289,10 @@ set octal "\[0-7\]+"
 
 set inferior_exited_re "(?:\\\[Inferior \[0-9\]+ \\(\[^\n\r\]*\\) exited)"
 
+# A regular expression that matches the first word of a thread
+# description after the thread number info 'info threads'
+set tdlabel_re "(process|Thread|LWP)"
+
 # A regular expression that matches a value history number.
 # E.g., $1, $2, etc.
 set valnum_re "\\\$$decimal"