diff --git a/src/unix/bsd/apple/b32/align.rs b/src/unix/bsd/apple/b32/align.rs
index ba9bc3ab3e28e50d8613e9aa1f84a3c00116c8bd..374a994b82258c42c43cd410baf0486c20985439 100644
--- a/src/unix/bsd/apple/b32/align.rs
+++ b/src/unix/bsd/apple/b32/align.rs
@@ -1,3 +1,4 @@
-#[derive(Copy, Clone, Debug, PartialEq)]
-#[repr(C, align(16))]
-pub struct max_align_t([f64; 2]);
+s! {
+    #[repr(align(16))]
+    pub struct max_align_t([f64; 2]);
+}
diff --git a/src/unix/bsd/apple/b64/align.rs b/src/unix/bsd/apple/b64/align.rs
index ba9bc3ab3e28e50d8613e9aa1f84a3c00116c8bd..374a994b82258c42c43cd410baf0486c20985439 100644
--- a/src/unix/bsd/apple/b64/align.rs
+++ b/src/unix/bsd/apple/b64/align.rs
@@ -1,3 +1,4 @@
-#[derive(Copy, Clone, Debug, PartialEq)]
-#[repr(C, align(16))]
-pub struct max_align_t([f64; 2]);
+s! {
+    #[repr(align(16))]
+    pub struct max_align_t([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..33a0bc5daffce8ca5c0f4502780e304e1b31bb9b 100644
--- a/src/unix/bsd/freebsdlike/freebsd/x86_64/align.rs
+++ b/src/unix/bsd/freebsdlike/freebsd/x86_64/align.rs
@@ -1,3 +1,4 @@
-#[derive(Copy, Clone, Debug, PartialEq)]
-#[repr(C, align(16))]
-pub struct max_align_t([f64; 4]);
+s! {
+    #[repr(align(16))]
+    pub struct max_align_t([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..b3abe679aedbafd6960a4096f9cdbcdb6df8ce3a 100644
--- a/src/unix/linux_like/android/b32/x86/align.rs
+++ b/src/unix/linux_like/android/b32/x86/align.rs
@@ -1,3 +1,4 @@
-#[derive(Copy, Clone, Debug, PartialEq)]
-#[repr(C, align(8))]
-pub struct max_align_t([f64; 2]);
+s! {
+    #[repr(align(8))]
+    pub struct max_align_t([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..9531ca4f8beedec981f1f6a7b98219da97208055 100644
--- a/src/unix/linux_like/android/b64/aarch64/align.rs
+++ b/src/unix/linux_like/android/b64/aarch64/align.rs
@@ -1,3 +1,4 @@
-#[derive(Copy, Clone, Debug, PartialEq)]
-#[repr(C, align(16))]
-pub struct max_align_t([f32; 8]);
+s! {
+    #[repr(align(16))]
+    pub struct max_align_t([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..33a0bc5daffce8ca5c0f4502780e304e1b31bb9b 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,4 @@
-#[derive(Copy, Clone, Debug, PartialEq)]
-#[repr(C, align(16))]
-pub struct max_align_t([f64; 4]);
+s! {
+    #[repr(align(16))]
+    pub struct max_align_t([f64; 4]);
+}
diff --git a/src/unix/linux_like/emscripten/align.rs b/src/unix/linux_like/emscripten/align.rs
index 8fa2186fc924cd0bfc327c3ac374796db8d50cb9..e024ce08c83bbac59b3f61cf9492eebe32139b7c 100644
--- a/src/unix/linux_like/emscripten/align.rs
+++ b/src/unix/linux_like/emscripten/align.rs
@@ -1,10 +1,9 @@
 macro_rules! expand_align {
     () => {
-        #[derive(Copy, Clone, Debug, PartialEq)]
-        #[repr(C, align(8))]
-        pub struct max_align_t([f64; 2]);
-
         s! {
+            #[repr(align(8))]
+            pub struct max_align_t([f64; 2]);
+
             #[repr(align(4))]
             pub struct pthread_mutex_t {
                 size: [u8; ::__SIZEOF_PTHREAD_MUTEX_T],
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..3817254bff44895c461435f43304fb34377af95f 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,4 @@
-#[derive(Copy, Clone, Debug, PartialEq)]
-#[repr(C, align(8))]
-pub struct max_align_t([i64; 2]);
+s! {
+    #[repr(align(8))]
+    pub struct max_align_t([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..8a5f872f5c0fb32846157e3e404a9d031c7d8ee2 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,4 @@
-#[derive(Copy, Clone, Debug, PartialEq)]
-#[repr(C, align(8))]
-pub struct max_align_t([f32; 4]);
+s! {
+    #[repr(align(8))]
+    pub struct max_align_t([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..afd65bac7d5272e2c028b738d127d88807274039 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,4 @@
-#[derive(Copy, Clone, Debug, PartialEq)]
-#[repr(C, align(16))]
-pub struct max_align_t([f64; 6]);
+s! {
+    #[repr(align(16))]
+    pub struct max_align_t([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..9531ca4f8beedec981f1f6a7b98219da97208055 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,4 @@
-#[derive(Copy, Clone, Debug, PartialEq)]
-#[repr(C, align(16))]
-pub struct max_align_t([f32; 8]);
+s! {
+    #[repr(align(16))]
+    pub struct max_align_t([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..33a0bc5daffce8ca5c0f4502780e304e1b31bb9b 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,4 @@
-#[derive(Copy, Clone, Debug, PartialEq)]
-#[repr(C, align(16))]
-pub struct max_align_t([f64; 4]);
+s! {
+    #[repr(align(16))]
+    pub struct max_align_t([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..56681afce2f3c41863bb6f1f5e001abf84dca504 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,4 @@
-#[derive(Copy, Clone, Debug, PartialEq)]
-#[repr(C, align(16))]
-pub struct max_align_t([i64; 4]);
+s! {
+    #[repr(align(16))]
+    pub struct max_align_t([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..56681afce2f3c41863bb6f1f5e001abf84dca504 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,4 @@
-#[derive(Copy, Clone, Debug, PartialEq)]
-#[repr(C, align(16))]
-pub struct max_align_t([i64; 4]);
+s! {
+    #[repr(align(16))]
+    pub struct max_align_t([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..33a0bc5daffce8ca5c0f4502780e304e1b31bb9b 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,4 @@
-#[derive(Copy, Clone, Debug, PartialEq)]
-#[repr(C, align(16))]
-pub struct max_align_t([f64; 4]);
+s! {
+    #[repr(align(16))]
+    pub struct max_align_t([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..6b2a39c96f0b2d61108ded8fcd018ba66ea57c57 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,4 @@
-#[derive(Copy, Clone, Debug, PartialEq)]
-#[repr(C, align(8))]
-pub struct max_align_t(i64, i64);
+s! {
+    #[repr(align(8))]
+    pub struct max_align_t(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..8a5f872f5c0fb32846157e3e404a9d031c7d8ee2 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,4 @@
-#[derive(Copy, Clone, Debug, PartialEq)]
-#[repr(C, align(8))]
-pub struct max_align_t([f32; 4]);
+s! {
+    #[repr(align(8))]
+    pub struct max_align_t([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..707d113cf75dd4f307f60773568b603321824e95 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,4 @@
-#[derive(Copy, Clone, Debug, PartialEq)]
-#[repr(C, align(8))]
-pub struct max_align_t([f64; 3]);
+s! {
+    #[repr(align(8))]
+    pub struct max_align_t([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..9531ca4f8beedec981f1f6a7b98219da97208055 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,4 @@
-#[derive(Copy, Clone, Debug, PartialEq)]
-#[repr(C, align(16))]
-pub struct max_align_t([f32; 8]);
+s! {
+    #[repr(align(16))]
+    pub struct max_align_t([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..33a0bc5daffce8ca5c0f4502780e304e1b31bb9b 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,4 @@
-#[derive(Copy, Clone, Debug, PartialEq)]
-#[repr(C, align(16))]
-pub struct max_align_t([f64; 4]);
+s! {
+    #[repr(align(16))]
+    pub struct max_align_t([f64; 4]);
+}
diff --git a/src/windows/gnu/align.rs b/src/windows/gnu/align.rs
index dd3a3f72d30d03607cc8b3866de41fa34a12a10f..5459791ab33938e912c71e5cea6c1be66781ffaf 100644
--- a/src/windows/gnu/align.rs
+++ b/src/windows/gnu/align.rs
@@ -1,9 +1,11 @@
 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! {
+            #[repr(align(16))] pub struct max_align_t([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! {
+            #[repr(align(16))] pub struct max_align_t([i64; 6]);
+        }
     }
 }