mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-20 18:08:24 +08:00
[gdb/testsuite] Add xfail for PR gcc/101633
With gcc 7.5.0, I run into: ... (gdb) print objects^M $1 = ((tag => object, values => ()), (tag => unused))^M (gdb) FAIL: gdb.ada/array_of_variant.exp: scenario=minimal: print entire array ... while with gcc 8.5.0 we have: ... (gdb) print objects^M $1 = ((tag => object, values => (2, 2, 2, 2, 2)), (tag => unused))^M (gdb) PASS: gdb.ada/array_of_variant.exp: scenario=minimal: print entire array ... This is due to a gcc PR, which I've filed at https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101633 "Bug 101633 - [debug] DW_TAG_subrange_type missing DW_AT_upper_bound". Fix by marking this and related FAILs as XFAIL. Tested on x86_64-linux. gdb/ChangeLog: 2021-07-27 Tom de Vries <tdevries@suse.de> PR testsuite/26903 * gdb/testsuite/gdb.ada/array_of_variant.exp: Add xfails.
This commit is contained in:
@ -20,6 +20,29 @@ if { [skip_ada_tests] } { return -1 }
|
||||
|
||||
standard_ada_testfile p
|
||||
|
||||
if [get_compiler_info] {
|
||||
return -1
|
||||
}
|
||||
set old_gcc [expr [test_compiler_info {gcc-[0-7]-*}]]
|
||||
|
||||
proc gdb_test_with_xfail { cmd re re_xfail msg } {
|
||||
global scenario old_gcc
|
||||
set have_xfail [expr $old_gcc && [string equal "$scenario" "minimal"]]
|
||||
|
||||
gdb_test_multiple $cmd $msg {
|
||||
-re -wrap $re {
|
||||
pass $gdb_test_name
|
||||
}
|
||||
-re -wrap $re_xfail {
|
||||
if { $have_xfail } {
|
||||
# gcc/101633
|
||||
setup_xfail *-*-*
|
||||
}
|
||||
fail $gdb_test_name
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
foreach_with_prefix scenario {all minimal} {
|
||||
set flags [list debug additional_flags=-fgnat-encodings=$scenario]
|
||||
|
||||
@ -33,17 +56,23 @@ foreach_with_prefix scenario {all minimal} {
|
||||
runto "p.adb:$bp_location"
|
||||
|
||||
set v1 "(tag => object, values => (2, 2, 2, 2, 2))"
|
||||
set v1_xfail "(tag => object, values => ())"
|
||||
set v2 "(tag => unused)"
|
||||
|
||||
gdb_test "print objects" \
|
||||
[string_to_regexp " = ($v1, $v2)"] \
|
||||
"print entire array"
|
||||
gdb_test "print objects(1)" \
|
||||
[string_to_regexp " = $v1"] \
|
||||
set re [string_to_regexp " = ($v1, $v2)"]
|
||||
set re_xfail [string_to_regexp " = ($v1_xfail, $v2)"]
|
||||
gdb_test_with_xfail "print objects" $re $re_xfail "print entire array"
|
||||
|
||||
set re [string_to_regexp " = $v1"]
|
||||
set re_xfail [string_to_regexp " = $v1_xfail"]
|
||||
gdb_test_with_xfail "print objects(1)" $re $re_xfail \
|
||||
"print first array element"
|
||||
gdb_test "print objects(1 .. 1)" \
|
||||
[string_to_regexp " = ($v1)"] \
|
||||
|
||||
set re [string_to_regexp " = ($v1)"]
|
||||
set re_xfail [string_to_regexp " = ($v1_xfail)"]
|
||||
gdb_test_with_xfail "print objects(1 .. 1)" $re $re_xfail \
|
||||
"print first array slice"
|
||||
|
||||
gdb_test "print objects(2)" \
|
||||
[string_to_regexp " = $v2"] \
|
||||
"print second array element"
|
||||
@ -56,11 +85,13 @@ foreach_with_prefix scenario {all minimal} {
|
||||
gdb_test_no_output \
|
||||
"python o = gdb.parse_and_eval('objects')" \
|
||||
"fetch value for python"
|
||||
gdb_test "python print(o)" \
|
||||
[string_to_regexp "($v1, $v2)"] \
|
||||
set re [string_to_regexp "($v1, $v2)"]
|
||||
set re_xfail [string_to_regexp "($v1_xfail, $v2)"]
|
||||
gdb_test_with_xfail "python print(o)" $re $re_xfail \
|
||||
"python print array"
|
||||
gdb_test "python print(o\[1\])" \
|
||||
[string_to_regexp "$v1"] \
|
||||
set re [string_to_regexp "$v1"]
|
||||
set re_xfail [string_to_regexp "$v1_xfail"]
|
||||
gdb_test_with_xfail "python print(o\[1\])" $re $re_xfail \
|
||||
"python print first array element"
|
||||
gdb_test "python print(o\[2\])" \
|
||||
[string_to_regexp "$v2"] \
|
||||
|
Reference in New Issue
Block a user