[gdb/testsuite] Handle gdb.cp/*.exp with older compiler

When running test-cases gdb.cp/*.exp with gcc 4.8.4, I run into compilation
failures due to the test-cases requiring c++11 and the compiler defaulting
to less than that.

Fix this by compiling with -std=c++11.

This exposes two FAILs in gdb/testsuite/gdb.cp/empty-enum.exp due to
gcc PR debug/16063, so xfail those.

Also require have_compile_flag -std=c++17 in gdb.cp/constexpr-field.exp to
prevent compilation failure.

Tested on x86_64-linux.
This commit is contained in:
Tom de Vries
2023-08-28 13:46:36 +02:00
parent 025e84f935
commit c67caa51e4
8 changed files with 65 additions and 9 deletions

View File

@@ -29,7 +29,12 @@ require allow_cplus_tests
standard_testfile .cc casts03.cc standard_testfile .cc casts03.cc
if {[prepare_for_testing "failed to prepare" $testfile $srcfile {debug c++}]} { set opts {}
lappend opts debug
lappend opts c++
lappend opts additional_flags=-std=c++11
if {[prepare_for_testing "failed to prepare" $testfile $srcfile $opts]} {
return -1 return -1
} }

View File

@@ -16,6 +16,7 @@
# This file is part of the gdb testsuite. # This file is part of the gdb testsuite.
require allow_cplus_tests require allow_cplus_tests
require {have_compile_flag -std=c++17}
standard_testfile .cc standard_testfile .cc

View File

@@ -29,7 +29,11 @@
standard_testfile .cc standard_testfile .cc
if {[prepare_for_testing "failed to prepare" $testfile $srcfile]} { set opts {}
lappend opts debug
lappend opts additional_flags=-std=c++11
if {[prepare_for_testing "failed to prepare" $testfile $srcfile $opts]} {
return -1 return -1
} }
@@ -44,5 +48,30 @@ gdb_continue_to_breakpoint "stop in breakpt"
gdb_test "print arg1" " = 8" gdb_test "print arg1" " = 8"
gdb_test "print arg2" " = 4" gdb_test "print arg2" " = 4"
gdb_test "ptype arg1" "type = enum enum1 : unsigned int \\{\\}"
gdb_test "ptype arg2" "type = enum class enum2 : unsigned char \\{\\}" # Xfail for missing DW_AT_type in DW_TAG_enumeration_type, gcc PR debug/16063.
set have_xfail [expr [test_compiler_info gcc-*] && [gcc_major_version] < 5]
gdb_test_multiple "ptype arg1" "" {
-re -wrap "type = enum enum1 : unsigned int \\{\\}" {
pass $gdb_test_name
}
-re -wrap "type = enum enum1 \\{\\}" {
if { $have_xfail } {
setup_xfail *-*-* gcc/16063
}
fail $gdb_test_name
}
}
gdb_test_multiple "ptype arg2" "" {
-re -wrap "type = enum class enum2 : unsigned char \\{\\}" {
pass $gdb_test_name
}
-re -wrap "type = enum class enum2 \\{\\}" {
if { $have_xfail } {
setup_xfail *-*-* gcc/16063
}
fail $gdb_test_name
}
}

View File

@@ -15,8 +15,13 @@
standard_testfile .cc standard_testfile .cc
if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} \ set opts {}
{debug c++ additional_flags=-Wno-unused-comparison}] } { lappend opts debug
lappend opts c++
lappend opts additional_flags=-Wno-unused-comparison
lappend opts additional_flags=-std=c++11
if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} $opts] } {
return -1 return -1
} }

View File

@@ -20,7 +20,11 @@
standard_testfile .cc standard_testfile .cc
if { [prepare_for_testing "failed to prepare" $testfile $srcfile] } { set opts {}
lappend opts debug
lappend opts additional_flags=-std=c++11
if { [prepare_for_testing "failed to prepare" $testfile $srcfile $opts] } {
return -1 return -1
} }

View File

@@ -21,7 +21,12 @@ require allow_cplus_tests
standard_testfile .cc standard_testfile .cc
if {[prepare_for_testing "failed to prepare" $testfile $srcfile {debug c++}]} { set opts {}
lappend opts debug
lappend opts c++
lappend opts additional_flags=-std=c++11
if {[prepare_for_testing "failed to prepare" $testfile $srcfile $opts]} {
return -1 return -1
} }

View File

@@ -22,6 +22,8 @@ require allow_cplus_tests
standard_testfile .cc standard_testfile .cc
set flags [list debug c++] set flags [list debug c++]
lappend flags additional_flags=-std=c++11
if { [test_compiler_info gcc-*] && [gcc_major_version] >= 10 } { if { [test_compiler_info gcc-*] && [gcc_major_version] >= 10 } {
# Work around PR gcc/101452. # Work around PR gcc/101452.
lappend flags additional_flags=-DGCC_BUG lappend flags additional_flags=-DGCC_BUG

View File

@@ -19,7 +19,12 @@ require allow_cplus_tests
standard_testfile .cc standard_testfile .cc
if {[prepare_for_testing "failed to prepare" $testfile $srcfile {debug c++}]} { set opts {}
lappend opts debug
lappend opts c++
lappend opts additional_flags=-std=c++11
if {[prepare_for_testing "failed to prepare" $testfile $srcfile $opts]} {
return -1 return -1
} }