diff --git a/libc-test/build.rs b/libc-test/build.rs index fb008fae..65d2f099 100644 --- a/libc-test/build.rs +++ b/libc-test/build.rs @@ -3327,7 +3327,9 @@ fn test_linux(target: &str) { && ((x86_64 || i686 || arm || riscv64) && gnu || x86_64_gnux32) ) || // the `u` field is in fact an anonymous union - (gnu && struct_ == "ptrace_syscall_info" && (field == "u" || field == "pad")) + (gnu && struct_ == "ptrace_syscall_info" && (field == "u" || field == "pad")) || + // the vregs field is a `__uint128_t` C's type. + (struct_ == "user_fpsimd_struct" && field == "vregs") }); cfg.skip_roundtrip(move |s| match s { diff --git a/src/unix/linux_like/linux/gnu/b64/aarch64/align.rs b/src/unix/linux_like/linux/gnu/b64/aarch64/align.rs index 154c2c54..c8fc9a20 100644 --- a/src/unix/linux_like/linux/gnu/b64/aarch64/align.rs +++ b/src/unix/linux_like/linux/gnu/b64/aarch64/align.rs @@ -26,4 +26,12 @@ s! { // auto-derive traits like Debug __reserved: [[u64; 32]; 16], } + + #[repr(align(16))] + pub struct user_fpsimd_struct { + pub vregs: [[u64; 2]; 32], + pub fpsr: ::c_uint, + pub fpcr: ::c_uint, + } + }