Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: John Baldwin <jhb@FreeBSD.org>
To: gdb-patches@sourceware.org
Subject: [PING] [PATCH v3] gdb tests: Allow for "LWP" in thread IDs from info threads.
Date: Mon, 8 May 2023 09:19:27 -0700	[thread overview]
Message-ID: <a2a440f1-fda2-653e-f6f7-5f0aa1a38498@FreeBSD.org> (raw)
In-Reply-To: <20230418201305.61272-1-jhb@FreeBSD.org>

On 4/18/23 1:13 PM, John Baldwin wrote:
> 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.
> 
> Add a tdlabel_re global variable as a regular-expression for a thread
> label in `info threads' that matches either "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").
> ---
>   .../gdb.multi/multi-target-thread-find.exp       |  2 +-
>   gdb/testsuite/gdb.python/py-thrhandle.exp        |  2 +-
>   .../gdb.server/stop-reply-no-thread-multi.exp    |  8 ++++----
>   gdb/testsuite/gdb.threads/execl.exp              |  6 +++---
>   gdb/testsuite/gdb.threads/fork-child-threads.exp |  2 +-
>   .../gdb.threads/fork-thread-pending.exp          | 16 ++++++++--------
>   .../gdb.threads/info-threads-cur-sal.exp         |  8 ++++----
>   .../gdb.threads/interrupt-while-step-over.exp    |  3 ++-
>   gdb/testsuite/gdb.threads/leader-exit.exp        |  2 +-
>   gdb/testsuite/gdb.threads/manythreads.exp        |  2 +-
>   .../gdb.threads/no-unwaited-for-left.exp         |  4 ++--
>   gdb/testsuite/gdb.threads/non-ldr-exc-2.exp      |  3 ++-
>   gdb/testsuite/gdb.threads/pthreads.exp           |  9 +++++----
>   .../gdb.threads/signal-command-handle-nopass.exp |  4 ++--
>   .../signal-command-multiple-signals-pending.exp  |  4 ++--
>   .../signal-delivered-right-thread.exp            |  4 ++--
>   gdb/testsuite/gdb.threads/signal-sigtrap.exp     |  6 +++---
>   gdb/testsuite/gdb.threads/staticthreads.exp      |  2 +-
>   gdb/testsuite/gdb.threads/thread-specific-bp.exp |  3 ++-
>   gdb/testsuite/gdb.threads/thread-specific.exp    |  5 +++--
>   gdb/testsuite/gdb.threads/tls.exp                | 12 ++++++------
>   gdb/testsuite/gdb.trace/report.exp               |  2 +-
>   gdb/testsuite/gdb.trace/strace.exp               |  2 +-
>   gdb/testsuite/lib/gdb.exp                        |  4 ++++
>   24 files changed, 62 insertions(+), 53 deletions(-)
> 
> diff --git a/gdb/testsuite/gdb.multi/multi-target-thread-find.exp b/gdb/testsuite/gdb.multi/multi-target-thread-find.exp
> index 820190224ba..03b38eb25f2 100644
> --- a/gdb/testsuite/gdb.multi/multi-target-thread-find.exp
> +++ b/gdb/testsuite/gdb.multi/multi-target-thread-find.exp
> @@ -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
> diff --git a/gdb/testsuite/gdb.python/py-thrhandle.exp b/gdb/testsuite/gdb.python/py-thrhandle.exp
> index e8004c77ad1..286bbe619bf 100644
> --- a/gdb/testsuite/gdb.python/py-thrhandle.exp
> +++ b/gdb/testsuite/gdb.python/py-thrhandle.exp
> @@ -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().
> diff --git a/gdb/testsuite/gdb.server/stop-reply-no-thread-multi.exp b/gdb/testsuite/gdb.server/stop-reply-no-thread-multi.exp
> index cf6be64fab3..6d7a7d3f61e 100644
> --- a/gdb/testsuite/gdb.server/stop-reply-no-thread-multi.exp
> +++ b/gdb/testsuite/gdb.server/stop-reply-no-thread-multi.exp
> @@ -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
> diff --git a/gdb/testsuite/gdb.threads/execl.exp b/gdb/testsuite/gdb.threads/execl.exp
> index 92c6a6c8d81..283f7ab01d2 100644
> --- a/gdb/testsuite/gdb.threads/execl.exp
> +++ b/gdb/testsuite/gdb.threads/execl.exp
> @@ -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"
>       }
> diff --git a/gdb/testsuite/gdb.threads/fork-child-threads.exp b/gdb/testsuite/gdb.threads/fork-child-threads.exp
> index d0d13a29fdf..92e2a59bf8b 100644
> --- a/gdb/testsuite/gdb.threads/fork-child-threads.exp
> +++ b/gdb/testsuite/gdb.threads/fork-child-threads.exp
> @@ -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"
> diff --git a/gdb/testsuite/gdb.threads/fork-thread-pending.exp b/gdb/testsuite/gdb.threads/fork-thread-pending.exp
> index 3ab2d31402c..a1f056e2035 100644
> --- a/gdb/testsuite/gdb.threads/fork-thread-pending.exp
> +++ b/gdb/testsuite/gdb.threads/fork-thread-pending.exp
> @@ -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 $" {
> diff --git a/gdb/testsuite/gdb.threads/info-threads-cur-sal.exp b/gdb/testsuite/gdb.threads/info-threads-cur-sal.exp
> index 0614b9cd664..ce14d677c98 100644
> --- a/gdb/testsuite/gdb.threads/info-threads-cur-sal.exp
> +++ b/gdb/testsuite/gdb.threads/info-threads-cur-sal.exp
> @@ -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".
> diff --git a/gdb/testsuite/gdb.threads/interrupt-while-step-over.exp b/gdb/testsuite/gdb.threads/interrupt-while-step-over.exp
> index 0add65d3717..24a09ce9f94 100644
> --- a/gdb/testsuite/gdb.threads/interrupt-while-step-over.exp
> +++ b/gdb/testsuite/gdb.threads/interrupt-while-step-over.exp
> @@ -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
>   	}
> diff --git a/gdb/testsuite/gdb.threads/leader-exit.exp b/gdb/testsuite/gdb.threads/leader-exit.exp
> index 95811e975aa..feb1171b208 100644
> --- a/gdb/testsuite/gdb.threads/leader-exit.exp
> +++ b/gdb/testsuite/gdb.threads/leader-exit.exp
> @@ -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.
> diff --git a/gdb/testsuite/gdb.threads/manythreads.exp b/gdb/testsuite/gdb.threads/manythreads.exp
> index 5a176519051..87e75766328 100644
> --- a/gdb/testsuite/gdb.threads/manythreads.exp
> +++ b/gdb/testsuite/gdb.threads/manythreads.exp
> @@ -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
>       }
> diff --git a/gdb/testsuite/gdb.threads/no-unwaited-for-left.exp b/gdb/testsuite/gdb.threads/no-unwaited-for-left.exp
> index be372030cb8..3a0411ad73c 100644
> --- a/gdb/testsuite/gdb.threads/no-unwaited-for-left.exp
> +++ b/gdb/testsuite/gdb.threads/no-unwaited-for-left.exp
> @@ -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
> diff --git a/gdb/testsuite/gdb.threads/non-ldr-exc-2.exp b/gdb/testsuite/gdb.threads/non-ldr-exc-2.exp
> index d51ae3115ef..04d34fc4e46 100644
> --- a/gdb/testsuite/gdb.threads/non-ldr-exc-2.exp
> +++ b/gdb/testsuite/gdb.threads/non-ldr-exc-2.exp
> @@ -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
> diff --git a/gdb/testsuite/gdb.threads/pthreads.exp b/gdb/testsuite/gdb.threads/pthreads.exp
> index 41a7cb3800f..241166f83f0 100644
> --- a/gdb/testsuite/gdb.threads/pthreads.exp
> +++ b/gdb/testsuite/gdb.threads/pthreads.exp
> @@ -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 $)" {
>   	}
>       }
>   
> diff --git a/gdb/testsuite/gdb.threads/signal-command-handle-nopass.exp b/gdb/testsuite/gdb.threads/signal-command-handle-nopass.exp
> index a099dbbb974..4455d984409 100644
> --- a/gdb/testsuite/gdb.threads/signal-command-handle-nopass.exp
> +++ b/gdb/testsuite/gdb.threads/signal-command-handle-nopass.exp
> @@ -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"
>   
> diff --git a/gdb/testsuite/gdb.threads/signal-command-multiple-signals-pending.exp b/gdb/testsuite/gdb.threads/signal-command-multiple-signals-pending.exp
> index 0802e403b5d..e808192969b 100644
> --- a/gdb/testsuite/gdb.threads/signal-command-multiple-signals-pending.exp
> +++ b/gdb/testsuite/gdb.threads/signal-command-multiple-signals-pending.exp
> @@ -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.
> diff --git a/gdb/testsuite/gdb.threads/signal-delivered-right-thread.exp b/gdb/testsuite/gdb.threads/signal-delivered-right-thread.exp
> index 3407cfa0645..b78b92f3688 100644
> --- a/gdb/testsuite/gdb.threads/signal-delivered-right-thread.exp
> +++ b/gdb/testsuite/gdb.threads/signal-delivered-right-thread.exp
> @@ -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"
>   
> diff --git a/gdb/testsuite/gdb.threads/signal-sigtrap.exp b/gdb/testsuite/gdb.threads/signal-sigtrap.exp
> index 1f524511ee9..f96e942ce54 100644
> --- a/gdb/testsuite/gdb.threads/signal-sigtrap.exp
> +++ b/gdb/testsuite/gdb.threads/signal-sigtrap.exp
> @@ -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"
>       }
>   }
> diff --git a/gdb/testsuite/gdb.threads/staticthreads.exp b/gdb/testsuite/gdb.threads/staticthreads.exp
> index 958aa2181b1..000d1f82070 100644
> --- a/gdb/testsuite/gdb.threads/staticthreads.exp
> +++ b/gdb/testsuite/gdb.threads/staticthreads.exp
> @@ -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 " {
> diff --git a/gdb/testsuite/gdb.threads/thread-specific-bp.exp b/gdb/testsuite/gdb.threads/thread-specific-bp.exp
> index 2d1c71a68e3..575892d52c0 100644
> --- a/gdb/testsuite/gdb.threads/thread-specific-bp.exp
> +++ b/gdb/testsuite/gdb.threads/thread-specific-bp.exp
> @@ -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
> diff --git a/gdb/testsuite/gdb.threads/thread-specific.exp b/gdb/testsuite/gdb.threads/thread-specific.exp
> index 9ba98ec6290..f95e249d03d 100644
> --- a/gdb/testsuite/gdb.threads/thread-specific.exp
> +++ b/gdb/testsuite/gdb.threads/thread-specific.exp
> @@ -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
>       }
> diff --git a/gdb/testsuite/gdb.threads/tls.exp b/gdb/testsuite/gdb.threads/tls.exp
> index 89f6fb89bac..f3c6288b142 100644
> --- a/gdb/testsuite/gdb.threads/tls.exp
> +++ b/gdb/testsuite/gdb.threads/tls.exp
> @@ -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 $" {
> diff --git a/gdb/testsuite/gdb.trace/report.exp b/gdb/testsuite/gdb.trace/report.exp
> index 14db2511d40..a5b7ccf4ba5 100644
> --- a/gdb/testsuite/gdb.trace/report.exp
> +++ b/gdb/testsuite/gdb.trace/report.exp
> @@ -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}.*"
>       }
>   }
> diff --git a/gdb/testsuite/gdb.trace/strace.exp b/gdb/testsuite/gdb.trace/strace.exp
> index bbdd8b78619..0ee55af923f 100644
> --- a/gdb/testsuite/gdb.trace/strace.exp
> +++ b/gdb/testsuite/gdb.trace/strace.exp
> @@ -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"
>   	    }
>   	}
> diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
> index 7538071d1cf..3d2ead0103d 100644
> --- a/gdb/testsuite/lib/gdb.exp
> +++ b/gdb/testsuite/lib/gdb.exp
> @@ -281,6 +281,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 "(Thread|LWP)"
> +
>   # A regular expression that matches a value history number.
>   # E.g., $1, $2, etc.
>   set valnum_re "\\\$$decimal"

Ping

-- 
John Baldwin


  reply	other threads:[~2023-05-08 16:19 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-04-18 20:13 John Baldwin
2023-05-08 16:19 ` John Baldwin [this message]
2023-05-09 19:01 ` Simon Marchi via Gdb-patches
2023-05-09 20:56   ` John Baldwin
2023-05-12 14:15     ` John Baldwin
2023-05-26 17:51       ` John Baldwin
2023-06-09 16:56         ` John Baldwin
2023-06-30 14:21           ` [PING] " John Baldwin
2023-07-14 15:35             ` John Baldwin
2024-03-22 20:58               ` John Baldwin
2024-03-26 12:19     ` Pedro Alves

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=a2a440f1-fda2-653e-f6f7-5f0aa1a38498@FreeBSD.org \
    --to=jhb@freebsd.org \
    --cc=gdb-patches@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox