diff --git a/.cirrus.yml b/.cirrus.yml
index 656696c825752..7968772921d40 100644
--- a/.cirrus.yml
+++ b/.cirrus.yml
@@ -3,6 +3,9 @@ task:
   env:
     HOME: /tmp  # cargo cache needs it
     TARGET: x86_64-unknown-freebsd
+    # FIXME(freebsd): FreeBSD has a segfault when `RUST_BACKTRACE` is set
+    # https://github.com/rust-lang/rust/issues/132185
+    RUST_BACKTRACE: "0"
   matrix:
     - name: nightly freebsd-13 i686
       # Test i686 FreeBSD in 32-bit emulation on a 64-bit host.
diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml
index 580effd5b7bb8..beb5bfb12570f 100644
--- a/.github/workflows/ci.yaml
+++ b/.github/workflows/ci.yaml
@@ -135,7 +135,9 @@ jobs:
           - i686-unknown-linux-musl
           - loongarch64-unknown-linux-gnu
           - loongarch64-unknown-linux-musl
-          - powerpc-unknown-linux-gnu
+          # FIXME(ppc): SIGILL running tests, see
+          # https://github.com/rust-lang/libc/pull/4254#issuecomment-2636288713
+          # - powerpc-unknown-linux-gnu
           - powerpc64-unknown-linux-gnu
           - powerpc64le-unknown-linux-gnu
           - riscv64gc-unknown-linux-gnu
diff --git a/src/macros.rs b/src/macros.rs
index c9d96b7ab2906..b29f33d55cf33 100644
--- a/src/macros.rs
+++ b/src/macros.rs
@@ -243,7 +243,7 @@ cfg_if! {
             )*) => ($(
                 #[inline]
                 $(#[$attr])*
-                pub $($constness)* unsafe extern fn $i($($arg: $argty),*) -> $ret
+                pub $($constness)* unsafe extern "C" fn $i($($arg: $argty),*) -> $ret
                     $body
             )*)
         }
@@ -257,7 +257,7 @@ cfg_if! {
             )*) => ($(
                 #[inline]
                 $(#[$attr])*
-                pub $($constness)* extern fn $i($($arg: $argty),*) -> $ret
+                pub $($constness)* extern "C" fn $i($($arg: $argty),*) -> $ret
                     $body
             )*)
         }
@@ -285,7 +285,7 @@ cfg_if! {
             )*) => ($(
                 #[inline]
                 $(#[$attr])*
-                pub unsafe extern fn $i($($arg: $argty),*) -> $ret
+                pub unsafe extern "C" fn $i($($arg: $argty),*) -> $ret
                     $body
             )*)
         }
@@ -299,7 +299,7 @@ cfg_if! {
             )*) => ($(
                 #[inline]
                 $(#[$attr])*
-                pub extern fn $i($($arg: $argty),*) -> $ret
+                pub extern "C" fn $i($($arg: $argty),*) -> $ret
                     $body
             )*)
         }
diff --git a/src/unix/bsd/freebsdlike/freebsd/freebsd15/mod.rs b/src/unix/bsd/freebsdlike/freebsd/freebsd15/mod.rs
index 638b7bc3352ad..11432df2ba4c2 100644
--- a/src/unix/bsd/freebsdlike/freebsd/freebsd15/mod.rs
+++ b/src/unix/bsd/freebsdlike/freebsd/freebsd15/mod.rs
@@ -266,7 +266,8 @@ s! {
         pub st_blksize: crate::blksize_t,
         pub st_flags: crate::fflags_t,
         pub st_gen: u64,
-        pub st_spare: [u64; 10],
+        pub st_filerev: u64,
+        pub st_spare: [u64; 9],
     }
 }