With test-case gdb.ada/big_packed_array.exp and target board unix/-m32 I run
into:
...
(gdb) print bad^M
$2 = (0 => 0 <repeats 24 times>, 160)^M
(gdb) FAIL: gdb.ada/big_packed_array.exp: scenario=minimal: print bad
...
The problem is that while the variable is an array of 196 bits (== 24.5 bytes),
the debug information describes it as 25 unsigned char. This is PR
gcc/101643, and the test-case contains an xfail for this, which catches only:
...
(gdb) print bad^M
$2 = (0 => 0 <repeats 25 times>)^M
...
Fix this by updating the xfail pattern.
Tested on x86_64-linux.
set re "= \\(false <repeats 196 times>\\)"
set re_xfail "= \\(0 => 0 <repeats 25 times>\\)"
+ set re_xfail2 "= \\(0 => 0 <repeats 24 times>, ($decimal)\\)"
gdb_test_multiple "print bad" "" {
-re -wrap $re {
pass $gdb_test_name
}
fail $gdb_test_name
}
+ -re -wrap $re_xfail2 {
+ set last $expect_out(1,string)
+ if { $have_xfail && [string is integer $last] \
+ && [expr ($last & 0xf) == 0] } {
+ # gcc/101643
+ setup_xfail *-*-*
+ }
+ fail $gdb_test_name
+ }
}
}