[gdb/testsuite] Fix gdb.cp/m-static.exp regression on Ubuntu 20.04

Message ID 20230323134716.2853-1-tdevries@suse.de
State Committed
Headers
Series [gdb/testsuite] Fix gdb.cp/m-static.exp regression on Ubuntu 20.04 |

Commit Message

Tom de Vries March 23, 2023, 1:47 p.m. UTC
  In commit 722c4596034 ("[gdb/testsuite] Fix gdb.cp/*.exp for remote host"), I
needed to change ".*/" into "(.*/)?" in:
...
gdb_test "info variable everywhere" \
    "File .*/m-static\[.\]h.*const int gnu_obj_4::everywhere;"
...

However, due to that fact that I got this output:
...
(gdb) info variable everywhere^M
All variables matching regular expression "everywhere":^M
^M
File /data/vries/gdb/src/gdb/testsuite/gdb.cp/m-static.h:^M
8:      const int gnu_obj_4::everywhere;^M
^M
File /data/vries/gdb/src/gdb/testsuite/gdb.cp/m-static1.cc:^M
8:      const int gnu_obj_4::everywhere;^M
...
I decided to make the matching somewhat stricter, to make sure that the two
matched lines were subsequent.

The commit turned out to be more strict than intended, and caused a regression
on Ubuntu 20.04, where the output was instead:
...
(gdb) info variable everywhere^M
All variables matching regular expression "everywhere":^M
^M
File /data/vries/gdb/src/gdb/testsuite/gdb.cp/m-static.h:^M
8:      const int gnu_obj_4::everywhere;^M
...

At that point I realized I'm looking at a bug (filed as PR symtab/30265),
which manifests on openSUSE Leap 15.4 for native and readnow, and on Ubuntu
20.04 for readnow, but not for native.

Before my commit, the test-case passed whether the bug manifested or not.

After my commit, the test-case only passed when the bug manifested.

Fix the test-case regression by reverting to the situation before the commit:
pass whether the bug manifests or not.  We could add an xfail for the PR, but
I'm expecting a fix soon, so that doesn't look worth the effort.

Tested on x86_64-linux, both on openSUSE Leap 15.4 and Ubuntu 20.04, both with
native and readnow.

Reported-By: Simon Marchi <simon.marchi@efficios.com>
---
 gdb/testsuite/gdb.cp/m-static.exp | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)


base-commit: 5834f36d93cabf1a8bcc7dd7654141aed3d296bc
  

Comments

Simon Marchi March 24, 2023, 2:17 p.m. UTC | #1
On 3/23/23 09:47, Tom de Vries wrote:
> In commit 722c4596034 ("[gdb/testsuite] Fix gdb.cp/*.exp for remote host"), I
> needed to change ".*/" into "(.*/)?" in:
> ...
> gdb_test "info variable everywhere" \
>     "File .*/m-static\[.\]h.*const int gnu_obj_4::everywhere;"
> ...
> 
> However, due to that fact that I got this output:
> ...
> (gdb) info variable everywhere^M
> All variables matching regular expression "everywhere":^M
> ^M
> File /data/vries/gdb/src/gdb/testsuite/gdb.cp/m-static.h:^M
> 8:      const int gnu_obj_4::everywhere;^M
> ^M
> File /data/vries/gdb/src/gdb/testsuite/gdb.cp/m-static1.cc:^M
> 8:      const int gnu_obj_4::everywhere;^M
> ...
> I decided to make the matching somewhat stricter, to make sure that the two
> matched lines were subsequent.
> 
> The commit turned out to be more strict than intended, and caused a regression
> on Ubuntu 20.04, where the output was instead:
> ...
> (gdb) info variable everywhere^M
> All variables matching regular expression "everywhere":^M
> ^M
> File /data/vries/gdb/src/gdb/testsuite/gdb.cp/m-static.h:^M
> 8:      const int gnu_obj_4::everywhere;^M
> ...
> 
> At that point I realized I'm looking at a bug (filed as PR symtab/30265),
> which manifests on openSUSE Leap 15.4 for native and readnow, and on Ubuntu
> 20.04 for readnow, but not for native.
> 
> Before my commit, the test-case passed whether the bug manifested or not.
> 
> After my commit, the test-case only passed when the bug manifested.
> 
> Fix the test-case regression by reverting to the situation before the commit:
> pass whether the bug manifests or not.  We could add an xfail for the PR, but
> I'm expecting a fix soon, so that doesn't look worth the effort.
> 
> Tested on x86_64-linux, both on openSUSE Leap 15.4 and Ubuntu 20.04, both with
> native and readnow.
> 
> Reported-By: Simon Marchi <simon.marchi@efficios.com>

For those wondering, this is already pushed :)

Simon
  
Tom de Vries March 24, 2023, 2:49 p.m. UTC | #2
On 3/24/23 15:17, Simon Marchi wrote:
> On 3/23/23 09:47, Tom de Vries wrote:
>> In commit 722c4596034 ("[gdb/testsuite] Fix gdb.cp/*.exp for remote host"), I
>> needed to change ".*/" into "(.*/)?" in:
>> ...
>> gdb_test "info variable everywhere" \
>>      "File .*/m-static\[.\]h.*const int gnu_obj_4::everywhere;"
>> ...
>>
>> However, due to that fact that I got this output:
>> ...
>> (gdb) info variable everywhere^M
>> All variables matching regular expression "everywhere":^M
>> ^M
>> File /data/vries/gdb/src/gdb/testsuite/gdb.cp/m-static.h:^M
>> 8:      const int gnu_obj_4::everywhere;^M
>> ^M
>> File /data/vries/gdb/src/gdb/testsuite/gdb.cp/m-static1.cc:^M
>> 8:      const int gnu_obj_4::everywhere;^M
>> ...
>> I decided to make the matching somewhat stricter, to make sure that the two
>> matched lines were subsequent.
>>
>> The commit turned out to be more strict than intended, and caused a regression
>> on Ubuntu 20.04, where the output was instead:
>> ...
>> (gdb) info variable everywhere^M
>> All variables matching regular expression "everywhere":^M
>> ^M
>> File /data/vries/gdb/src/gdb/testsuite/gdb.cp/m-static.h:^M
>> 8:      const int gnu_obj_4::everywhere;^M
>> ...
>>
>> At that point I realized I'm looking at a bug (filed as PR symtab/30265),
>> which manifests on openSUSE Leap 15.4 for native and readnow, and on Ubuntu
>> 20.04 for readnow, but not for native.
>>
>> Before my commit, the test-case passed whether the bug manifested or not.
>>
>> After my commit, the test-case only passed when the bug manifested.
>>
>> Fix the test-case regression by reverting to the situation before the commit:
>> pass whether the bug manifests or not.  We could add an xfail for the PR, but
>> I'm expecting a fix soon, so that doesn't look worth the effort.
>>
>> Tested on x86_64-linux, both on openSUSE Leap 15.4 and Ubuntu 20.04, both with
>> native and readnow.
>>
>> Reported-By: Simon Marchi <simon.marchi@efficios.com>
> 
> For those wondering, this is already pushed :)

Hi Simon,

sorry, forgot to mention that here, thanks for the note.

Thanks,
- Tom
  

Patch

diff --git a/gdb/testsuite/gdb.cp/m-static.exp b/gdb/testsuite/gdb.cp/m-static.exp
index 419d772e28e..37d3289a751 100644
--- a/gdb/testsuite/gdb.cp/m-static.exp
+++ b/gdb/testsuite/gdb.cp/m-static.exp
@@ -186,8 +186,7 @@  if { $non_dwarf } { setup_xfail *-*-* }
 gdb_test "info variable everywhere" \
     [multi_line \
 	 "File (.*/)?m-static\[.\]h:" \
-	 "$decimal:\tconst int gnu_obj_4::everywhere;" \
-	 ".*"]
+	 "$decimal:\tconst int gnu_obj_4::everywhere;.*"]
 
 # Perhaps at some point test4 should also include a test for a static
 # const int that was initialized in the header file.  But I'm not sure