From dba4138305c5cd28e33775d6d4059a1c5fe2292d Mon Sep 17 00:00:00 2001 From: "Adam C. Foltzer" <acfoltzer@fastly.com> Date: Wed, 26 Jun 2019 15:51:08 -0700 Subject: [PATCH] remove newer `__ssp` field from `ucontext_t` for earlier glib compat Per discussion in #1410, this is necessary to avoid struct size mismatches between Rust and C on systems with glibc < 2.28. --- libc-test/build.rs | 5 ++++- src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs | 1 - 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/libc-test/build.rs b/libc-test/build.rs index 06386f81..dc4fcc73 100644 --- a/libc-test/build.rs +++ b/libc-test/build.rs @@ -1950,7 +1950,6 @@ fn test_linux(target: &str) { "syslog.h", "termios.h", "time.h", - "ucontext.h", "unistd.h", "utime.h", "utmp.h", @@ -1968,6 +1967,10 @@ fn test_linux(target: &str) { // <execinfo.h> is not supported by musl: // https://www.openwall.com/lists/musl/2015/04/09/3 [!musl]: "execinfo.h", + // ucontext_t added a new field as of glibc 2.28; our struct definition is + // conservative and omits the field, but that means the size doesn't match for newer + // glibcs + [!gnu]: "ucontext.h", } // Include linux headers at the end: diff --git a/src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs b/src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs index 1318713a..10d74e41 100644 --- a/src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs +++ b/src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs @@ -285,7 +285,6 @@ s_no_extra_traits! { pub uc_mcontext: mcontext_t, pub uc_sigmask: ::sigset_t, __private: [u8; 512], - __ssp: [::c_ulonglong; 4], } } -- GitLab