[gdb/testsuite] Handle gdb.cp/*.exp with older compiler
authorTom de Vries <tdevries@suse.de>
Mon, 28 Aug 2023 11:46:36 +0000 (13:46 +0200)
committerTom de Vries <tdevries@suse.de>
Mon, 28 Aug 2023 11:46:36 +0000 (13:46 +0200)
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.

gdb/testsuite/gdb.cp/casts.exp
gdb/testsuite/gdb.cp/constexpr-field.exp
gdb/testsuite/gdb.cp/empty-enum.exp
gdb/testsuite/gdb.cp/koenig.exp
gdb/testsuite/gdb.cp/method-call-in-c.exp
gdb/testsuite/gdb.cp/paramless.exp
gdb/testsuite/gdb.cp/templates.exp
gdb/testsuite/gdb.cp/typed-enum.exp

index ac798f9070f8e78cc3447d996146f04e54b7f453..41bb125927076d1a8538c210dd791a88e45f4ee2 100644 (file)
@@ -29,7 +29,12 @@ require allow_cplus_tests
 
 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
 }
 
index 18dcb0e91b7dc043a0b75f626184bfa5e847c3d6..dd8bf9a2e5d6ee61d38ca274f7bf6ef06936340c 100644 (file)
@@ -16,6 +16,7 @@
 # This file is part of the gdb testsuite.
 
 require allow_cplus_tests
+require {have_compile_flag -std=c++17}
 
 standard_testfile .cc
 
index 83cb8cb3973bb59a9272b45ddc6b83593a4d8662..9ab3abf14b75d2f7066a0f530c1cae7c9a72bf1f 100644 (file)
 
 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
 }
 
@@ -44,5 +48,30 @@ gdb_continue_to_breakpoint "stop in breakpt"
 gdb_test "print arg1" " = 8"
 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
+    }
+}
index 5343f2cbf066cfe4872cdbda7caf49a3695f07fa..dbec6d2e7f28de64e9fbadaf0d0effd10da966fe 100644 (file)
 
 standard_testfile .cc
 
-if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} \
-      {debug c++ additional_flags=-Wno-unused-comparison}] } {
+set opts {}
+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
 }
 
index 269657068cf8e38dbeb1f10155dc8954d9edaed4..1c18d81104ec16b43aa0f37f8a9659d777ebaa3f 100644 (file)
 
 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
 }
 
index 579f363d6a04c9f2bec2d487403e893e544383da..895b449f146316212394110810f7a94c005d0cf4 100644 (file)
@@ -21,7 +21,12 @@ require allow_cplus_tests
 
 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
 }
 
index ba21c4727d310baa0c19f7998330d286290961f1..7603d89572a29cda05c48bc0dab99e4cf0bd9f58 100644 (file)
@@ -22,6 +22,8 @@ require allow_cplus_tests
 standard_testfile .cc
 
 set flags [list debug c++]
+lappend flags additional_flags=-std=c++11
+
 if { [test_compiler_info gcc-*] && [gcc_major_version] >= 10 } {
     # Work around PR gcc/101452.
     lappend flags additional_flags=-DGCC_BUG
index 1d11fb5a302409eca83d2774b5e82e0f4ac64561..6a1df7053c6ada0eba8eb2f8c77392e69b7fa598 100644 (file)
@@ -19,7 +19,12 @@ require allow_cplus_tests
 
 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
 }