- Patches added: * avoid-crash-with-length.patch * correct-bounds-check-when-working-around-gas-dwarf-5.patch * fix-crash-in-f-typeprint.c.patch - Patches added (swo#33560, bsc#1251213): * bfd-elf-handle-prstatus-of-156-bytes-in-elf32_arm_na.patch * gdb-corefiles-fix-segfault-in-add_thread_silent.patch - Patches added (swo#32542, swo#33354): * change-return-value-of-_bfd_mmap_temporary.patch - Patches added (swo#33068, swo#33069): * gdb-fix-handling-of-aborted-inferior-call.patch - Patches added (swo#33620): * gdb-rust-fix-handling-of-unsigned-discriminant.patch - Patches added (swo#33444): * have-gdb.threadexitedevent-inherit-from-gdb.threadev.patch - Patches added (swo#33617): * mark-pascal-as-case-insensitive.patch - Patches added (testsuite): * check-gnatmake-version-in-gnat_version_compare.patch * gdb-testsuite-fix-build-id-check-in-gdb.python-py-mi.patch * gdb-testsuite-fix-gdb.mi-mi-sym-info.exp.patch * gdb-testsuite-fix-gdb.rust-methods.exp-on-i686-linux.patch * gdb-testsuite-fix-main-in-gdb.trace-mi-trace-frame-c.patch * gdb-testsuite-fix-possible-tcl-errors-in-gdb.threads.patch * gdb-testsuite-fix-sizeof-test-in-gdb.rust-simple.exp.patch * gdb-testsuite-fix-xfail-in-gdb.ada-array_of_variant..patch * gdb-testsuite-fix-xfail-in-gdb.ada-variant_record_fi.patch * gdb-testsuite-force-dwarf-in-gdb.pascal.patch * gdb-testsuite-rust-fix-for-empty-array.patch * gdb-testsuite-use-expect_build_id_in_core_file-a-bit.patch * gdb-testsuite-use-std-c99-in-gdb.base-callfuncs.exp.patch * gdb-testsuite-use-std-c99-in-gdb.base-nodebug.exp.patch * powerpc-mark-rtti-typeid-tests-as-expected-fail-befo.patch - Maintenance script import-patches.sh: * Use git instead of osc. - Maintenance script qa.sh: * Add PR32893 kfail.
70 lines
2.0 KiB
Diff
70 lines
2.0 KiB
Diff
From 71e7e116b5a76314a4db6d272de3169e1d77696e Mon Sep 17 00:00:00 2001
|
|
From: Tom de Vries <tdevries@suse.de>
|
|
Date: Tue, 11 Nov 2025 20:47:33 +0100
|
|
Subject: [PATCH 12/25] [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 <tom@tromey.com>
|
|
|
|
[1] https://doc.rust-lang.org/reference/types/enum.html
|
|
[2] https://doc.rust-lang.org/reference/type-layout.html#the-rust-representation
|
|
---
|
|
gdb/testsuite/gdb.rust/simple.exp | 2 +-
|
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
|
diff --git a/gdb/testsuite/gdb.rust/simple.exp b/gdb/testsuite/gdb.rust/simple.exp
|
|
index 37a2e079b6c..dc057bfd7c5 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,"
|
|
--
|
|
2.51.0
|
|
|