[gdb/testsuite] Fix XPASS with gcc-12 in gdb.base/vla-struct-fields.exp
authorTom de Vries <tdevries@suse.de>
Fri, 10 Jun 2022 06:59:05 +0000 (08:59 +0200)
committerTom de Vries <tdevries@suse.de>
Fri, 10 Jun 2022 06:59:05 +0000 (08:59 +0200)
With gcc-12, I get for test-case gdb.base/vla-struct-fields.exp:
...
(gdb) print inner_vla_struct_object_size == sizeof(inner_vla_struct_object)^M
$7 = 1^M
(gdb) XPASS: gdb.base/vla-struct-fields.exp: size of inner_vla_struct_object
...

Fix this by limiting the xfailing to gcc-11 and earlier.  Also, limit the
xfailing to the equality test.

Tested on x86_64-linux.

gdb/testsuite/gdb.base/vla-struct-fields.exp

index 384d6881779af4195d1e11bf48dec3d4a241f10c..eeee6b8d6a1460b045a876e120734d226e0a58c3 100644 (file)
@@ -60,8 +60,20 @@ gdb_test "print vla_struct_object_size == sizeof(vla_struct_object)" \
 gdb_test "print vla_union_object_size == sizeof(vla_union_object)" \
     " = 1" "size of vla_union_object"
 
-# Fails due to incorrect debugging information generated by GCC.
-setup_xfail "*-*-*"
-gdb_test \
-    "print inner_vla_struct_object_size == sizeof(inner_vla_struct_object)" \
-    " = 1" "size of inner_vla_struct_object"
+set a -1
+gdb_test_multiple "print inner_vla_struct_object_size" "" {
+    -re -wrap " = ($decimal)" {
+       set a $expect_out(1,string)
+    }
+}
+set b -1
+gdb_test_multiple "print sizeof(inner_vla_struct_object)" "" {
+    -re -wrap " = ($decimal)" {
+       set b $expect_out(1,string)
+    }
+}
+if { [test_compiler_info "gcc-*"] && [gcc_major_version] <= 11 } {
+    # Fails due to incorrect debugging information generated by GCC.
+    setup_xfail "*-*-*"
+}
+gdb_assert {$a == $b} "size of inner_vla_struct_object"