[PATCH 3/5] [gdb/testsuite] Fix some test-cases for check-read1 (-lbl)

Tom de Vries tdevries@suse.de
Sat Oct 26 13:02:38 GMT 2024


On 10/26/24 12:33, Andrew Burgess wrote:
> Tom de Vries <tdevries@suse.de> writes:
> 
>> I ran the testsuite in an environment simulating a stressed system in
>> combination with check-read1.  This exposes a few more FAILs.
>>
>> Fix some by using -lbl.
>>
>> Tested on x86_64-linux.
>> ---
>>   gdb/testsuite/gdb.base/sect-cmd.exp | 21 ++++++++++++++-------
>>   1 file changed, 14 insertions(+), 7 deletions(-)
> 
> After this commit I noticed that sect-cmd.exp would sometimes fail.  The
> fix seemed pretty obvious, so I went ahead and pushed it.  But if anyone
> feels this isn't the correct solution, let me know and I can rework
> things.
> 

Hi Andrew,

sorry for the breakage, and thanks for catching and fixing it.

I see now that I could have reproduced the failure using the readmore 
functionality.

I often wonder about adding both read1 and readmore to make-check-all.sh 
(and once we go down that road, maybe clang as well), which would make 
it easier to not forget to run those.

The current behaviour is "Run make check with all boards from 
gdb/testsuite/boards", and read1 and readmore are not target boards, so 
sofar I've refrained from adding those.  Perhaps you have an opinion on 
this?

> Thanks,
> Andrew
> 
> ----
> 
> commit 2bba46058789196c1c384896933cbc9692ef4933
> Author: Andrew Burgess <aburgess@redhat.com>
> Date:   Sat Oct 26 11:18:40 2024 +0100
> 
>      gdb/testsuite: fix test pattern after switch to -lbl matching
>      
>      After commit:
>      
>        commit a1ccc78ea7ba8cad3ff37cbde9b5d3bba0194796
>        Date:   Fri Oct 25 06:14:03 2024 +0200
>      
>            [gdb/testsuite] Fix some test-cases for check-read1 (-lbl)
>      
>      I notice that gdb.base/sect-cmd.exp would sometimes fail.  The problem
>      is that by switching to line by line matching we now need to ensure
>      that the gdb_test_multiple patterns match up to the end of the line,
>      but don't actually include the trailing \r\n (yeah, our line by line
>      matching is weird).  We need to be especially careful anywhere '.*' is

AFAIR, the line-by-line matching was designed to be compatible with 
-wrap (which requires a \r\n before the prompt), which itself was 
designed to be compatible with gdb_test.

Thanks,
- Tom

>      used as this can potentially match content on a subsequent line.
>      
>      I have replaced '.*' with '\[^\r\n\]*(?=\r\n)', matching everything up
>      to the end of the line, but not the end of line itself, and I've made
>      use of '(?=\r\n)' in a couple of other places to ensure we match up to
>      the end of the line, but don't match the line terminator itself.
> 
> diff --git a/gdb/testsuite/gdb.base/sect-cmd.exp b/gdb/testsuite/gdb.base/sect-cmd.exp
> index 2a5758a94c6..49a94cd9019 100644
> --- a/gdb/testsuite/gdb.base/sect-cmd.exp
> +++ b/gdb/testsuite/gdb.base/sect-cmd.exp
> @@ -37,7 +37,7 @@ set section_name ""
>   
>   set ok 0
>   gdb_test_multiple "info files" "" -lbl {
> -    -re "\\s+($hex) - ($hex) is (\\\$CODE\\\$|\\.text\\S*) in .*" {
> +    -re "\\s+($hex) - ($hex) is (\\\$CODE\\\$|\\.text\\S*) in \[^\r\n\]*(?=\r\n)" {
>   	if { ! $ok } {
>   	    set address1 $expect_out(1,string)
>   	    set address2 $expect_out(2,string)
> @@ -64,11 +64,11 @@ if { $address1 == "" || $address2 == "" || $section_name == "" } {
>   set saw_section_address_line false
>   gdb_test_multiple "section $section_name $address1" \
>       "set section $section_name to original address" -lbl {
> -	-re ".*$address1 \- $address2 is $section_name in \[^\r\n\]*" {
> +	-re "\[^\r\n\]*$address1 \- $address2 is $section_name in \[^\r\n\]*(?=\r\n)" {
>   	    set saw_section_address_line true
>   	    exp_continue
>   	}
> -	-re "Section \[^\r\n\]+ not found\r\n" {
> +	-re "Section \[^\r\n\]+ not found(?=\r\n)" {
>   	    fail "$gdb_test_name (saw not found marker)"
>   	    exp_continue
>   	}
> 



More information about the Gdb-patches mailing list