From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id aGnRECUhWWQ36AIAWB0awg (envelope-from ) for ; Mon, 08 May 2023 12:19:49 -0400 Received: by simark.ca (Postfix, from userid 112) id 325E71E11D; Mon, 8 May 2023 12:19:49 -0400 (EDT) Authentication-Results: simark.ca; dkim=pass (2048-bit key; secure) header.d=freebsd.org header.i=@freebsd.org header.a=rsa-sha256 header.s=dkim header.b=CNi0McyF; dkim-atps=neutral X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-5.3 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED,RDNS_DYNAMIC autolearn=ham autolearn_force=no version=3.4.6 Received: from sourceware.org (ip-8-43-85-97.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id 15A221E114 for ; Mon, 8 May 2023 12:19:47 -0400 (EDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 85668385773F for ; Mon, 8 May 2023 16:19:46 +0000 (GMT) Received: from mx2.freebsd.org (mx2.freebsd.org [96.47.72.81]) by sourceware.org (Postfix) with ESMTPS id 9FA1E3858D32 for ; Mon, 8 May 2023 16:19:31 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 9FA1E3858D32 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=FreeBSD.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits)) (Client CN "mx1.freebsd.org", Issuer "R3" (verified OK)) by mx2.freebsd.org (Postfix) with ESMTPS id 4QFRM61pMgz3pC0 for ; Mon, 8 May 2023 16:19:30 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from smtp.freebsd.org (smtp.freebsd.org [96.47.72.83]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "smtp.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4QFRM61CrRz3RJM for ; Mon, 8 May 2023 16:19:30 +0000 (UTC) (envelope-from jhb@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1683562770; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=EQhtYdSEE5h6Euf/Mzl3ZUHM5OkLAr/3e8gMZNKyGzA=; b=CNi0McyF/tk0AiQ/zDdZBd4cOvaFhzvPvYJU98ZGSoT9VBsRa8l/PZSVUiKjhqj219jKmb s3ZcKAth4I/Rqq16yWMgHqwalfJcYsXOoQOlerif2oXB3AYumkCcEMqvK1Kz3X7lqX4qvP +r8L7EaXsKZaiopaCmUI8VGf92dYbHy77VF4nfm3wxN2TTLT+tCEmCpCDqkQYiKnrvEAXC XqgYbVkaz9gmp0FcuWkGkWlFQQTFzjfRfHdE9401iHQwzVBrrfQG5SmnPaHCBhtXi/s7VA +5HFGMVFSevqQrLINECGjPrTYkuCLaEA0c5RTGkUMfDW1fO53xT/xeLd9I5Nqg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1683562770; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=EQhtYdSEE5h6Euf/Mzl3ZUHM5OkLAr/3e8gMZNKyGzA=; b=DWIkA79LIGLomgvsmVAhOflqhdPGB6gDw1WQWZFElAckYD+gARaChIPVca9V4MaSguAyCK iEY/zG2bORURRfVQFbwr4FepXyoJviEH4D9Y0VJ1uPLTdFakoExkegomDbNCowiWHkdgLX X68W9TXrMW7GsdzxZ/+27nZzUrcatfLmQwosAyyCDus/I8KYzMhkSuEkeP1kwn/vJQf1VL zWQS2xlsNW5nikVOZfyVkmu7P6g0n+UMBz4ZpfusleSiMPBApqAJRE1wDLPPkfyRQqiqKG GgVFjVvPrtXOgCrFKeNw3vPl35aOiQCB6X3T8ESqETJIjFI3mmDNnzM5iovcHA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1683562770; a=rsa-sha256; cv=none; b=lF3mjza7ORTiwz6uUIINBMe5+NKd8IOhDN16wyUrr6ztxhQVGfCBlrHky0FYQpDYs6nQqo Mrtv/n+c+J1Xu6zj5rsIm22az9w1A1DgWo1PnC4RZ907aAgWi1yUbbyeu+7lcuorj21Iik rgZjWjFGlz5/h+QbvCi5DEi6jrNGRHEVbJh9f/4Rmd/FwzrEyEySejviQlycs+VStJdoU2 Ge6AE36HfSYPJQUV2K9wJYpA5xShCgae2E2KVvFt2mg1wpv9UyOtbdVv3+DFQFUmZHWAD2 c0LgpNsNG2EVj82lKrMLOj6A+mdKkwGEsBgo30Tkrx+6hSeF/Fue6hH6LrzfZQ== Received: from [IPV6:2601:648:8680:16b0:a5f2:2d0:1e3c:acb4] (unknown [IPv6:2601:648:8680:16b0:a5f2:2d0:1e3c:acb4]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (Client did not present a certificate) (Authenticated sender: jhb) by smtp.freebsd.org (Postfix) with ESMTPSA id 4QFRM55F2GzvD0 for ; Mon, 8 May 2023 16:19:29 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Message-ID: Date: Mon, 8 May 2023 09:19:27 -0700 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.10.1 Subject: [PING] [PATCH v3] gdb tests: Allow for "LWP" in thread IDs from info threads. Content-Language: en-US From: John Baldwin To: gdb-patches@sourceware.org References: <20230418201305.61272-1-jhb@FreeBSD.org> In-Reply-To: <20230418201305.61272-1-jhb@FreeBSD.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces+public-inbox=simark.ca@sourceware.org Sender: "Gdb-patches" 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=, thread_return=) 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 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 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 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 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