forked from Imagelibrary/binutils-gdb
[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:
@@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user