]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
[gdb/testsuite] Fix gdb.ada/big_packed_array.exp on s390x-linux
authorTom de Vries <tdevries@suse.de>
Tue, 4 Feb 2025 13:06:20 +0000 (14:06 +0100)
committerTom de Vries <tdevries@suse.de>
Tue, 4 Feb 2025 13:06:20 +0000 (14:06 +0100)
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.

gdb/testsuite/gdb.ada/big_packed_array.exp

index 33b1dfd7634d3f256c589e9a23605cd1bfa61c48..6f030f368d8119d9cf124e616afe730d4ad54c3f 100644 (file)
@@ -21,6 +21,8 @@ standard_ada_testfile foo_ra24_010
 
 set old_gcc [gnat_version_compare < 9]
 
+set endian [target_endianness]
+
 foreach_gnat_encoding scenario flags {all minimal} {
     lappend flags debug
 
@@ -54,8 +56,13 @@ foreach_gnat_encoding scenario flags {all minimal} {
        }
        -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 *-*-*
            }