Skip to content

Commit 0d25ac4

Browse files
authored
Rollup merge of rust-lang#149056 - fneddy:fix_s390_test_padding_overwrite, r=RalfJung
fix the fragment_in_dst_padding_gets_overwritten test on s390x on s390x 128bit types have a smaller alignment then on x86[^1]. This leads to smaller structs (24 instead of 32 bytes) and therefore the write_unaligned will write outside of the structs boundary. To fix the test, change the trailing u32 into a u8. This will generate 7 trailing padding bytes on s390x and 15 on x86_64. Also change the start of the garbage data so it will span over x,y and padding: ``` s390x: XXXXXXXXXXXXXXXXY------- x86_64: XXXXXXXXXXXXXXXXY--------------- GGGGGGGG ``` [^1]: s390x ELF ABI Table 1.1, Page 12 https://github.com/IBM/s390x-abi
2 parents ced17d6 + 10172d1 commit 0d25ac4

File tree

1 file changed

+1
-0
lines changed

1 file changed

+1
-0
lines changed

tests/ui/consts/const-eval/ptr_fragments.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ const _PARTIAL_OVERWRITE: () = {
6868
};
6969

7070
#[allow(dead_code)]
71+
#[cfg(not(target_arch = "s390x"))] // u128 is less aligned on s390x, removing the padding
7172
fn fragment_in_dst_padding_gets_overwritten() {
7273
#[repr(C)]
7374
struct Pair {

0 commit comments

Comments
 (0)