When running test-case gdb.ada/big_packed_array.exp on s390x-linux, I run
into:
...
(gdb) print bad^M
$2 = (0 => 0 <repeats 24 times>, 1)^M
(gdb) FAIL: gdb.ada/big_packed_array.exp: scenario=minimal: print bad
...
This is with gcc 7.5.0, and this xfail should trigger:
...
if { $have_xfail && [string is integer $last] \
&& [expr ($last & 0xf) == 0] } {
# gcc/101643
setup_xfail *-*-*
}
...
but it doesn't because $last is '1'.
Fix this by using 0xf0 as mask for big endian.
Tested on s390x-linux.
set old_gcc [gnat_version_compare < 9]
+set endian [target_endianness]
+
foreach_gnat_encoding scenario flags {all minimal} {
lappend flags debug
}
-re -wrap $re_xfail2 {
set last $expect_out(1,string)
+ if { $endian == "little" } {
+ set mask 0x0f
+ } else {
+ set mask 0xf0
+ }
if { $have_xfail && [string is integer $last] \
- && [expr ($last & 0xf) == 0] } {
+ && [expr ($last & $mask) == 0] } {
# gcc/101643
setup_xfail *-*-*
}