[pushed,1/3,gdb/testsuite] Fix gdb.cp/*.exp for remote host
Commit Message
Fix a few test-cases in gdb.cp/*.exp for remote host using new proc
include_file.
Tested on x86_64-linux.
---
gdb/testsuite/gdb.cp/breakpoint-locs.exp | 2 ++
gdb/testsuite/gdb.cp/filename.exp | 2 ++
gdb/testsuite/gdb.cp/gdb2384.exp | 2 ++
gdb/testsuite/gdb.cp/hang.exp | 2 ++
gdb/testsuite/gdb.cp/m-static.exp | 8 +++++++-
gdb/testsuite/gdb.cp/mb-inline.exp | 1 +
gdb/testsuite/gdb.cp/minsym-fallback.exp | 3 +++
gdb/testsuite/gdb.cp/ovsrch.exp | 2 ++
gdb/testsuite/gdb.cp/pr10728.exp | 2 ++
gdb/testsuite/gdb.cp/rtti.exp | 2 ++
gdb/testsuite/gdb.cp/stub-array-size.exp | 2 ++
gdb/testsuite/gdb.cp/subtypes.exp | 2 ++
gdb/testsuite/lib/gdb.exp | 12 ++++++++++++
13 files changed, 41 insertions(+), 1 deletion(-)
Comments
On 3/22/23 04:38, Tom de Vries via Gdb-patches wrote:
> Fix a few test-cases in gdb.cp/*.exp for remote host using new proc
> include_file.
Starting with this patch, I see:
info variable everywhere^M
All variables matching regular expression "everywhere":^M
^M
File /home/simark/src/binutils-gdb/gdb/testsuite/gdb.cp/m-static.h:^M
8: const int gnu_obj_4::everywhere;^M
(gdb) FAIL: gdb.cp/m-static.exp: info variable everywhere
Simon
On 3/22/23 16:05, Simon Marchi wrote:
>
>
> On 3/22/23 04:38, Tom de Vries via Gdb-patches wrote:
>> Fix a few test-cases in gdb.cp/*.exp for remote host using new proc
>> include_file.
>
> Starting with this patch, I see:
>
> info variable everywhere^M
> All variables matching regular expression "everywhere":^M
> ^M
> File /home/simark/src/binutils-gdb/gdb/testsuite/gdb.cp/m-static.h:^M
> 8: const int gnu_obj_4::everywhere;^M
> (gdb) FAIL: gdb.cp/m-static.exp: info variable everywhere
>
Hi Simon,
thanks for reporting this.
I don't see this on openSUSE Leap 15.4 and Tumbleweed, but I managed to
reproduce on Ubuntu 20.04 (though with the readnow board, it disappears
again).
Anyway, the problem is that I changed the matching to be more strict,
and that's what we're seeing the effect of. I'll propose a patch that
reverts things to the way things were before, with less strict matching.
As for what I'm seeing:
...
(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
(gdb) PASS: gdb.cp/m-static.exp: info variable everywhere
...
the combination of line 8 with m-static1.cc doesn't seem to make sense.
I don't know this as a known issue, so I'll file a PR about it.
Thanks,
- Tom
On 3/23/23 01:18, Tom de Vries wrote:
> On 3/22/23 16:05, Simon Marchi wrote:
>>
>>
>> On 3/22/23 04:38, Tom de Vries via Gdb-patches wrote:
>>> Fix a few test-cases in gdb.cp/*.exp for remote host using new proc
>>> include_file.
>>
>> Starting with this patch, I see:
>>
>> info variable everywhere^M
>> All variables matching regular expression "everywhere":^M
>> ^M
>> File
>> /home/simark/src/binutils-gdb/gdb/testsuite/gdb.cp/m-static.h:^M
>> 8: const int gnu_obj_4::everywhere;^M
>> (gdb) FAIL: gdb.cp/m-static.exp: info variable everywhere
>>
>
> Hi Simon,
>
> thanks for reporting this.
>
> I don't see this on openSUSE Leap 15.4 and Tumbleweed, but I managed to
> reproduce on Ubuntu 20.04 (though with the readnow board, it disappears
> again).
>
> Anyway, the problem is that I changed the matching to be more strict,
> and that's what we're seeing the effect of. I'll propose a patch that
> reverts things to the way things were before, with less strict matching.
>
Proposed patch is here (
https://sourceware.org/pipermail/gdb-patches/2023-March/198240.html ).
> As for what I'm seeing:
> ...
> (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
> (gdb) PASS: gdb.cp/m-static.exp: info variable everywhere
> ...
> the combination of line 8 with m-static1.cc doesn't seem to make sense.
>
> I don't know this as a known issue, so I'll file a PR about it.
>
Filed this PR ( https://sourceware.org/bugzilla/show_bug.cgi?id=30265 ).
Thanks,
- Tom
@@ -19,6 +19,8 @@ require allow_cplus_tests
standard_testfile .cc breakpoint-locs-2.cc
+include_file breakpoint-locs.h
+
if { [prepare_for_testing "failed to prepare" $testfile "$srcfile $srcfile2"\
{debug c++}] } {
return -1
@@ -17,6 +17,8 @@ require allow_cplus_tests
standard_testfile .cc
+include_file includefile
+
if {[prepare_for_testing "failed to prepare" $testfile $srcfile {debug c++}]} {
return -1
}
@@ -25,6 +25,8 @@ require allow_cplus_tests allow_shlib_tests
standard_testfile .cc gdb2384-base.cc
+include_file gdb2384-base.h
+
set sofile [standard_output_file gdb2384-base.so]
if { [gdb_compile_shlib $srcdir/$subdir/$srcfile2 $sofile {debug c++}] != ""
@@ -18,6 +18,8 @@ require allow_cplus_tests
standard_testfile hang1.cc hang2.cc hang3.cc
+include_file hang.H
+
if {[prepare_for_testing "failed to prepare" $testfile \
[list $srcfile $srcfile2 $srcfile3] {debug c++}]} {
return -1
@@ -27,6 +27,8 @@ require allow_cplus_tests
standard_testfile .cc m-static1.cc
+include_file m-static.h
+
set flags [list debug c++]
if { [test_compiler_info gcc-*] && [gcc_major_version] >= 10 } {
# Work around PR gcc/101452.
@@ -181,7 +183,11 @@ gdb_test "print test4.somewhere" "\\$\[0-9\].* = 3.14\[0-9\]*" "static const flo
# Also make sure static const members can be found via "info var".
if { $non_dwarf } { setup_xfail *-*-* }
-gdb_test "info variable everywhere" "File .*/m-static\[.\]h.*const int gnu_obj_4::everywhere;"
+gdb_test "info variable everywhere" \
+ [multi_line \
+ "File (.*/)?m-static\[.\]h:" \
+ "$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
@@ -22,6 +22,7 @@ require allow_cplus_tests
standard_testfile mb-inline1.cc mb-inline2.cc
set hdrfile "${testfile}.h"
+include_file $hdrfile
if {[prepare_for_testing "failed to prepare" $testfile \
[list $srcfile $srcfile2] {debug c++}]} {
@@ -18,6 +18,9 @@
# a different file providing only ELF symbols.
standard_testfile .cc minsym-fallback-main.cc
+
+include_file minsym-fallback.h
+
set executable $testfile
set objfile [standard_output_file ${testfile}.o]
set objmainfile [standard_output_file ${testfile}-main.o]
@@ -57,6 +57,8 @@ require allow_cplus_tests
# Test for c++/11734
standard_testfile ovsrch1.cc ovsrch2.cc ovsrch3.cc ovsrch4.cc
+include_file ovsrch.h
+
if {[prepare_for_testing "failed to prepare" $testfile \
[list $srcfile $srcfile2 $srcfile3 $srcfile4] {c++ debug}]} {
return -1
@@ -22,6 +22,8 @@ require allow_cplus_tests
load_lib "cp-support.exp"
standard_testfile pr10728-x.cc pr10728-y.cc
+include_file pr10728-x.h
+
set tfx [standard_output_file pr10728-x.o]
set tfy [standard_output_file pr10728-y.o]
@@ -34,6 +34,8 @@ require allow_cplus_tests
standard_testfile rtti1.cc rtti2.cc
+include_file rtti.h
+
if {[prepare_for_testing "failed to prepare" $testfile \
[list $srcfile $srcfile2] {debug c++}]} {
return -1
@@ -22,6 +22,8 @@ require allow_cplus_tests
standard_testfile .cc stub-array-size2.cc
+include_file stub-array-size.h
+
if {[prepare_for_testing "failed to prepare" $testfile "$srcfile $srcfile2" \
{c++ debug}]} {
return -1
@@ -22,6 +22,8 @@ load_lib "cp-support.exp"
standard_testfile .cc subtypes-2.cc
+include_file subtypes.h
+
if {[prepare_for_testing "failed to prepare" $testfile \
[list $srcfile $srcfile2] \
{debug c++ additional_flags=-std=c++11}]} {
@@ -9554,6 +9554,18 @@ gdb_caching_proc have_compile_flag { flag } {
additional_flags=$flag]
}
+# Handle include file $srcdir/$subdir/FILE.
+
+proc include_file { file } {
+ set file [file join $::srcdir $::subdir $file]
+ if { [is_remote host] } {
+ set res [remote_download host $file]
+ } else {
+ set res $file
+ }
+
+ return $res
+}
# Handle include file FILE, and if necessary update compiler flags variable
# FLAGS.