diff --git a/src/unix/bsd/apple/b32/align.rs b/src/unix/bsd/apple/b32/align.rs
index ba9bc3ab3e28e50d8613e9aa1f84a3c00116c8bd..ca1fe1ce299442531bef79be18ad7caada5b2503 100644
--- a/src/unix/bsd/apple/b32/align.rs
+++ b/src/unix/bsd/apple/b32/align.rs
@@ -1,3 +1,7 @@
-#[derive(Copy, Clone, Debug, PartialEq)]
-#[repr(C, align(16))]
-pub struct max_align_t([f64; 2]);
+s_no_extra_traits! {
+    #[allow(missing_debug_implementations)]
+    #[repr(align(16))]
+    pub struct max_align_t {
+        priv_: [f64; 2]
+    }
+}
diff --git a/src/unix/bsd/apple/b64/align.rs b/src/unix/bsd/apple/b64/align.rs
index ba9bc3ab3e28e50d8613e9aa1f84a3c00116c8bd..ca1fe1ce299442531bef79be18ad7caada5b2503 100644
--- a/src/unix/bsd/apple/b64/align.rs
+++ b/src/unix/bsd/apple/b64/align.rs
@@ -1,3 +1,7 @@
-#[derive(Copy, Clone, Debug, PartialEq)]
-#[repr(C, align(16))]
-pub struct max_align_t([f64; 2]);
+s_no_extra_traits! {
+    #[allow(missing_debug_implementations)]
+    #[repr(align(16))]
+    pub struct max_align_t {
+        priv_: [f64; 2]
+    }
+}
diff --git a/src/unix/bsd/freebsdlike/freebsd/x86_64/align.rs b/src/unix/bsd/freebsdlike/freebsd/x86_64/align.rs
index 7fffedbf9620ded7cca85f69d8affaa207f8e6c8..7ca870fd02b71e31e44439e3fabdf1386eb75bb9 100644
--- a/src/unix/bsd/freebsdlike/freebsd/x86_64/align.rs
+++ b/src/unix/bsd/freebsdlike/freebsd/x86_64/align.rs
@@ -1,3 +1,7 @@
-#[derive(Copy, Clone, Debug, PartialEq)]
-#[repr(C, align(16))]
-pub struct max_align_t([f64; 4]);
+s_no_extra_traits! {
+    #[allow(missing_debug_implementations)]
+    #[repr(align(16))]
+    pub struct max_align_t {
+        priv_: [f64; 4]
+    }
+}
diff --git a/src/unix/linux_like/android/b32/x86/align.rs b/src/unix/linux_like/android/b32/x86/align.rs
index ca2085497c16968eb386b4fa77fb5bea2eb3c272..04df4a05d19b71c0f18360daf8b8dcd0ce5a4d41 100644
--- a/src/unix/linux_like/android/b32/x86/align.rs
+++ b/src/unix/linux_like/android/b32/x86/align.rs
@@ -1,3 +1,7 @@
-#[derive(Copy, Clone, Debug, PartialEq)]
-#[repr(C, align(8))]
-pub struct max_align_t([f64; 2]);
+s_no_extra_traits! {
+    #[allow(missing_debug_implementations)]
+    #[repr(align(8))]
+    pub struct max_align_t {
+        priv_: [f64; 2]
+    }
+}
diff --git a/src/unix/linux_like/android/b64/aarch64/align.rs b/src/unix/linux_like/android/b64/aarch64/align.rs
index a71235ab299c0b5828425ffb996c2e4fa0db25ec..8e949963a637fb4b171c1a3649cf6c2ef8d30a1d 100644
--- a/src/unix/linux_like/android/b64/aarch64/align.rs
+++ b/src/unix/linux_like/android/b64/aarch64/align.rs
@@ -1,3 +1,7 @@
-#[derive(Copy, Clone, Debug, PartialEq)]
-#[repr(C, align(16))]
-pub struct max_align_t([f32; 8]);
+s_no_extra_traits! {
+    #[allow(missing_debug_implementations)]
+    #[repr(align(16))]
+    pub struct max_align_t {
+        priv_: [f32; 8]
+    }
+}
diff --git a/src/unix/linux_like/android/b64/x86_64/align.rs b/src/unix/linux_like/android/b64/x86_64/align.rs
index 7fffedbf9620ded7cca85f69d8affaa207f8e6c8..7ca870fd02b71e31e44439e3fabdf1386eb75bb9 100644
--- a/src/unix/linux_like/android/b64/x86_64/align.rs
+++ b/src/unix/linux_like/android/b64/x86_64/align.rs
@@ -1,3 +1,7 @@
-#[derive(Copy, Clone, Debug, PartialEq)]
-#[repr(C, align(16))]
-pub struct max_align_t([f64; 4]);
+s_no_extra_traits! {
+    #[allow(missing_debug_implementations)]
+    #[repr(align(16))]
+    pub struct max_align_t {
+        priv_: [f64; 4]
+    }
+}
diff --git a/src/unix/linux_like/emscripten/align.rs b/src/unix/linux_like/emscripten/align.rs
index 8fa2186fc924cd0bfc327c3ac374796db8d50cb9..141570f88ffb9c0aa216745722353039ba5dabc7 100644
--- a/src/unix/linux_like/emscripten/align.rs
+++ b/src/unix/linux_like/emscripten/align.rs
@@ -1,10 +1,7 @@
 macro_rules! expand_align {
     () => {
-        #[derive(Copy, Clone, Debug, PartialEq)]
-        #[repr(C, align(8))]
-        pub struct max_align_t([f64; 2]);
-
         s! {
+            #[allow(missing_debug_implementations)]
             #[repr(align(4))]
             pub struct pthread_mutex_t {
                 size: [u8; ::__SIZEOF_PTHREAD_MUTEX_T],
@@ -39,6 +36,13 @@ macro_rules! expand_align {
             pub struct pthread_cond_t {
                 size: [u8; ::__SIZEOF_PTHREAD_COND_T],
             }
+
+            #[allow(missing_debug_implementations)]
+            #[repr(align(8))]
+            pub struct max_align_t {
+                priv_: [f64; 2]
+            }
+
         }
 
         cfg_if! {
diff --git a/src/unix/linux_like/linux/gnu/b32/arm/align.rs b/src/unix/linux_like/linux/gnu/b32/arm/align.rs
index cd887aca9d5cfd78f073faadc949bb524fc08c2b..825546be90a916c52fa04ba22cb9c7a168daa628 100644
--- a/src/unix/linux_like/linux/gnu/b32/arm/align.rs
+++ b/src/unix/linux_like/linux/gnu/b32/arm/align.rs
@@ -1,3 +1,7 @@
-#[derive(Copy, Clone, Debug, PartialEq)]
-#[repr(C, align(8))]
-pub struct max_align_t([i64; 2]);
+s_no_extra_traits! {
+    #[allow(missing_debug_implementations)]
+    #[repr(align(8))]
+    pub struct max_align_t {
+        priv_: [i64; 2]
+    }
+}
diff --git a/src/unix/linux_like/linux/gnu/b32/mips/align.rs b/src/unix/linux_like/linux/gnu/b32/mips/align.rs
index a6e238d77846b8e4eff399ce56a061d19d69c834..8c228ebab72cec19c6359b5b51d508c21f4f9000 100644
--- a/src/unix/linux_like/linux/gnu/b32/mips/align.rs
+++ b/src/unix/linux_like/linux/gnu/b32/mips/align.rs
@@ -1,3 +1,7 @@
-#[derive(Copy, Clone, Debug, PartialEq)]
-#[repr(C, align(8))]
-pub struct max_align_t([f32; 4]);
+s_no_extra_traits! {
+    #[allow(missing_debug_implementations)]
+    #[repr(align(8))]
+    pub struct max_align_t {
+        priv_: [f32; 4]
+    }
+}
diff --git a/src/unix/linux_like/linux/gnu/b32/x86/align.rs b/src/unix/linux_like/linux/gnu/b32/x86/align.rs
index c9ab8b97841d2c227797896125181319af195992..96634749f53b2a7c2f5e21113d5dbd8a92b7f550 100644
--- a/src/unix/linux_like/linux/gnu/b32/x86/align.rs
+++ b/src/unix/linux_like/linux/gnu/b32/x86/align.rs
@@ -1,3 +1,7 @@
-#[derive(Copy, Clone, Debug, PartialEq)]
-#[repr(C, align(16))]
-pub struct max_align_t([f64; 6]);
+s_no_extra_traits! {
+    #[allow(missing_debug_implementations)]
+    #[repr(align(16))]
+    pub struct max_align_t {
+        priv_: [f64; 6]
+    }
+}
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 a71235ab299c0b5828425ffb996c2e4fa0db25ec..8e949963a637fb4b171c1a3649cf6c2ef8d30a1d 100644
--- a/src/unix/linux_like/linux/gnu/b64/aarch64/align.rs
+++ b/src/unix/linux_like/linux/gnu/b64/aarch64/align.rs
@@ -1,3 +1,7 @@
-#[derive(Copy, Clone, Debug, PartialEq)]
-#[repr(C, align(16))]
-pub struct max_align_t([f32; 8]);
+s_no_extra_traits! {
+    #[allow(missing_debug_implementations)]
+    #[repr(align(16))]
+    pub struct max_align_t {
+        priv_: [f32; 8]
+    }
+}
diff --git a/src/unix/linux_like/linux/gnu/b64/mips64/align.rs b/src/unix/linux_like/linux/gnu/b64/mips64/align.rs
index 7fffedbf9620ded7cca85f69d8affaa207f8e6c8..7ca870fd02b71e31e44439e3fabdf1386eb75bb9 100644
--- a/src/unix/linux_like/linux/gnu/b64/mips64/align.rs
+++ b/src/unix/linux_like/linux/gnu/b64/mips64/align.rs
@@ -1,3 +1,7 @@
-#[derive(Copy, Clone, Debug, PartialEq)]
-#[repr(C, align(16))]
-pub struct max_align_t([f64; 4]);
+s_no_extra_traits! {
+    #[allow(missing_debug_implementations)]
+    #[repr(align(16))]
+    pub struct max_align_t {
+        priv_: [f64; 4]
+    }
+}
diff --git a/src/unix/linux_like/linux/gnu/b64/powerpc64/align.rs b/src/unix/linux_like/linux/gnu/b64/powerpc64/align.rs
index 86a5f28f1f520ea611ca13959aa4b5e23fa757fc..29d1e1c7b8a5558fcfa3b8ac333cee3fa9784163 100644
--- a/src/unix/linux_like/linux/gnu/b64/powerpc64/align.rs
+++ b/src/unix/linux_like/linux/gnu/b64/powerpc64/align.rs
@@ -1,3 +1,7 @@
-#[derive(Copy, Clone, Debug, PartialEq)]
-#[repr(C, align(16))]
-pub struct max_align_t([i64; 4]);
+s_no_extra_traits! {
+    #[allow(missing_debug_implementations)]
+    #[repr(align(16))]
+    pub struct max_align_t {
+        priv_: [i64; 4]
+    }
+}
diff --git a/src/unix/linux_like/linux/gnu/b64/sparc64/align.rs b/src/unix/linux_like/linux/gnu/b64/sparc64/align.rs
index 86a5f28f1f520ea611ca13959aa4b5e23fa757fc..29d1e1c7b8a5558fcfa3b8ac333cee3fa9784163 100644
--- a/src/unix/linux_like/linux/gnu/b64/sparc64/align.rs
+++ b/src/unix/linux_like/linux/gnu/b64/sparc64/align.rs
@@ -1,3 +1,7 @@
-#[derive(Copy, Clone, Debug, PartialEq)]
-#[repr(C, align(16))]
-pub struct max_align_t([i64; 4]);
+s_no_extra_traits! {
+    #[allow(missing_debug_implementations)]
+    #[repr(align(16))]
+    pub struct max_align_t {
+        priv_: [i64; 4]
+    }
+}
diff --git a/src/unix/linux_like/linux/gnu/b64/x86_64/align.rs b/src/unix/linux_like/linux/gnu/b64/x86_64/align.rs
index 7fffedbf9620ded7cca85f69d8affaa207f8e6c8..7ca870fd02b71e31e44439e3fabdf1386eb75bb9 100644
--- a/src/unix/linux_like/linux/gnu/b64/x86_64/align.rs
+++ b/src/unix/linux_like/linux/gnu/b64/x86_64/align.rs
@@ -1,3 +1,7 @@
-#[derive(Copy, Clone, Debug, PartialEq)]
-#[repr(C, align(16))]
-pub struct max_align_t([f64; 4]);
+s_no_extra_traits! {
+    #[allow(missing_debug_implementations)]
+    #[repr(align(16))]
+    pub struct max_align_t {
+        priv_: [f64; 4]
+    }
+}
diff --git a/src/unix/linux_like/linux/musl/b32/arm/align.rs b/src/unix/linux_like/linux/musl/b32/arm/align.rs
index 6b5d11820132d7203584f56b1addd0933a2b1080..aedbf7a99eb1b18a3f99ffb1746228f2c8d36179 100644
--- a/src/unix/linux_like/linux/musl/b32/arm/align.rs
+++ b/src/unix/linux_like/linux/musl/b32/arm/align.rs
@@ -1,3 +1,7 @@
-#[derive(Copy, Clone, Debug, PartialEq)]
-#[repr(C, align(8))]
-pub struct max_align_t(i64, i64);
+s_no_extra_traits! {
+    #[allow(missing_debug_implementations)]
+    #[repr(align(8))]
+    pub struct max_align_t {
+        priv_: (i64, i64)
+    }
+}
diff --git a/src/unix/linux_like/linux/musl/b32/mips/align.rs b/src/unix/linux_like/linux/musl/b32/mips/align.rs
index a6e238d77846b8e4eff399ce56a061d19d69c834..8c228ebab72cec19c6359b5b51d508c21f4f9000 100644
--- a/src/unix/linux_like/linux/musl/b32/mips/align.rs
+++ b/src/unix/linux_like/linux/musl/b32/mips/align.rs
@@ -1,3 +1,7 @@
-#[derive(Copy, Clone, Debug, PartialEq)]
-#[repr(C, align(8))]
-pub struct max_align_t([f32; 4]);
+s_no_extra_traits! {
+    #[allow(missing_debug_implementations)]
+    #[repr(align(8))]
+    pub struct max_align_t {
+        priv_: [f32; 4]
+    }
+}
diff --git a/src/unix/linux_like/linux/musl/b32/x86/align.rs b/src/unix/linux_like/linux/musl/b32/x86/align.rs
index b203d7e8c87401fcb2e210d5e4380982186d79cf..79544176a88c92012772362fd005c65a954e7369 100644
--- a/src/unix/linux_like/linux/musl/b32/x86/align.rs
+++ b/src/unix/linux_like/linux/musl/b32/x86/align.rs
@@ -1,3 +1,7 @@
-#[derive(Copy, Clone, Debug, PartialEq)]
-#[repr(C, align(8))]
-pub struct max_align_t([f64; 3]);
+s_no_extra_traits! {
+    #[allow(missing_debug_implementations)]
+    #[repr(align(8))]
+    pub struct max_align_t {
+        priv_: [f64; 3]
+    }
+}
diff --git a/src/unix/linux_like/linux/musl/b64/aarch64/align.rs b/src/unix/linux_like/linux/musl/b64/aarch64/align.rs
index a71235ab299c0b5828425ffb996c2e4fa0db25ec..8e949963a637fb4b171c1a3649cf6c2ef8d30a1d 100644
--- a/src/unix/linux_like/linux/musl/b64/aarch64/align.rs
+++ b/src/unix/linux_like/linux/musl/b64/aarch64/align.rs
@@ -1,3 +1,7 @@
-#[derive(Copy, Clone, Debug, PartialEq)]
-#[repr(C, align(16))]
-pub struct max_align_t([f32; 8]);
+s_no_extra_traits! {
+    #[allow(missing_debug_implementations)]
+    #[repr(align(16))]
+    pub struct max_align_t {
+        priv_: [f32; 8]
+    }
+}
diff --git a/src/unix/linux_like/linux/musl/b64/x86_64/align.rs b/src/unix/linux_like/linux/musl/b64/x86_64/align.rs
index 7fffedbf9620ded7cca85f69d8affaa207f8e6c8..7ca870fd02b71e31e44439e3fabdf1386eb75bb9 100644
--- a/src/unix/linux_like/linux/musl/b64/x86_64/align.rs
+++ b/src/unix/linux_like/linux/musl/b64/x86_64/align.rs
@@ -1,3 +1,7 @@
-#[derive(Copy, Clone, Debug, PartialEq)]
-#[repr(C, align(16))]
-pub struct max_align_t([f64; 4]);
+s_no_extra_traits! {
+    #[allow(missing_debug_implementations)]
+    #[repr(align(16))]
+    pub struct max_align_t {
+        priv_: [f64; 4]
+    }
+}
diff --git a/src/windows/gnu/align.rs b/src/windows/gnu/align.rs
index dd3a3f72d30d03607cc8b3866de41fa34a12a10f..3af99e3ca149bf53fa803e05bb15f02f6f60a6e1 100644
--- a/src/windows/gnu/align.rs
+++ b/src/windows/gnu/align.rs
@@ -1,9 +1,19 @@
 cfg_if! {
     if #[cfg(target_pointer_width = "64")] {
-        #[derive(Copy, Clone, Debug, PartialEq)]
-        #[repr(C, align(16))] pub struct max_align_t([f64; 4]);
+        s_no_extra_traits! {
+            #[allow(missing_debug_implementations)]
+            #[repr(align(16))]
+            pub struct max_align_t {
+                priv_: [f64; 4]
+            }
+        }
     } else if #[cfg(target_pointer_width = "32")] {
-        #[derive(Copy, Clone, Debug, PartialEq)]
-        #[repr(C, align(16))] pub struct max_align_t([i64; 6]);
+        s_no_extra_traits! {
+            #[allow(missing_debug_implementations)]
+            #[repr(align(16))]
+            pub struct max_align_t {
+                priv_: [i64; 6]
+            }
+        }
     }
 }