diff --git a/libc-test/build.rs b/libc-test/build.rs
index 06386f81d26612b4a6ddffbfebc17476aca2a41d..dc4fcc7344fdfad14de76cdda6ab05566117ffcf 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 1318713a424b6df60b036d47011ce060a70eb194..10d74e41252d28fae9d5ef040bad6b215b3f2f4b 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],
     }
 }