From: Tom de Vries Date: Tue, 11 Nov 2025 19:47:33 +0000 (+0100) Subject: [gdb/testsuite] Fix sizeof test in gdb.rust/simple.exp X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=49351a8a6465e38b5eae2d77335099a9e26b82ff;p=thirdparty%2Fbinutils-gdb.git [gdb/testsuite] Fix sizeof test in gdb.rust/simple.exp On x86_64-linux, with test-case gdb.rust/simple.exp I get: ... (gdb) print sizeof(e)^M $52 = 24^M (gdb) PASS: $exp: print sizeof(e) ... but on i686-linux I get instead: ... (gdb) print sizeof(e)^M $52 = 20^M (gdb) FAIL: $exp: print sizeof(e) ... The variable e for which we print the size: ... let e = MoreComplicated::Two(73); ... has type MoreComplicated which is defined like this: ... pub struct HiBob { pub field1: i32, field2: u64, } ... enum MoreComplicated { One, Two(i32), Three(HiBob), Four{this: bool, is: u8, a: char, struct_: u64, variant: u32}, } ... The answer to the question what the size of the enum should be seems to be non-trivial [1][2], but AFAICT it doesn't seem to be illegal that the size can differ between different platforms. Fix this by accepting both 20 and 24 as valid size. Tested on x86_64-linux and i686-linux. Approved-By: Tom Tromey [1] https://doc.rust-lang.org/reference/types/enum.html [2] https://doc.rust-lang.org/reference/type-layout.html#the-rust-representation --- diff --git a/gdb/testsuite/gdb.rust/simple.exp b/gdb/testsuite/gdb.rust/simple.exp index 2377e09b893..9996b90e7ad 100644 --- a/gdb/testsuite/gdb.rust/simple.exp +++ b/gdb/testsuite/gdb.rust/simple.exp @@ -188,7 +188,7 @@ gdb_test "print simple::HiBob{field1: 99, .. y}" \ gdb_test "print e" " = simple::MoreComplicated::Two\\(73\\)" gdb_test "print e2" \ " = simple::MoreComplicated::Four\\{this: true, is: 8, a: 109 'm', struct_: 100, variant: 10\\}" -gdb_test "print sizeof(e)" " = 24" +gdb_test "print sizeof(e)" " = (20|24)" gdb_test_sequence "ptype e" "" { " = enum simple::MoreComplicated \\{" " One,"