aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikael Urankar <mikael@FreeBSD.org>2024-10-24 09:49:57 +0000
committerMikael Urankar <mikael@FreeBSD.org>2024-11-08 08:24:19 +0000
commit29120ed40fd6faa934d8a2b97c7ded42ab7dce4e (patch)
tree848310cdab6b2e226e1efadabafc4d27a67ecaad
parent05961664b7f01ac5ed3e9352d43c2aa1ae3028b5 (diff)
lang/rust: Update to 1.82.0
-rw-r--r--Mk/Uses/cargo.mk2
-rw-r--r--Mk/bsd.gecko.mk2
-rw-r--r--lang/rust-bootstrap/Makefile2
-rw-r--r--lang/rust-bootstrap/distinfo6
-rw-r--r--lang/rust/Makefile6
-rw-r--r--lang/rust/distinfo102
-rw-r--r--lang/rust/files/patch-compiler_rustc__target_src_abi_call_powerpc64.rs2
-rw-r--r--lang/rust/files/patch-library_backtrace_src_backtrace_mod.rs4
-rw-r--r--lang/rust/files/patch-vendor_cc.rs80
-rw-r--r--lang/rust/files/patch-vendor_libc-0.2.155745
-rw-r--r--lang/rust/files/patch-vendor_libc-0.2.157745
-rw-r--r--lang/rust/files/patch-vendor_libc-0.2.158745
12 files changed, 2352 insertions, 89 deletions
diff --git a/Mk/Uses/cargo.mk b/Mk/Uses/cargo.mk
index 8a7e2539896f..c265ddfc4627 100644
--- a/Mk/Uses/cargo.mk
+++ b/Mk/Uses/cargo.mk
@@ -97,7 +97,7 @@ WRKSRC_crate_${_crate}= ${WRKDIR}/${_wrksrc}
CARGO_BUILDDEP?= yes
. if ${CARGO_BUILDDEP:tl} == "yes"
-BUILD_DEPENDS+= ${RUST_DEFAULT}>=1.81.0:lang/${RUST_DEFAULT}
+BUILD_DEPENDS+= ${RUST_DEFAULT}>=1.82.0:lang/${RUST_DEFAULT}
. elif ${CARGO_BUILDDEP:tl} == "any-version"
BUILD_DEPENDS+= ${RUST_DEFAULT}>=0:lang/${RUST_DEFAULT}
. endif
diff --git a/Mk/bsd.gecko.mk b/Mk/bsd.gecko.mk
index c6fb935ba593..50e9e1dc2a56 100644
--- a/Mk/bsd.gecko.mk
+++ b/Mk/bsd.gecko.mk
@@ -77,7 +77,7 @@ ELF_FEATURES+= +wxneeded:dist/bin/${MOZILLA} +wxneeded:dist/bin/${MOZILLA}-bin
BUNDLE_LIBS= yes
BUILD_DEPENDS+= rust-cbindgen>=0.26.0:devel/rust-cbindgen \
- ${RUST_DEFAULT}>=1.81.0:lang/${RUST_DEFAULT} \
+ ${RUST_DEFAULT}>=1.82.0:lang/${RUST_DEFAULT} \
node:www/node
LIB_DEPENDS+= libdrm.so:graphics/libdrm
RUN_DEPENDS+= ${LOCALBASE}/lib/libpci.so:devel/libpci
diff --git a/lang/rust-bootstrap/Makefile b/lang/rust-bootstrap/Makefile
index 721bde7e0f50..fe577802b840 100644
--- a/lang/rust-bootstrap/Makefile
+++ b/lang/rust-bootstrap/Makefile
@@ -2,7 +2,7 @@
# to upload them to ~/public_distfiles on freefall in preparation
# for the next lang/rust update.
PORTNAME= rust
-PORTVERSION= 1.81.0
+PORTVERSION= 1.82.0
CATEGORIES= lang
MASTER_SITES= https://static.rust-lang.org/dist/
PKGNAMEPREFIX= ${FLAVOR:S/_/-/g}-
diff --git a/lang/rust-bootstrap/distinfo b/lang/rust-bootstrap/distinfo
index fa537b259d6c..6597985415ff 100644
--- a/lang/rust-bootstrap/distinfo
+++ b/lang/rust-bootstrap/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1725563033
-SHA256 (rust/rustc-1.81.0-src.tar.xz) = e8fc54fea3df1a5081c00563cdc0fe2ac567104a557aa07116966c013f3d0195
-SIZE (rust/rustc-1.81.0-src.tar.xz) = 216764824
+TIMESTAMP = 1729451664
+SHA256 (rust/rustc-1.82.0-src.tar.xz) = 1276a0bb8fa12288ba6fa96597d28b40e74c44257c051d3bc02c2b049bb38210
+SIZE (rust/rustc-1.82.0-src.tar.xz) = 219769328
diff --git a/lang/rust/Makefile b/lang/rust/Makefile
index 5da879672316..004fa9de631c 100644
--- a/lang/rust/Makefile
+++ b/lang/rust/Makefile
@@ -1,5 +1,5 @@
PORTNAME= rust
-PORTVERSION?= 1.81.0
+PORTVERSION?= 1.82.0
PORTREVISION?= 0
CATEGORIES= lang
MASTER_SITES= https://static.rust-lang.org/dist/:src \
@@ -67,8 +67,8 @@ WASM_VARS= _COMPONENTS+="rust-analysis-${_PACKAGE_VERS}-wasm32-unknown-unknown
_RUST_TARGETS+=wasm32-unknown-unknown
# See WRKSRC/src/stage0 for the date and version values
-BOOTSTRAPS_DATE?= 2024-08-08
-RUST_BOOTSTRAP_VERSION?= 1.80.0
+BOOTSTRAPS_DATE?= 2024-09-05
+RUST_BOOTSTRAP_VERSION?= 1.81.0
CARGO_VENDOR_DIR?= ${WRKSRC}/vendor
diff --git a/lang/rust/distinfo b/lang/rust/distinfo
index c92b012c4d90..1a29d5172aa4 100644
--- a/lang/rust/distinfo
+++ b/lang/rust/distinfo
@@ -1,51 +1,51 @@
-TIMESTAMP = 1725563031
-SHA256 (rust/rustc-1.81.0-src.tar.xz) = e8fc54fea3df1a5081c00563cdc0fe2ac567104a557aa07116966c013f3d0195
-SIZE (rust/rustc-1.81.0-src.tar.xz) = 216764824
-SHA256 (rust/2024-08-08/rustc-1.80.0-aarch64-unknown-freebsd.tar.xz) = 321c18de125baaf82255ad7cea9a48b20d7c2050d5dd65401e4bc3c4ca6fb4c7
-SIZE (rust/2024-08-08/rustc-1.80.0-aarch64-unknown-freebsd.tar.xz) = 59522160
-SHA256 (rust/2024-08-08/rust-std-1.80.0-aarch64-unknown-freebsd.tar.xz) = ca9359056396c909dd2fb9cc38b0ff8821643ebf3429cccc71d38ceca052f993
-SIZE (rust/2024-08-08/rust-std-1.80.0-aarch64-unknown-freebsd.tar.xz) = 25757812
-SHA256 (rust/2024-08-08/cargo-1.80.0-aarch64-unknown-freebsd.tar.xz) = 3dc67773101dda81883421d0ba160240e8a3d71baa63972df67a48a7971ea721
-SIZE (rust/2024-08-08/cargo-1.80.0-aarch64-unknown-freebsd.tar.xz) = 9032180
-SHA256 (rust/2024-08-08/rustc-1.80.0-x86_64-unknown-freebsd.tar.xz) = 878fb757076782cb056f2b97d9daae582b51982f0e71886fa5e4e62935fdaec0
-SIZE (rust/2024-08-08/rustc-1.80.0-x86_64-unknown-freebsd.tar.xz) = 47968520
-SHA256 (rust/2024-08-08/rust-std-1.80.0-x86_64-unknown-freebsd.tar.xz) = b9296b743c3ae8aa3eb8888e0fc8bb0643a90100cf982867d9f6bb9c1b802c76
-SIZE (rust/2024-08-08/rust-std-1.80.0-x86_64-unknown-freebsd.tar.xz) = 26546140
-SHA256 (rust/2024-08-08/cargo-1.80.0-x86_64-unknown-freebsd.tar.xz) = 486f0b85afb4483c0abd1aa3e2c6a133f02c53a32d97fd1225e6d4b11927eb09
-SIZE (rust/2024-08-08/cargo-1.80.0-x86_64-unknown-freebsd.tar.xz) = 10100468
-SHA256 (rust/2024-08-08/rustc-1.80.0-armv7-unknown-freebsd.tar.xz) = 830502080628bb0b811da34291216283bdc77a3845ca8c3127d72d115a4b0c8c
-SIZE (rust/2024-08-08/rustc-1.80.0-armv7-unknown-freebsd.tar.xz) = 59701744
-SHA256 (rust/2024-08-08/rust-std-1.80.0-armv7-unknown-freebsd.tar.xz) = 34badba19462d3f54279a0deca9c4288419334ca0eda8c28fec929b8db478ef2
-SIZE (rust/2024-08-08/rust-std-1.80.0-armv7-unknown-freebsd.tar.xz) = 25224376
-SHA256 (rust/2024-08-08/cargo-1.80.0-armv7-unknown-freebsd.tar.xz) = fe82727748ef8ac694072be9ad59c10110f7621f2bcb92c7283bd22849c965aa
-SIZE (rust/2024-08-08/cargo-1.80.0-armv7-unknown-freebsd.tar.xz) = 9100116
-SHA256 (rust/2024-08-08/rustc-1.80.0-i686-unknown-freebsd.tar.xz) = 87bdc1d84ce27d953277330f95673b9c67f98be72982387f73c723081166f442
-SIZE (rust/2024-08-08/rustc-1.80.0-i686-unknown-freebsd.tar.xz) = 66337464
-SHA256 (rust/2024-08-08/rust-std-1.80.0-i686-unknown-freebsd.tar.xz) = 08f85ee367e6033f1b16f30435d082909cc020a2a66078cad4ab2a303d1c8f9e
-SIZE (rust/2024-08-08/rust-std-1.80.0-i686-unknown-freebsd.tar.xz) = 26239164
-SHA256 (rust/2024-08-08/cargo-1.80.0-i686-unknown-freebsd.tar.xz) = ae8499d4c964969c505efc1e585705a3ab450e9f552935dfddb8b718245f82f2
-SIZE (rust/2024-08-08/cargo-1.80.0-i686-unknown-freebsd.tar.xz) = 10487336
-SHA256 (rust/2024-08-08/rustc-1.80.0-powerpc-unknown-freebsd.tar.xz) = dda3b18497bceb17c626f7c976a0a68ac50b4b14268e951babe892e28bd780ea
-SIZE (rust/2024-08-08/rustc-1.80.0-powerpc-unknown-freebsd.tar.xz) = 63260996
-SHA256 (rust/2024-08-08/rust-std-1.80.0-powerpc-unknown-freebsd.tar.xz) = efb90b880f16f4c49c3060c4d9d5e3ee86e27b05e4771990bb6d2bc6249e5635
-SIZE (rust/2024-08-08/rust-std-1.80.0-powerpc-unknown-freebsd.tar.xz) = 24368468
-SHA256 (rust/2024-08-08/cargo-1.80.0-powerpc-unknown-freebsd.tar.xz) = 193640fa0bea88ea7f712fa509feacd6a69e8798aaa00f4e2be4afc731eb547f
-SIZE (rust/2024-08-08/cargo-1.80.0-powerpc-unknown-freebsd.tar.xz) = 9724748
-SHA256 (rust/2024-08-08/rustc-1.80.0-powerpc64-unknown-freebsd.tar.xz) = 8ad48d991a511951fa10e6c209bba482d0bc027b068bc9e749d7b32b8b575b0c
-SIZE (rust/2024-08-08/rustc-1.80.0-powerpc64-unknown-freebsd.tar.xz) = 61456824
-SHA256 (rust/2024-08-08/rust-std-1.80.0-powerpc64-unknown-freebsd.tar.xz) = 4157145584fd5b47a4e72e013907c97fea5206a1006582bdd116f62afe2b9614
-SIZE (rust/2024-08-08/rust-std-1.80.0-powerpc64-unknown-freebsd.tar.xz) = 24437572
-SHA256 (rust/2024-08-08/cargo-1.80.0-powerpc64-unknown-freebsd.tar.xz) = 2e15b5174474359afcab26a007ca0c5c9f85961846516c760d4d41c95dac1cbb
-SIZE (rust/2024-08-08/cargo-1.80.0-powerpc64-unknown-freebsd.tar.xz) = 9348928
-SHA256 (rust/2024-08-08/rustc-1.80.0-powerpc64le-unknown-freebsd.tar.xz) = 74d641b8df414557bb9cf9220c5e74e7a08311e57321bf040f1ba0686778a490
-SIZE (rust/2024-08-08/rustc-1.80.0-powerpc64le-unknown-freebsd.tar.xz) = 63158368
-SHA256 (rust/2024-08-08/rust-std-1.80.0-powerpc64le-unknown-freebsd.tar.xz) = f791fd3d02ef6f048cedec8b53d7347f101f75c6c10dccf4ac248d27af44af55
-SIZE (rust/2024-08-08/rust-std-1.80.0-powerpc64le-unknown-freebsd.tar.xz) = 24500892
-SHA256 (rust/2024-08-08/cargo-1.80.0-powerpc64le-unknown-freebsd.tar.xz) = c127afbdd810f8e004af8f7913865f7a4acb6adf25ec8aa498e0baf6d426194b
-SIZE (rust/2024-08-08/cargo-1.80.0-powerpc64le-unknown-freebsd.tar.xz) = 9610648
-SHA256 (rust/2024-08-08/rustc-1.80.0-riscv64gc-unknown-freebsd.tar.xz) = a36d350e11e3c5ed3ded4f7edbf553290bd5d2b4728cdd3cf606ba210a22eb9c
-SIZE (rust/2024-08-08/rustc-1.80.0-riscv64gc-unknown-freebsd.tar.xz) = 70271380
-SHA256 (rust/2024-08-08/rust-std-1.80.0-riscv64gc-unknown-freebsd.tar.xz) = 69a7a6592258a20fdd636f8a4df2bf3868e9cf06fdaab44265dfec6923960ca0
-SIZE (rust/2024-08-08/rust-std-1.80.0-riscv64gc-unknown-freebsd.tar.xz) = 24436056
-SHA256 (rust/2024-08-08/cargo-1.80.0-riscv64gc-unknown-freebsd.tar.xz) = 2e8fbfcd2cca3c90b6e64505d7bc7debcd60316266eb9b8e69a9909ffc73d029
-SIZE (rust/2024-08-08/cargo-1.80.0-riscv64gc-unknown-freebsd.tar.xz) = 11852028
+TIMESTAMP = 1729451663
+SHA256 (rust/rustc-1.82.0-src.tar.xz) = 1276a0bb8fa12288ba6fa96597d28b40e74c44257c051d3bc02c2b049bb38210
+SIZE (rust/rustc-1.82.0-src.tar.xz) = 219769328
+SHA256 (rust/2024-09-05/rustc-1.81.0-aarch64-unknown-freebsd.tar.xz) = 721beae8927fc82313d397ce8de7f11a298d3f966344943dae98605a4042758c
+SIZE (rust/2024-09-05/rustc-1.81.0-aarch64-unknown-freebsd.tar.xz) = 61258492
+SHA256 (rust/2024-09-05/rust-std-1.81.0-aarch64-unknown-freebsd.tar.xz) = 4d3a685ea57f94ab78d35da7bc8290a7a21eac70a6b23240d058ce9e5934af50
+SIZE (rust/2024-09-05/rust-std-1.81.0-aarch64-unknown-freebsd.tar.xz) = 26107012
+SHA256 (rust/2024-09-05/cargo-1.81.0-aarch64-unknown-freebsd.tar.xz) = a213e3470c9d4c4b867657be419c47db6f34047837b0fbcc4e18fa7add181dbf
+SIZE (rust/2024-09-05/cargo-1.81.0-aarch64-unknown-freebsd.tar.xz) = 9206832
+SHA256 (rust/2024-09-05/rustc-1.81.0-x86_64-unknown-freebsd.tar.xz) = a1875f80c608dc5e7cf431d782512b36753c7b8a8a7e68b2828542a1b15f4797
+SIZE (rust/2024-09-05/rustc-1.81.0-x86_64-unknown-freebsd.tar.xz) = 50002544
+SHA256 (rust/2024-09-05/rust-std-1.81.0-x86_64-unknown-freebsd.tar.xz) = dd34a1f363e4f36e8814520cd19cb41b8dea4991bf58effa28b68bed5309aa6f
+SIZE (rust/2024-09-05/rust-std-1.81.0-x86_64-unknown-freebsd.tar.xz) = 26944964
+SHA256 (rust/2024-09-05/cargo-1.81.0-x86_64-unknown-freebsd.tar.xz) = 0e2578c6d00860bcfcb7f7f55a85a162d98538c8c4ad856cfa0fe8cacf64a564
+SIZE (rust/2024-09-05/cargo-1.81.0-x86_64-unknown-freebsd.tar.xz) = 10321608
+SHA256 (rust/2024-09-05/rustc-1.81.0-armv7-unknown-freebsd.tar.xz) = e9eb04946449d13db88c5f24f431d54b607941ad15ac84d008a9e43aa68e9e9b
+SIZE (rust/2024-09-05/rustc-1.81.0-armv7-unknown-freebsd.tar.xz) = 61790324
+SHA256 (rust/2024-09-05/rust-std-1.81.0-armv7-unknown-freebsd.tar.xz) = 13207803e0670b0e3c3edeac90ec7d5925f00304e871e4712f137175f114fc97
+SIZE (rust/2024-09-05/rust-std-1.81.0-armv7-unknown-freebsd.tar.xz) = 25711244
+SHA256 (rust/2024-09-05/cargo-1.81.0-armv7-unknown-freebsd.tar.xz) = 0524f6d8454100be00f7fb7738773ecaa366d8cebcdf55caaf95cfd4c28c2d5c
+SIZE (rust/2024-09-05/cargo-1.81.0-armv7-unknown-freebsd.tar.xz) = 9338728
+SHA256 (rust/2024-09-05/rustc-1.81.0-i686-unknown-freebsd.tar.xz) = 5562e52a5d3bc7e6072838c0aa8e7e518fe2db74c0e3792204e1dc5306559b20
+SIZE (rust/2024-09-05/rustc-1.81.0-i686-unknown-freebsd.tar.xz) = 68846504
+SHA256 (rust/2024-09-05/rust-std-1.81.0-i686-unknown-freebsd.tar.xz) = 7f0422aa60f4df0fabc4a07708319b09f496833cc6c4111544710a683b0571b2
+SIZE (rust/2024-09-05/rust-std-1.81.0-i686-unknown-freebsd.tar.xz) = 26734268
+SHA256 (rust/2024-09-05/cargo-1.81.0-i686-unknown-freebsd.tar.xz) = 762a7d113f8c77ae8c50f07da840ccb917cb836b6fbd2427b09967e82189d50a
+SIZE (rust/2024-09-05/cargo-1.81.0-i686-unknown-freebsd.tar.xz) = 10756764
+SHA256 (rust/2024-09-05/rustc-1.81.0-powerpc-unknown-freebsd.tar.xz) = 801950501c837591740febb71f4ef70b461a665e6e899badd1dee7010b2b1757
+SIZE (rust/2024-09-05/rustc-1.81.0-powerpc-unknown-freebsd.tar.xz) = 65322316
+SHA256 (rust/2024-09-05/rust-std-1.81.0-powerpc-unknown-freebsd.tar.xz) = 3704d7d1c404698920373db1131a81eb3d5ec0c6b3dd4620c896144dddf3fe53
+SIZE (rust/2024-09-05/rust-std-1.81.0-powerpc-unknown-freebsd.tar.xz) = 24778908
+SHA256 (rust/2024-09-05/cargo-1.81.0-powerpc-unknown-freebsd.tar.xz) = 23f8b7c3195ba7626ac5c897707e36d5a5e701de79c950b3e58bd647e786faba
+SIZE (rust/2024-09-05/cargo-1.81.0-powerpc-unknown-freebsd.tar.xz) = 9923104
+SHA256 (rust/2024-09-05/rustc-1.81.0-powerpc64-unknown-freebsd.tar.xz) = 478d738a735eb0d1d6dddaee977c4ce0dc5168fcbd9dcadf67a6fc571cc8986a
+SIZE (rust/2024-09-05/rustc-1.81.0-powerpc64-unknown-freebsd.tar.xz) = 63419468
+SHA256 (rust/2024-09-05/rust-std-1.81.0-powerpc64-unknown-freebsd.tar.xz) = 451227b91ed09e7813ffba77b4e17f9b919b11ad373b0bc87a84eec64b7b9a01
+SIZE (rust/2024-09-05/rust-std-1.81.0-powerpc64-unknown-freebsd.tar.xz) = 24849284
+SHA256 (rust/2024-09-05/cargo-1.81.0-powerpc64-unknown-freebsd.tar.xz) = 92dae5616bb090c9ae99d0006fe7612d64773d145f574a091b90cc764287f4ac
+SIZE (rust/2024-09-05/cargo-1.81.0-powerpc64-unknown-freebsd.tar.xz) = 9533220
+SHA256 (rust/2024-09-05/rustc-1.81.0-powerpc64le-unknown-freebsd.tar.xz) = 5be810fe0ee72c734c8e00941f1c01a43506ef6063a3aa51e1e6dbb2fefb520b
+SIZE (rust/2024-09-05/rustc-1.81.0-powerpc64le-unknown-freebsd.tar.xz) = 65284584
+SHA256 (rust/2024-09-05/rust-std-1.81.0-powerpc64le-unknown-freebsd.tar.xz) = 247759fa4d96ec7c7ee88290700a4ef4c2799e8c8e66e7dafe81ca678d57e4f3
+SIZE (rust/2024-09-05/rust-std-1.81.0-powerpc64le-unknown-freebsd.tar.xz) = 24899100
+SHA256 (rust/2024-09-05/cargo-1.81.0-powerpc64le-unknown-freebsd.tar.xz) = 6e5141477f52caf26583e9d3263698ae427c89bec23b3af8b8e0d59f4e6b46ec
+SIZE (rust/2024-09-05/cargo-1.81.0-powerpc64le-unknown-freebsd.tar.xz) = 9825936
+SHA256 (rust/2024-09-05/rustc-1.81.0-riscv64gc-unknown-freebsd.tar.xz) = eec81507223597baa72979407ac0594506aed0d3c42299eb0b8fcc49f27d2251
+SIZE (rust/2024-09-05/rustc-1.81.0-riscv64gc-unknown-freebsd.tar.xz) = 72380112
+SHA256 (rust/2024-09-05/rust-std-1.81.0-riscv64gc-unknown-freebsd.tar.xz) = 160ebd04a8e49ab9b6b3cff4c0e913a433810557fd5ccdb8839ba4facfbdcc3a
+SIZE (rust/2024-09-05/rust-std-1.81.0-riscv64gc-unknown-freebsd.tar.xz) = 24745684
+SHA256 (rust/2024-09-05/cargo-1.81.0-riscv64gc-unknown-freebsd.tar.xz) = a42a1fe5cf41c0baf74e69e0d6f9baf3e592570b232bd2c0f752a56f3622a446
+SIZE (rust/2024-09-05/cargo-1.81.0-riscv64gc-unknown-freebsd.tar.xz) = 11996032
diff --git a/lang/rust/files/patch-compiler_rustc__target_src_abi_call_powerpc64.rs b/lang/rust/files/patch-compiler_rustc__target_src_abi_call_powerpc64.rs
index 2524e1872984..814822d5b7c7 100644
--- a/lang/rust/files/patch-compiler_rustc__target_src_abi_call_powerpc64.rs
+++ b/lang/rust/files/patch-compiler_rustc__target_src_abi_call_powerpc64.rs
@@ -1,6 +1,6 @@
--- compiler/rustc_target/src/abi/call/powerpc64.rs.orig 2020-03-09 22:11:17 UTC
+++ compiler/rustc_target/src/abi/call/powerpc64.rs
-@@ -123,7 +123,7 @@ where
+@@ -95,7 +95,7 @@ where
ELFv2
} else {
match cx.data_layout().endian {
diff --git a/lang/rust/files/patch-library_backtrace_src_backtrace_mod.rs b/lang/rust/files/patch-library_backtrace_src_backtrace_mod.rs
index b1ebad360bc8..f4f618ac6bf1 100644
--- a/lang/rust/files/patch-library_backtrace_src_backtrace_mod.rs
+++ b/lang/rust/files/patch-library_backtrace_src_backtrace_mod.rs
@@ -1,9 +1,9 @@
--- library/backtrace/src/backtrace/mod.rs.orig 2021-11-29 19:27:28 UTC
+++ library/backtrace/src/backtrace/mod.rs
-@@ -139,6 +139,7 @@ cfg_if::cfg_if! {
+@@ -176,6 +176,7 @@ cfg_if::cfg_if! {
+ unix,
not(target_os = "emscripten"),
not(all(target_os = "ios", target_arch = "arm")),
- not(all(target_os = "nto", target_env = "nto70")),
+ not(all(target_os = "freebsd", target_arch = "riscv64")),
),
all(
diff --git a/lang/rust/files/patch-vendor_cc.rs b/lang/rust/files/patch-vendor_cc.rs
index 2d28eb8be9b5..cd36c492c22d 100644
--- a/lang/rust/files/patch-vendor_cc.rs
+++ b/lang/rust/files/patch-vendor_cc.rs
@@ -37,32 +37,6 @@ https://reviews.llvm.org/D77776
path: path,
cc_wrapper_path: None,
---- vendor/cc-1.0.90/src/tool.rs.orig 2024-03-18 11:23:17 UTC
-+++ vendor/cc-1.0.90/src/tool.rs
-@@ -122,22 +122,7 @@ impl Tool {
- };
-
- // Try to detect family of the tool from its name, falling back to Gnu.
-- let family = if let Some(fname) = path.file_name().and_then(|p| p.to_str()) {
-- if fname.contains("clang-cl") {
-- ToolFamily::Msvc { clang_cl: true }
-- } else if fname.ends_with("cl") || fname == "cl.exe" {
-- ToolFamily::Msvc { clang_cl: false }
-- } else if fname.contains("clang") {
-- match clang_driver {
-- Some("cl") => ToolFamily::Msvc { clang_cl: true },
-- _ => ToolFamily::Clang,
-- }
-- } else {
-- detect_family(&path)
-- }
-- } else {
-- detect_family(&path)
-- };
-+ let family = ToolFamily::Gnu;
-
- Tool {
- path,
--- vendor/cc-1.0.97/src/tool.rs.orig 2024-05-09 18:20:47 UTC
+++ vendor/cc-1.0.97/src/tool.rs
@@ -151,9 +151,7 @@ impl Tool {
@@ -89,3 +63,57 @@ https://reviews.llvm.org/D77776
(false, false, true) => Ok(ToolFamily::Gnu),
(false, false, false) => {
cargo_output.print_warning(&"Compiler family detection failed since it does not define `__clang__`, `__GNUC__` or `_MSC_VER`, fallback to treating it as GNU");
+--- vendor/cc-1.0.105/src/tool.rs.orig 2024-05-09 18:20:47 UTC
++++ vendor/cc-1.0.105/src/tool.rs
+@@ -151,9 +151,7 @@ impl Tool {
+
+ match (clang, accepts_cl_style_flags, gcc) {
+ (clang_cl, true, _) => Ok(ToolFamily::Msvc { clang_cl }),
+- (true, false, _) => Ok(ToolFamily::Clang {
+- zig_cc: is_zig_cc(path, cargo_output),
+- }),
++ (true, false, _) => Ok(ToolFamily::Gnu),
+ (false, false, true) => Ok(ToolFamily::Gnu),
+ (false, false, false) => {
+ cargo_output.print_warning(&"Compiler family detection failed since it does not define `__clang__`, `__GNUC__` or `_MSC_VER`, fallback to treating it as GNU");
+--- vendor/cc-1.1.5/src/tool.rs.orig 2024-05-09 18:20:47 UTC
++++ vendor/cc-1.1.5/src/tool.rs
+@@ -151,9 +151,7 @@ impl Tool {
+
+ match (clang, accepts_cl_style_flags, gcc) {
+ (clang_cl, true, _) => Ok(ToolFamily::Msvc { clang_cl }),
+- (true, false, _) => Ok(ToolFamily::Clang {
+- zig_cc: is_zig_cc(path, cargo_output),
+- }),
++ (true, false, _) => Ok(ToolFamily::Gnu),
+ (false, false, true) => Ok(ToolFamily::Gnu),
+ (false, false, false) => {
+ cargo_output.print_warning(&"Compiler family detection failed since it does not define `__clang__`, `__GNUC__` or `_MSC_VER`, fallback to treating it as GNU");
+
+--- vendor/cc-1.1.6/src/tool.rs.orig 2024-05-09 18:20:47 UTC
++++ vendor/cc-1.1.6/src/tool.rs
+@@ -151,9 +151,7 @@ impl Tool {
+
+ match (clang, accepts_cl_style_flags, gcc) {
+ (clang_cl, true, _) => Ok(ToolFamily::Msvc { clang_cl }),
+- (true, false, _) => Ok(ToolFamily::Clang {
+- zig_cc: is_zig_cc(path, cargo_output),
+- }),
++ (true, false, _) => Ok(ToolFamily::Gnu),
+ (false, false, true) => Ok(ToolFamily::Gnu),
+ (false, false, false) => {
+ cargo_output.print_warning(&"Compiler family detection failed since it does not define `__clang__`, `__GNUC__` or `_MSC_VER`, fallback to treating it as GNU");
+
+--- vendor/cc-1.1.10/src/tool.rs.orig 2024-05-09 18:20:47 UTC
++++ vendor/cc-1.1.10/src/tool.rs
+@@ -151,9 +151,7 @@ impl Tool {
+
+ match (clang, accepts_cl_style_flags, gcc) {
+ (clang_cl, true, _) => Ok(ToolFamily::Msvc { clang_cl }),
+- (true, false, _) => Ok(ToolFamily::Clang {
+- zig_cc: is_zig_cc(path, cargo_output),
+- }),
++ (true, false, _) => Ok(ToolFamily::Gnu),
+ (false, false, true) => Ok(ToolFamily::Gnu),
+ (false, false, false) => {
+ cargo_output.print_warning(&"Compiler family detection failed since it does not define `__clang__`, `__GNUC__` or `_MSC_VER`, fallback to treating it as GNU");
diff --git a/lang/rust/files/patch-vendor_libc-0.2.155 b/lang/rust/files/patch-vendor_libc-0.2.155
new file mode 100644
index 000000000000..69c2a03f7062
--- /dev/null
+++ b/lang/rust/files/patch-vendor_libc-0.2.155
@@ -0,0 +1,745 @@
+https://github.com/rust-lang/rust/issues/130677
+
+From 9049542fabce9eea669d1fe3d4d973931c9d7d23 Mon Sep 17 00:00:00 2001
+From: Alan Somers <asomers@gmail.com>
+Date: Mon, 23 Sep 2024 10:22:32 -0600
+Subject: [PATCH] Fix the definition of ino_t on 32-bit FreeBSD 12+
+
+Commit 7437d0a6f1 erroneously defined it as "ulong" instead of u64.
+Nobody noticed the mistake, probably because it was only tested on
+64-bit architectures, where those are equivalent. But it's a problem
+now, after #3723 , which switched the standard library to a FreeBSD 12
+ABI.
+
+Issue https://github.com/rust-lang/rust/issues/130677
+---
+ src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs | 2 +-
+ src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs | 2 +-
+ src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs | 2 +-
+ src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs | 2 +-
+ src/unix/bsd/freebsdlike/freebsd/freebsd15/mod.rs | 2 +-
+ 5 files changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs b/src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs
+index de34069eabdf2..68a8364194607 100644
+--- vendor/libc-0.2.155/src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs
++++ vendor/libc-0.2.155/src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs
+@@ -4,7 +4,7 @@
+ pub type nlink_t = u16;
+ // Type of `dev_t` changed from `u32` to `u64` in FreeBSD 12:
+ pub type dev_t = u32;
+-// Type of `ino_t` changed from `unsigned int` to `unsigned long` in FreeBSD 12:
++// Type of `ino_t` changed from `__uint32_t` to `__uint64_t` in FreeBSD 12:
+ pub type ino_t = u32;
+
+ s! {
+diff --git a/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs b/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs
+index 10fcaa03a4ef6..197400ffb4e28 100644
+--- vendor/libc-0.2.155/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs
++++ vendor/libc-0.2.155/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs
+@@ -2,7 +2,7 @@
+
+ pub type nlink_t = u64;
+ pub type dev_t = u64;
+-pub type ino_t = ::c_ulong;
++pub type ino_t = u64;
+ pub type shmatt_t = ::c_uint;
+
+ s! {
+diff --git a/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs b/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs
+index ec6bce2a03091..d3a77d03c48d0 100644
+--- vendor/libc-0.2.155/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs
++++ vendor/libc-0.2.155/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs
+@@ -2,7 +2,7 @@
+
+ pub type nlink_t = u64;
+ pub type dev_t = u64;
+-pub type ino_t = ::c_ulong;
++pub type ino_t = u64;
+ pub type shmatt_t = ::c_uint;
+ pub type kpaddr_t = u64;
+ pub type kssize_t = i64;
+diff --git a/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs b/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs
+index 160a4baae481b..9d65317d29cb4 100644
+--- vendor/libc-0.2.155/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs
++++ vendor/libc-0.2.155/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs
+@@ -2,7 +2,7 @@
+
+ pub type nlink_t = u64;
+ pub type dev_t = u64;
+-pub type ino_t = ::c_ulong;
++pub type ino_t = u64;
+ pub type shmatt_t = ::c_uint;
+ pub type kpaddr_t = u64;
+ pub type kssize_t = i64;
+diff --git a/src/unix/bsd/freebsdlike/freebsd/freebsd15/mod.rs b/src/unix/bsd/freebsdlike/freebsd/freebsd15/mod.rs
+index d73215a68ec33..f76208400f324 100644
+--- vendor/libc-0.2.155/src/unix/bsd/freebsdlike/freebsd/freebsd15/mod.rs
++++ vendor/libc-0.2.155/src/unix/bsd/freebsdlike/freebsd/freebsd15/mod.rs
+@@ -2,7 +2,7 @@
+
+ pub type nlink_t = u64;
+ pub type dev_t = u64;
+-pub type ino_t = ::c_ulong;
++pub type ino_t = u64;
+ pub type shmatt_t = ::c_uint;
+ pub type kpaddr_t = u64;
+ pub type kssize_t = i64;
+
+
+From 8aca9c0126f3aa5a7dce1ad7fc016b4a0d6af70a Mon Sep 17 00:00:00 2001
+From: Alan Somers <asomers@gmail.com>
+Date: Mon, 23 Sep 2024 10:44:13 -0600
+Subject: [PATCH] Fix the definition of "struct stat" on 32-bit FreeBSD 12+
+
+The original definitions were never correct. But nobody noticed because
+we don't do CI on 32-bit FreeBSD. The problem is apparent now due to
+ #3723 , which caused the nightly toolchain to switch to a FreeBSD 12
+ABI.
+
+Fixes https://github.com/rust-lang/rust/issues/130677
+---
+ .../{freebsd12/b64.rs => freebsd11/b32.rs} | 13 +++---
+ .../bsd/freebsdlike/freebsd/freebsd11/mod.rs | 7 +--
+ .../bsd/freebsdlike/freebsd/freebsd12/mod.rs | 43 +++++++++++++++----
+ .../bsd/freebsdlike/freebsd/freebsd13/b64.rs | 34 ---------------
+ .../bsd/freebsdlike/freebsd/freebsd13/mod.rs | 43 +++++++++++++++----
+ .../bsd/freebsdlike/freebsd/freebsd14/b64.rs | 34 ---------------
+ .../bsd/freebsdlike/freebsd/freebsd14/mod.rs | 43 +++++++++++++++----
+ .../bsd/freebsdlike/freebsd/freebsd15/b64.rs | 34 ---------------
+ .../bsd/freebsdlike/freebsd/freebsd15/mod.rs | 43 +++++++++++++++----
+ src/unix/bsd/freebsdlike/freebsd/x86.rs | 25 -----------
+ 10 files changed, 146 insertions(+), 173 deletions(-)
+ rename src/unix/bsd/freebsdlike/freebsd/{freebsd12/b64.rs => freebsd11/b32.rs} (89%)
+ delete mode 100644 src/unix/bsd/freebsdlike/freebsd/freebsd13/b64.rs
+ delete mode 100644 src/unix/bsd/freebsdlike/freebsd/freebsd14/b64.rs
+ delete mode 100644 src/unix/bsd/freebsdlike/freebsd/freebsd15/b64.rs
+
+diff --git a/src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs b/src/unix/bsd/freebsdlike/freebsd/freebsd11/b32.rs
+similarity index 89%
+rename from src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs
+rename to src/unix/bsd/freebsdlike/freebsd/freebsd11/b32.rs
+
+--- vendor/libc-0.2.155/src/unix/bsd/freebsdlike/freebsd/freebsd11/b32.rs.orig 2024-10-24 17:21:07.154172000 +0200
++++ vendor/libc-0.2.155/src/unix/bsd/freebsdlike/freebsd/freebsd11/b32.rs 2024-10-24 17:21:02.029962000 +0200
+@@ -0,0 +1,34 @@
++#[repr(C)]
++#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, Hash, PartialEq))]
++pub struct stat {
++ pub st_dev: ::dev_t,
++ pub st_ino: ::ino_t,
++ pub st_nlink: ::nlink_t,
++ pub st_mode: ::mode_t,
++ st_padding0: i16,
++ pub st_uid: ::uid_t,
++ pub st_gid: ::gid_t,
++ st_padding1: i32,
++ pub st_rdev: ::dev_t,
++ pub st_atime: ::time_t,
++ pub st_atime_nsec: ::c_long,
++ pub st_mtime: ::time_t,
++ pub st_mtime_nsec: ::c_long,
++ pub st_ctime: ::time_t,
++ pub st_ctime_nsec: ::c_long,
++ pub st_birthtime: ::time_t,
++ pub st_birthtime_nsec: ::c_long,
++ pub st_size: ::off_t,
++ pub st_blocks: ::blkcnt_t,
++ pub st_blksize: ::blksize_t,
++ pub st_flags: ::fflags_t,
++ pub st_gen: u64,
++ pub st_spare: [u64; 10],
++}
++
++impl ::Copy for ::stat {}
++impl ::Clone for ::stat {
++ fn clone(&self) -> ::stat {
++ *self
++ }
++}
+
+
+index 80c6fa1684530..5c1156581fd61 100644
+--- vendor/libc-0.2.155/src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs
++++ vendor/libc-0.2.155/src/unix/bsd/freebsdlike/freebsd/freebsd11/b32.rs
+@@ -3,12 +3,10 @@
+ pub struct stat {
+ pub st_dev: ::dev_t,
+ pub st_ino: ::ino_t,
+- pub st_nlink: ::nlink_t,
+ pub st_mode: ::mode_t,
+- st_padding0: i16,
++ pub st_nlink: ::nlink_t,
+ pub st_uid: ::uid_t,
+ pub st_gid: ::gid_t,
+- st_padding1: i32,
+ pub st_rdev: ::dev_t,
+ pub st_atime: ::time_t,
+ pub st_atime_nsec: ::c_long,
+@@ -16,14 +14,15 @@ pub struct stat {
+ pub st_mtime_nsec: ::c_long,
+ pub st_ctime: ::time_t,
+ pub st_ctime_nsec: ::c_long,
+- pub st_birthtime: ::time_t,
+- pub st_birthtime_nsec: ::c_long,
+ pub st_size: ::off_t,
+ pub st_blocks: ::blkcnt_t,
+ pub st_blksize: ::blksize_t,
+ pub st_flags: ::fflags_t,
+- pub st_gen: u64,
+- pub st_spare: [u64; 10],
++ pub st_gen: u32,
++ pub st_lspare: i32,
++ pub st_birthtime: ::time_t,
++ pub st_birthtime_nsec: ::c_long,
++ __unused: [u8; 8],
+ }
+
+ impl ::Copy for ::stat {}
+diff --git a/src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs b/src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs
+index 68a8364194607..e416ebf745841 100644
+--- vendor/libc-0.2.155/src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs
++++ vendor/libc-0.2.155/src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs
+@@ -479,10 +479,11 @@ extern "C" {
+ }
+
+ cfg_if! {
+- if #[cfg(any(target_arch = "x86_64",
+- target_arch = "aarch64",
+- target_arch = "riscv64"))] {
++ if #[cfg(target_pointer_width = "64")] {
+ mod b64;
+ pub use self::b64::*;
++ } else {
++ mod b32;
++ pub use self::b32::*;
+ }
+ }
+diff --git a/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs b/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs
+index 197400ffb4e28..c4431a6458e8f 100644
+--- vendor/libc-0.2.155/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs
++++ vendor/libc-0.2.155/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs
+@@ -218,6 +218,40 @@ s! {
+ /// kthread flag.
+ pub ki_tdflags: ::c_long,
+ }
++
++ pub struct stat {
++ pub st_dev: ::dev_t,
++ pub st_ino: ::ino_t,
++ pub st_nlink: ::nlink_t,
++ pub st_mode: ::mode_t,
++ st_padding0: i16,
++ pub st_uid: ::uid_t,
++ pub st_gid: ::gid_t,
++ st_padding1: i32,
++ pub st_rdev: ::dev_t,
++ #[cfg(target_arch = "x86")]
++ st_atim_ext: i32,
++ pub st_atime: ::time_t,
++ pub st_atime_nsec: ::c_long,
++ #[cfg(target_arch = "x86")]
++ st_mtim_ext: i32,
++ pub st_mtime: ::time_t,
++ pub st_mtime_nsec: ::c_long,
++ #[cfg(target_arch = "x86")]
++ st_ctim_ext: i32,
++ pub st_ctime: ::time_t,
++ pub st_ctime_nsec: ::c_long,
++ #[cfg(target_arch = "x86")]
++ st_btim_ext: i32,
++ pub st_birthtime: ::time_t,
++ pub st_birthtime_nsec: ::c_long,
++ pub st_size: ::off_t,
++ pub st_blocks: ::blkcnt_t,
++ pub st_blksize: ::blksize_t,
++ pub st_flags: ::fflags_t,
++ pub st_gen: u64,
++ pub st_spare: [u64; 10],
++ }
+ }
+
+ s_no_extra_traits! {
+@@ -488,15 +522,6 @@ extern "C" {
+ pub fn basename(path: *mut ::c_char) -> *mut ::c_char;
+ }
+
+-cfg_if! {
+- if #[cfg(any(target_arch = "x86_64",
+- target_arch = "aarch64",
+- target_arch = "riscv64"))] {
+- mod b64;
+- pub use self::b64::*;
+- }
+-}
+-
+ cfg_if! {
+ if #[cfg(target_arch = "x86_64")] {
+ mod x86_64;
+diff --git a/src/unix/bsd/freebsdlike/freebsd/freebsd13/b64.rs b/src/unix/bsd/freebsdlike/freebsd/freebsd13/b64.rs
+deleted file mode 100644
+index 80c6fa1684530..0000000000000
+--- vendor/libc-0.2.155/src/unix/bsd/freebsdlike/freebsd/freebsd13/b64.rs
++++ /dev/null
+@@ -1,34 +0,0 @@
+-#[repr(C)]
+-#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, Hash, PartialEq))]
+-pub struct stat {
+- pub st_dev: ::dev_t,
+- pub st_ino: ::ino_t,
+- pub st_nlink: ::nlink_t,
+- pub st_mode: ::mode_t,
+- st_padding0: i16,
+- pub st_uid: ::uid_t,
+- pub st_gid: ::gid_t,
+- st_padding1: i32,
+- pub st_rdev: ::dev_t,
+- pub st_atime: ::time_t,
+- pub st_atime_nsec: ::c_long,
+- pub st_mtime: ::time_t,
+- pub st_mtime_nsec: ::c_long,
+- pub st_ctime: ::time_t,
+- pub st_ctime_nsec: ::c_long,
+- pub st_birthtime: ::time_t,
+- pub st_birthtime_nsec: ::c_long,
+- pub st_size: ::off_t,
+- pub st_blocks: ::blkcnt_t,
+- pub st_blksize: ::blksize_t,
+- pub st_flags: ::fflags_t,
+- pub st_gen: u64,
+- pub st_spare: [u64; 10],
+-}
+-
+-impl ::Copy for ::stat {}
+-impl ::Clone for ::stat {
+- fn clone(&self) -> ::stat {
+- *self
+- }
+-}
+diff --git a/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs b/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs
+index d3a77d03c48d0..118404e8b089b 100644
+--- vendor/libc-0.2.155/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs
++++ vendor/libc-0.2.155/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs
+@@ -228,6 +228,40 @@ s! {
+ /// kthread flag.
+ pub ki_tdflags: ::c_long,
+ }
++
++ pub struct stat {
++ pub st_dev: ::dev_t,
++ pub st_ino: ::ino_t,
++ pub st_nlink: ::nlink_t,
++ pub st_mode: ::mode_t,
++ st_padding0: i16,
++ pub st_uid: ::uid_t,
++ pub st_gid: ::gid_t,
++ st_padding1: i32,
++ pub st_rdev: ::dev_t,
++ #[cfg(target_arch = "x86")]
++ st_atim_ext: i32,
++ pub st_atime: ::time_t,
++ pub st_atime_nsec: ::c_long,
++ #[cfg(target_arch = "x86")]
++ st_mtim_ext: i32,
++ pub st_mtime: ::time_t,
++ pub st_mtime_nsec: ::c_long,
++ #[cfg(target_arch = "x86")]
++ st_ctim_ext: i32,
++ pub st_ctime: ::time_t,
++ pub st_ctime_nsec: ::c_long,
++ #[cfg(target_arch = "x86")]
++ st_btim_ext: i32,
++ pub st_birthtime: ::time_t,
++ pub st_birthtime_nsec: ::c_long,
++ pub st_size: ::off_t,
++ pub st_blocks: ::blkcnt_t,
++ pub st_blksize: ::blksize_t,
++ pub st_flags: ::fflags_t,
++ pub st_gen: u64,
++ pub st_spare: [u64; 10],
++ }
+ }
+
+ s_no_extra_traits! {
+@@ -529,15 +563,6 @@ extern "C" {
+ pub fn kvm_kerndisp(kd: *mut ::kvm_t) -> ::kssize_t;
+ }
+
+-cfg_if! {
+- if #[cfg(any(target_arch = "x86_64",
+- target_arch = "aarch64",
+- target_arch = "riscv64"))] {
+- mod b64;
+- pub use self::b64::*;
+- }
+-}
+-
+ cfg_if! {
+ if #[cfg(target_arch = "x86_64")] {
+ mod x86_64;
+diff --git a/src/unix/bsd/freebsdlike/freebsd/freebsd14/b64.rs b/src/unix/bsd/freebsdlike/freebsd/freebsd14/b64.rs
+deleted file mode 100644
+index 80c6fa1684530..0000000000000
+--- vendor/libc-0.2.155/src/unix/bsd/freebsdlike/freebsd/freebsd14/b64.rs
++++ /dev/null
+@@ -1,34 +0,0 @@
+-#[repr(C)]
+-#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, Hash, PartialEq))]
+-pub struct stat {
+- pub st_dev: ::dev_t,
+- pub st_ino: ::ino_t,
+- pub st_nlink: ::nlink_t,
+- pub st_mode: ::mode_t,
+- st_padding0: i16,
+- pub st_uid: ::uid_t,
+- pub st_gid: ::gid_t,
+- st_padding1: i32,
+- pub st_rdev: ::dev_t,
+- pub st_atime: ::time_t,
+- pub st_atime_nsec: ::c_long,
+- pub st_mtime: ::time_t,
+- pub st_mtime_nsec: ::c_long,
+- pub st_ctime: ::time_t,
+- pub st_ctime_nsec: ::c_long,
+- pub st_birthtime: ::time_t,
+- pub st_birthtime_nsec: ::c_long,
+- pub st_size: ::off_t,
+- pub st_blocks: ::blkcnt_t,
+- pub st_blksize: ::blksize_t,
+- pub st_flags: ::fflags_t,
+- pub st_gen: u64,
+- pub st_spare: [u64; 10],
+-}
+-
+-impl ::Copy for ::stat {}
+-impl ::Clone for ::stat {
+- fn clone(&self) -> ::stat {
+- *self
+- }
+-}
+diff --git a/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs b/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs
+index 9d65317d29cb4..e624dd7201b0a 100644
+--- vendor/libc-0.2.155/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs
++++ vendor/libc-0.2.155/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs
+@@ -228,6 +228,40 @@ s! {
+ /// kthread flag.
+ pub ki_tdflags: ::c_long,
+ }
++
++ pub struct stat {
++ pub st_dev: ::dev_t,
++ pub st_ino: ::ino_t,
++ pub st_nlink: ::nlink_t,
++ pub st_mode: ::mode_t,
++ st_padding0: i16,
++ pub st_uid: ::uid_t,
++ pub st_gid: ::gid_t,
++ st_padding1: i32,
++ pub st_rdev: ::dev_t,
++ #[cfg(target_arch = "x86")]
++ st_atim_ext: i32,
++ pub st_atime: ::time_t,
++ pub st_atime_nsec: ::c_long,
++ #[cfg(target_arch = "x86")]
++ st_mtim_ext: i32,
++ pub st_mtime: ::time_t,
++ pub st_mtime_nsec: ::c_long,
++ #[cfg(target_arch = "x86")]
++ st_ctim_ext: i32,
++ pub st_ctime: ::time_t,
++ pub st_ctime_nsec: ::c_long,
++ #[cfg(target_arch = "x86")]
++ st_btim_ext: i32,
++ pub st_birthtime: ::time_t,
++ pub st_birthtime_nsec: ::c_long,
++ pub st_size: ::off_t,
++ pub st_blocks: ::blkcnt_t,
++ pub st_blksize: ::blksize_t,
++ pub st_flags: ::fflags_t,
++ pub st_gen: u64,
++ pub st_spare: [u64; 10],
++ }
+ }
+
+ s_no_extra_traits! {
+@@ -529,15 +563,6 @@ extern "C" {
+ pub fn kvm_kerndisp(kd: *mut ::kvm_t) -> ::kssize_t;
+ }
+
+-cfg_if! {
+- if #[cfg(any(target_arch = "x86_64",
+- target_arch = "aarch64",
+- target_arch = "riscv64"))] {
+- mod b64;
+- pub use self::b64::*;
+- }
+-}
+-
+ cfg_if! {
+ if #[cfg(target_arch = "x86_64")] {
+ mod x86_64;
+diff --git a/src/unix/bsd/freebsdlike/freebsd/freebsd15/b64.rs b/src/unix/bsd/freebsdlike/freebsd/freebsd15/b64.rs
+deleted file mode 100644
+index 80c6fa1684530..0000000000000
+--- vendor/libc-0.2.155/src/unix/bsd/freebsdlike/freebsd/freebsd15/b64.rs
++++ /dev/null
+@@ -1,34 +0,0 @@
+-#[repr(C)]
+-#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, Hash, PartialEq))]
+-pub struct stat {
+- pub st_dev: ::dev_t,
+- pub st_ino: ::ino_t,
+- pub st_nlink: ::nlink_t,
+- pub st_mode: ::mode_t,
+- st_padding0: i16,
+- pub st_uid: ::uid_t,
+- pub st_gid: ::gid_t,
+- st_padding1: i32,
+- pub st_rdev: ::dev_t,
+- pub st_atime: ::time_t,
+- pub st_atime_nsec: ::c_long,
+- pub st_mtime: ::time_t,
+- pub st_mtime_nsec: ::c_long,
+- pub st_ctime: ::time_t,
+- pub st_ctime_nsec: ::c_long,
+- pub st_birthtime: ::time_t,
+- pub st_birthtime_nsec: ::c_long,
+- pub st_size: ::off_t,
+- pub st_blocks: ::blkcnt_t,
+- pub st_blksize: ::blksize_t,
+- pub st_flags: ::fflags_t,
+- pub st_gen: u64,
+- pub st_spare: [u64; 10],
+-}
+-
+-impl ::Copy for ::stat {}
+-impl ::Clone for ::stat {
+- fn clone(&self) -> ::stat {
+- *self
+- }
+-}
+diff --git a/src/unix/bsd/freebsdlike/freebsd/freebsd15/mod.rs b/src/unix/bsd/freebsdlike/freebsd/freebsd15/mod.rs
+index f76208400f324..a299af7d5d53e 100644
+--- vendor/libc-0.2.155/src/unix/bsd/freebsdlike/freebsd/freebsd15/mod.rs
++++ vendor/libc-0.2.155/src/unix/bsd/freebsdlike/freebsd/freebsd15/mod.rs
+@@ -228,6 +228,40 @@ s! {
+ /// kthread flag.
+ pub ki_tdflags: ::c_long,
+ }
++
++ pub struct stat {
++ pub st_dev: ::dev_t,
++ pub st_ino: ::ino_t,
++ pub st_nlink: ::nlink_t,
++ pub st_mode: ::mode_t,
++ st_padding0: i16,
++ pub st_uid: ::uid_t,
++ pub st_gid: ::gid_t,
++ st_padding1: i32,
++ pub st_rdev: ::dev_t,
++ #[cfg(target_arch = "x86")]
++ st_atim_ext: i32,
++ pub st_atime: ::time_t,
++ pub st_atime_nsec: ::c_long,
++ #[cfg(target_arch = "x86")]
++ st_mtim_ext: i32,
++ pub st_mtime: ::time_t,
++ pub st_mtime_nsec: ::c_long,
++ #[cfg(target_arch = "x86")]
++ st_ctim_ext: i32,
++ pub st_ctime: ::time_t,
++ pub st_ctime_nsec: ::c_long,
++ #[cfg(target_arch = "x86")]
++ st_btim_ext: i32,
++ pub st_birthtime: ::time_t,
++ pub st_birthtime_nsec: ::c_long,
++ pub st_size: ::off_t,
++ pub st_blocks: ::blkcnt_t,
++ pub st_blksize: ::blksize_t,
++ pub st_flags: ::fflags_t,
++ pub st_gen: u64,
++ pub st_spare: [u64; 10],
++ }
+ }
+
+ s_no_extra_traits! {
+@@ -529,15 +563,6 @@ extern "C" {
+ pub fn kvm_kerndisp(kd: *mut ::kvm_t) -> ::kssize_t;
+ }
+
+-cfg_if! {
+- if #[cfg(any(target_arch = "x86_64",
+- target_arch = "aarch64",
+- target_arch = "riscv64"))] {
+- mod b64;
+- pub use self::b64::*;
+- }
+-}
+-
+ cfg_if! {
+ if #[cfg(target_arch = "x86_64")] {
+ mod x86_64;
+diff --git a/src/unix/bsd/freebsdlike/freebsd/x86.rs b/src/unix/bsd/freebsdlike/freebsd/x86.rs
+index c3c576ed66681..31a660e7d0a22 100644
+--- vendor/libc-0.2.155/src/unix/bsd/freebsdlike/freebsd/x86.rs
++++ vendor/libc-0.2.155/src/unix/bsd/freebsdlike/freebsd/x86.rs
+@@ -42,31 +42,6 @@ s_no_extra_traits! {
+ }
+
+ s! {
+- pub struct stat {
+- pub st_dev: ::dev_t,
+- pub st_ino: ::ino_t,
+- pub st_mode: ::mode_t,
+- pub st_nlink: ::nlink_t,
+- pub st_uid: ::uid_t,
+- pub st_gid: ::gid_t,
+- pub st_rdev: ::dev_t,
+- pub st_atime: ::time_t,
+- pub st_atime_nsec: ::c_long,
+- pub st_mtime: ::time_t,
+- pub st_mtime_nsec: ::c_long,
+- pub st_ctime: ::time_t,
+- pub st_ctime_nsec: ::c_long,
+- pub st_size: ::off_t,
+- pub st_blocks: ::blkcnt_t,
+- pub st_blksize: ::blksize_t,
+- pub st_flags: ::fflags_t,
+- pub st_gen: u32,
+- pub st_lspare: i32,
+- pub st_birthtime: ::time_t,
+- pub st_birthtime_nsec: ::c_long,
+- __unused: [u8; 8],
+- }
+-
+ pub struct ucontext_t {
+ pub uc_sigmask: ::sigset_t,
+ pub uc_mcontext: ::mcontext_t,
+
+
+From f381e010b2439579c9f548ef86fb06409c2c55d2 Mon Sep 17 00:00:00 2001
+From: Alan Somers <asomers@gmail.com>
+Date: Mon, 23 Sep 2024 16:03:48 -0600
+Subject: [PATCH] fixup: fix build on powerpc, powerpc64, and arm
+
+---
+ src/unix/bsd/freebsdlike/freebsd/arm.rs | 30 -------------------
+ src/unix/bsd/freebsdlike/freebsd/powerpc.rs | 26 ----------------
+ src/unix/bsd/freebsdlike/freebsd/powerpc64.rs | 26 ----------------
+ 3 files changed, 82 deletions(-)
+
+diff --git a/src/unix/bsd/freebsdlike/freebsd/arm.rs b/src/unix/bsd/freebsdlike/freebsd/arm.rs
+index 300b3dd45ca9d..8ff500c65981c 100644
+--- vendor/libc-0.2.155/src/unix/bsd/freebsdlike/freebsd/arm.rs
++++ vendor/libc-0.2.155/src/unix/bsd/freebsdlike/freebsd/arm.rs
+@@ -6,36 +6,6 @@ pub type time_t = i64;
+ pub type suseconds_t = i32;
+ pub type register_t = i32;
+
+-s! {
+- pub struct stat {
+- pub st_dev: ::dev_t,
+- pub st_ino: ::ino_t,
+- pub st_mode: ::mode_t,
+- pub st_nlink: ::nlink_t,
+- pub st_uid: ::uid_t,
+- pub st_gid: ::gid_t,
+- pub st_rdev: ::dev_t,
+- pub st_atime: ::time_t,
+- pub st_atime_nsec: ::c_long,
+- pub st_atime_pad: ::c_long,
+- pub st_mtime: ::time_t,
+- pub st_mtime_nsec: ::c_long,
+- pub st_mtime_pad: ::c_long,
+- pub st_ctime: ::time_t,
+- pub st_ctime_nsec: ::c_long,
+- pub st_ctime_pad: ::c_long,
+- pub st_size: ::off_t,
+- pub st_blocks: ::blkcnt_t,
+- pub st_blksize: ::blksize_t,
+- pub st_flags: ::fflags_t,
+- pub st_gen: u32,
+- pub st_lspare: i32,
+- pub st_birthtime: ::time_t,
+- pub st_birthtime_nsec: ::c_long,
+- pub st_birthtime_pad: ::c_long,
+- }
+-}
+-
+ // should be pub(crate), but that requires Rust 1.18.0
+ cfg_if! {
+ if #[cfg(libc_const_size_of)] {
+diff --git a/src/unix/bsd/freebsdlike/freebsd/powerpc.rs b/src/unix/bsd/freebsdlike/freebsd/powerpc.rs
+index a0120c337e0ad..f84062ba34b93 100644
+--- vendor/libc-0.2.155/src/unix/bsd/freebsdlike/freebsd/powerpc.rs
++++ vendor/libc-0.2.155/src/unix/bsd/freebsdlike/freebsd/powerpc.rs
+@@ -6,32 +6,6 @@ pub type time_t = i64;
+ pub type suseconds_t = i32;
+ pub type register_t = i32;
+
+-s! {
+- pub struct stat {
+- pub st_dev: ::dev_t,
+- pub st_ino: ::ino_t,
+- pub st_mode: ::mode_t,
+- pub st_nlink: ::nlink_t,
+- pub st_uid: ::uid_t,
+- pub st_gid: ::gid_t,
+- pub st_rdev: ::dev_t,
+- pub st_atime: ::time_t,
+- pub st_atime_nsec: ::c_long,
+- pub st_mtime: ::time_t,
+- pub st_mtime_nsec: ::c_long,
+- pub st_ctime: ::time_t,
+- pub st_ctime_nsec: ::c_long,
+- pub st_size: ::off_t,
+- pub st_blocks: ::blkcnt_t,
+- pub st_blksize: ::blksize_t,
+- pub st_flags: ::fflags_t,
+- pub st_gen: u32,
+- pub st_lspare: i32,
+- pub st_birthtime: ::time_t,
+- pub st_birthtime_nsec: ::c_long,
+- }
+-}
+-
+ // should be pub(crate), but that requires Rust 1.18.0
+ cfg_if! {
+ if #[cfg(libc_const_size_of)] {
+diff --git a/src/unix/bsd/freebsdlike/freebsd/powerpc64.rs b/src/unix/bsd/freebsdlike/freebsd/powerpc64.rs
+index 7f5b9752264e3..69cf4c5fc88c7 100644
+--- vendor/libc-0.2.155/src/unix/bsd/freebsdlike/freebsd/powerpc64.rs
++++ vendor/libc-0.2.155/src/unix/bsd/freebsdlike/freebsd/powerpc64.rs
+@@ -6,32 +6,6 @@ pub type time_t = i64;
+ pub type suseconds_t = i64;
+ pub type register_t = i64;
+
+-s! {
+- pub struct stat {
+- pub st_dev: ::dev_t,
+- pub st_ino: ::ino_t,
+- pub st_mode: ::mode_t,
+- pub st_nlink: ::nlink_t,
+- pub st_uid: ::uid_t,
+- pub st_gid: ::gid_t,
+- pub st_rdev: ::dev_t,
+- pub st_atime: ::time_t,
+- pub st_atime_nsec: ::c_long,
+- pub st_mtime: ::time_t,
+- pub st_mtime_nsec: ::c_long,
+- pub st_ctime: ::time_t,
+- pub st_ctime_nsec: ::c_long,
+- pub st_size: ::off_t,
+- pub st_blocks: ::blkcnt_t,
+- pub st_blksize: ::blksize_t,
+- pub st_flags: ::fflags_t,
+- pub st_gen: u32,
+- pub st_lspare: i32,
+- pub st_birthtime: ::time_t,
+- pub st_birthtime_nsec: ::c_long,
+- }
+-}
+-
+ // should be pub(crate), but that requires Rust 1.18.0
+ cfg_if! {
+ if #[cfg(libc_const_size_of)] {
diff --git a/lang/rust/files/patch-vendor_libc-0.2.157 b/lang/rust/files/patch-vendor_libc-0.2.157
new file mode 100644
index 000000000000..7a3a31bffed5
--- /dev/null
+++ b/lang/rust/files/patch-vendor_libc-0.2.157
@@ -0,0 +1,745 @@
+https://github.com/rust-lang/rust/issues/130677
+
+From 9049542fabce9eea669d1fe3d4d973931c9d7d23 Mon Sep 17 00:00:00 2001
+From: Alan Somers <asomers@gmail.com>
+Date: Mon, 23 Sep 2024 10:22:32 -0600
+Subject: [PATCH] Fix the definition of ino_t on 32-bit FreeBSD 12+
+
+Commit 7437d0a6f1 erroneously defined it as "ulong" instead of u64.
+Nobody noticed the mistake, probably because it was only tested on
+64-bit architectures, where those are equivalent. But it's a problem
+now, after #3723 , which switched the standard library to a FreeBSD 12
+ABI.
+
+Issue https://github.com/rust-lang/rust/issues/130677
+---
+ src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs | 2 +-
+ src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs | 2 +-
+ src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs | 2 +-
+ src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs | 2 +-
+ src/unix/bsd/freebsdlike/freebsd/freebsd15/mod.rs | 2 +-
+ 5 files changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs b/src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs
+index de34069eabdf2..68a8364194607 100644
+--- vendor/libc-0.2.157/src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs
++++ vendor/libc-0.2.157/src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs
+@@ -4,7 +4,7 @@
+ pub type nlink_t = u16;
+ // Type of `dev_t` changed from `u32` to `u64` in FreeBSD 12:
+ pub type dev_t = u32;
+-// Type of `ino_t` changed from `unsigned int` to `unsigned long` in FreeBSD 12:
++// Type of `ino_t` changed from `__uint32_t` to `__uint64_t` in FreeBSD 12:
+ pub type ino_t = u32;
+
+ s! {
+diff --git a/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs b/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs
+index 10fcaa03a4ef6..197400ffb4e28 100644
+--- vendor/libc-0.2.157/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs
++++ vendor/libc-0.2.157/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs
+@@ -2,7 +2,7 @@
+
+ pub type nlink_t = u64;
+ pub type dev_t = u64;
+-pub type ino_t = ::c_ulong;
++pub type ino_t = u64;
+ pub type shmatt_t = ::c_uint;
+
+ s! {
+diff --git a/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs b/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs
+index ec6bce2a03091..d3a77d03c48d0 100644
+--- vendor/libc-0.2.157/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs
++++ vendor/libc-0.2.157/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs
+@@ -2,7 +2,7 @@
+
+ pub type nlink_t = u64;
+ pub type dev_t = u64;
+-pub type ino_t = ::c_ulong;
++pub type ino_t = u64;
+ pub type shmatt_t = ::c_uint;
+ pub type kpaddr_t = u64;
+ pub type kssize_t = i64;
+diff --git a/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs b/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs
+index 160a4baae481b..9d65317d29cb4 100644
+--- vendor/libc-0.2.157/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs
++++ vendor/libc-0.2.157/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs
+@@ -2,7 +2,7 @@
+
+ pub type nlink_t = u64;
+ pub type dev_t = u64;
+-pub type ino_t = ::c_ulong;
++pub type ino_t = u64;
+ pub type shmatt_t = ::c_uint;
+ pub type kpaddr_t = u64;
+ pub type kssize_t = i64;
+diff --git a/src/unix/bsd/freebsdlike/freebsd/freebsd15/mod.rs b/src/unix/bsd/freebsdlike/freebsd/freebsd15/mod.rs
+index d73215a68ec33..f76208400f324 100644
+--- vendor/libc-0.2.157/src/unix/bsd/freebsdlike/freebsd/freebsd15/mod.rs
++++ vendor/libc-0.2.157/src/unix/bsd/freebsdlike/freebsd/freebsd15/mod.rs
+@@ -2,7 +2,7 @@
+
+ pub type nlink_t = u64;
+ pub type dev_t = u64;
+-pub type ino_t = ::c_ulong;
++pub type ino_t = u64;
+ pub type shmatt_t = ::c_uint;
+ pub type kpaddr_t = u64;
+ pub type kssize_t = i64;
+
+
+From 8aca9c0126f3aa5a7dce1ad7fc016b4a0d6af70a Mon Sep 17 00:00:00 2001
+From: Alan Somers <asomers@gmail.com>
+Date: Mon, 23 Sep 2024 10:44:13 -0600
+Subject: [PATCH] Fix the definition of "struct stat" on 32-bit FreeBSD 12+
+
+The original definitions were never correct. But nobody noticed because
+we don't do CI on 32-bit FreeBSD. The problem is apparent now due to
+ #3723 , which caused the nightly toolchain to switch to a FreeBSD 12
+ABI.
+
+Fixes https://github.com/rust-lang/rust/issues/130677
+---
+ .../{freebsd12/b64.rs => freebsd11/b32.rs} | 13 +++---
+ .../bsd/freebsdlike/freebsd/freebsd11/mod.rs | 7 +--
+ .../bsd/freebsdlike/freebsd/freebsd12/mod.rs | 43 +++++++++++++++----
+ .../bsd/freebsdlike/freebsd/freebsd13/b64.rs | 34 ---------------
+ .../bsd/freebsdlike/freebsd/freebsd13/mod.rs | 43 +++++++++++++++----
+ .../bsd/freebsdlike/freebsd/freebsd14/b64.rs | 34 ---------------
+ .../bsd/freebsdlike/freebsd/freebsd14/mod.rs | 43 +++++++++++++++----
+ .../bsd/freebsdlike/freebsd/freebsd15/b64.rs | 34 ---------------
+ .../bsd/freebsdlike/freebsd/freebsd15/mod.rs | 43 +++++++++++++++----
+ src/unix/bsd/freebsdlike/freebsd/x86.rs | 25 -----------
+ 10 files changed, 146 insertions(+), 173 deletions(-)
+ rename src/unix/bsd/freebsdlike/freebsd/{freebsd12/b64.rs => freebsd11/b32.rs} (89%)
+ delete mode 100644 src/unix/bsd/freebsdlike/freebsd/freebsd13/b64.rs
+ delete mode 100644 src/unix/bsd/freebsdlike/freebsd/freebsd14/b64.rs
+ delete mode 100644 src/unix/bsd/freebsdlike/freebsd/freebsd15/b64.rs
+
+diff --git a/src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs b/src/unix/bsd/freebsdlike/freebsd/freebsd11/b32.rs
+similarity index 89%
+rename from src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs
+rename to src/unix/bsd/freebsdlike/freebsd/freebsd11/b32.rs
+
+--- vendor/libc-0.2.157/src/unix/bsd/freebsdlike/freebsd/freebsd11/b32.rs.orig 2024-10-24 17:21:07.154172000 +0200
++++ vendor/libc-0.2.157/src/unix/bsd/freebsdlike/freebsd/freebsd11/b32.rs 2024-10-24 17:21:02.029962000 +0200
+@@ -0,0 +1,34 @@
++#[repr(C)]
++#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, Hash, PartialEq))]
++pub struct stat {
++ pub st_dev: ::dev_t,
++ pub st_ino: ::ino_t,
++ pub st_nlink: ::nlink_t,
++ pub st_mode: ::mode_t,
++ st_padding0: i16,
++ pub st_uid: ::uid_t,
++ pub st_gid: ::gid_t,
++ st_padding1: i32,
++ pub st_rdev: ::dev_t,
++ pub st_atime: ::time_t,
++ pub st_atime_nsec: ::c_long,
++ pub st_mtime: ::time_t,
++ pub st_mtime_nsec: ::c_long,
++ pub st_ctime: ::time_t,
++ pub st_ctime_nsec: ::c_long,
++ pub st_birthtime: ::time_t,
++ pub st_birthtime_nsec: ::c_long,
++ pub st_size: ::off_t,
++ pub st_blocks: ::blkcnt_t,
++ pub st_blksize: ::blksize_t,
++ pub st_flags: ::fflags_t,
++ pub st_gen: u64,
++ pub st_spare: [u64; 10],
++}
++
++impl ::Copy for ::stat {}
++impl ::Clone for ::stat {
++ fn clone(&self) -> ::stat {
++ *self
++ }
++}
+
+
+index 80c6fa1684530..5c1156581fd61 100644
+--- vendor/libc-0.2.157/src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs
++++ vendor/libc-0.2.157/src/unix/bsd/freebsdlike/freebsd/freebsd11/b32.rs
+@@ -3,12 +3,10 @@
+ pub struct stat {
+ pub st_dev: ::dev_t,
+ pub st_ino: ::ino_t,
+- pub st_nlink: ::nlink_t,
+ pub st_mode: ::mode_t,
+- st_padding0: i16,
++ pub st_nlink: ::nlink_t,
+ pub st_uid: ::uid_t,
+ pub st_gid: ::gid_t,
+- st_padding1: i32,
+ pub st_rdev: ::dev_t,
+ pub st_atime: ::time_t,
+ pub st_atime_nsec: ::c_long,
+@@ -16,14 +14,15 @@ pub struct stat {
+ pub st_mtime_nsec: ::c_long,
+ pub st_ctime: ::time_t,
+ pub st_ctime_nsec: ::c_long,
+- pub st_birthtime: ::time_t,
+- pub st_birthtime_nsec: ::c_long,
+ pub st_size: ::off_t,
+ pub st_blocks: ::blkcnt_t,
+ pub st_blksize: ::blksize_t,
+ pub st_flags: ::fflags_t,
+- pub st_gen: u64,
+- pub st_spare: [u64; 10],
++ pub st_gen: u32,
++ pub st_lspare: i32,
++ pub st_birthtime: ::time_t,
++ pub st_birthtime_nsec: ::c_long,
++ __unused: [u8; 8],
+ }
+
+ impl ::Copy for ::stat {}
+diff --git a/src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs b/src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs
+index 68a8364194607..e416ebf745841 100644
+--- vendor/libc-0.2.157/src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs
++++ vendor/libc-0.2.157/src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs
+@@ -479,10 +479,11 @@ extern "C" {
+ }
+
+ cfg_if! {
+- if #[cfg(any(target_arch = "x86_64",
+- target_arch = "aarch64",
+- target_arch = "riscv64"))] {
++ if #[cfg(target_pointer_width = "64")] {
+ mod b64;
+ pub use self::b64::*;
++ } else {
++ mod b32;
++ pub use self::b32::*;
+ }
+ }
+diff --git a/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs b/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs
+index 197400ffb4e28..c4431a6458e8f 100644
+--- vendor/libc-0.2.157/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs
++++ vendor/libc-0.2.157/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs
+@@ -218,6 +218,40 @@ s! {
+ /// kthread flag.
+ pub ki_tdflags: ::c_long,
+ }
++
++ pub struct stat {
++ pub st_dev: ::dev_t,
++ pub st_ino: ::ino_t,
++ pub st_nlink: ::nlink_t,
++ pub st_mode: ::mode_t,
++ st_padding0: i16,
++ pub st_uid: ::uid_t,
++ pub st_gid: ::gid_t,
++ st_padding1: i32,
++ pub st_rdev: ::dev_t,
++ #[cfg(target_arch = "x86")]
++ st_atim_ext: i32,
++ pub st_atime: ::time_t,
++ pub st_atime_nsec: ::c_long,
++ #[cfg(target_arch = "x86")]
++ st_mtim_ext: i32,
++ pub st_mtime: ::time_t,
++ pub st_mtime_nsec: ::c_long,
++ #[cfg(target_arch = "x86")]
++ st_ctim_ext: i32,
++ pub st_ctime: ::time_t,
++ pub st_ctime_nsec: ::c_long,
++ #[cfg(target_arch = "x86")]
++ st_btim_ext: i32,
++ pub st_birthtime: ::time_t,
++ pub st_birthtime_nsec: ::c_long,
++ pub st_size: ::off_t,
++ pub st_blocks: ::blkcnt_t,
++ pub st_blksize: ::blksize_t,
++ pub st_flags: ::fflags_t,
++ pub st_gen: u64,
++ pub st_spare: [u64; 10],
++ }
+ }
+
+ s_no_extra_traits! {
+@@ -488,15 +522,6 @@ extern "C" {
+ pub fn basename(path: *mut ::c_char) -> *mut ::c_char;
+ }
+
+-cfg_if! {
+- if #[cfg(any(target_arch = "x86_64",
+- target_arch = "aarch64",
+- target_arch = "riscv64"))] {
+- mod b64;
+- pub use self::b64::*;
+- }
+-}
+-
+ cfg_if! {
+ if #[cfg(target_arch = "x86_64")] {
+ mod x86_64;
+diff --git a/src/unix/bsd/freebsdlike/freebsd/freebsd13/b64.rs b/src/unix/bsd/freebsdlike/freebsd/freebsd13/b64.rs
+deleted file mode 100644
+index 80c6fa1684530..0000000000000
+--- vendor/libc-0.2.157/src/unix/bsd/freebsdlike/freebsd/freebsd13/b64.rs
++++ /dev/null
+@@ -1,34 +0,0 @@
+-#[repr(C)]
+-#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, Hash, PartialEq))]
+-pub struct stat {
+- pub st_dev: ::dev_t,
+- pub st_ino: ::ino_t,
+- pub st_nlink: ::nlink_t,
+- pub st_mode: ::mode_t,
+- st_padding0: i16,
+- pub st_uid: ::uid_t,
+- pub st_gid: ::gid_t,
+- st_padding1: i32,
+- pub st_rdev: ::dev_t,
+- pub st_atime: ::time_t,
+- pub st_atime_nsec: ::c_long,
+- pub st_mtime: ::time_t,
+- pub st_mtime_nsec: ::c_long,
+- pub st_ctime: ::time_t,
+- pub st_ctime_nsec: ::c_long,
+- pub st_birthtime: ::time_t,
+- pub st_birthtime_nsec: ::c_long,
+- pub st_size: ::off_t,
+- pub st_blocks: ::blkcnt_t,
+- pub st_blksize: ::blksize_t,
+- pub st_flags: ::fflags_t,
+- pub st_gen: u64,
+- pub st_spare: [u64; 10],
+-}
+-
+-impl ::Copy for ::stat {}
+-impl ::Clone for ::stat {
+- fn clone(&self) -> ::stat {
+- *self
+- }
+-}
+diff --git a/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs b/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs
+index d3a77d03c48d0..118404e8b089b 100644
+--- vendor/libc-0.2.157/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs
++++ vendor/libc-0.2.157/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs
+@@ -228,6 +228,40 @@ s! {
+ /// kthread flag.
+ pub ki_tdflags: ::c_long,
+ }
++
++ pub struct stat {
++ pub st_dev: ::dev_t,
++ pub st_ino: ::ino_t,
++ pub st_nlink: ::nlink_t,
++ pub st_mode: ::mode_t,
++ st_padding0: i16,
++ pub st_uid: ::uid_t,
++ pub st_gid: ::gid_t,
++ st_padding1: i32,
++ pub st_rdev: ::dev_t,
++ #[cfg(target_arch = "x86")]
++ st_atim_ext: i32,
++ pub st_atime: ::time_t,
++ pub st_atime_nsec: ::c_long,
++ #[cfg(target_arch = "x86")]
++ st_mtim_ext: i32,
++ pub st_mtime: ::time_t,
++ pub st_mtime_nsec: ::c_long,
++ #[cfg(target_arch = "x86")]
++ st_ctim_ext: i32,
++ pub st_ctime: ::time_t,
++ pub st_ctime_nsec: ::c_long,
++ #[cfg(target_arch = "x86")]
++ st_btim_ext: i32,
++ pub st_birthtime: ::time_t,
++ pub st_birthtime_nsec: ::c_long,
++ pub st_size: ::off_t,
++ pub st_blocks: ::blkcnt_t,
++ pub st_blksize: ::blksize_t,
++ pub st_flags: ::fflags_t,
++ pub st_gen: u64,
++ pub st_spare: [u64; 10],
++ }
+ }
+
+ s_no_extra_traits! {
+@@ -529,15 +563,6 @@ extern "C" {
+ pub fn kvm_kerndisp(kd: *mut ::kvm_t) -> ::kssize_t;
+ }
+
+-cfg_if! {
+- if #[cfg(any(target_arch = "x86_64",
+- target_arch = "aarch64",
+- target_arch = "riscv64"))] {
+- mod b64;
+- pub use self::b64::*;
+- }
+-}
+-
+ cfg_if! {
+ if #[cfg(target_arch = "x86_64")] {
+ mod x86_64;
+diff --git a/src/unix/bsd/freebsdlike/freebsd/freebsd14/b64.rs b/src/unix/bsd/freebsdlike/freebsd/freebsd14/b64.rs
+deleted file mode 100644
+index 80c6fa1684530..0000000000000
+--- vendor/libc-0.2.157/src/unix/bsd/freebsdlike/freebsd/freebsd14/b64.rs
++++ /dev/null
+@@ -1,34 +0,0 @@
+-#[repr(C)]
+-#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, Hash, PartialEq))]
+-pub struct stat {
+- pub st_dev: ::dev_t,
+- pub st_ino: ::ino_t,
+- pub st_nlink: ::nlink_t,
+- pub st_mode: ::mode_t,
+- st_padding0: i16,
+- pub st_uid: ::uid_t,
+- pub st_gid: ::gid_t,
+- st_padding1: i32,
+- pub st_rdev: ::dev_t,
+- pub st_atime: ::time_t,
+- pub st_atime_nsec: ::c_long,
+- pub st_mtime: ::time_t,
+- pub st_mtime_nsec: ::c_long,
+- pub st_ctime: ::time_t,
+- pub st_ctime_nsec: ::c_long,
+- pub st_birthtime: ::time_t,
+- pub st_birthtime_nsec: ::c_long,
+- pub st_size: ::off_t,
+- pub st_blocks: ::blkcnt_t,
+- pub st_blksize: ::blksize_t,
+- pub st_flags: ::fflags_t,
+- pub st_gen: u64,
+- pub st_spare: [u64; 10],
+-}
+-
+-impl ::Copy for ::stat {}
+-impl ::Clone for ::stat {
+- fn clone(&self) -> ::stat {
+- *self
+- }
+-}
+diff --git a/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs b/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs
+index 9d65317d29cb4..e624dd7201b0a 100644
+--- vendor/libc-0.2.157/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs
++++ vendor/libc-0.2.157/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs
+@@ -228,6 +228,40 @@ s! {
+ /// kthread flag.
+ pub ki_tdflags: ::c_long,
+ }
++
++ pub struct stat {
++ pub st_dev: ::dev_t,
++ pub st_ino: ::ino_t,
++ pub st_nlink: ::nlink_t,
++ pub st_mode: ::mode_t,
++ st_padding0: i16,
++ pub st_uid: ::uid_t,
++ pub st_gid: ::gid_t,
++ st_padding1: i32,
++ pub st_rdev: ::dev_t,
++ #[cfg(target_arch = "x86")]
++ st_atim_ext: i32,
++ pub st_atime: ::time_t,
++ pub st_atime_nsec: ::c_long,
++ #[cfg(target_arch = "x86")]
++ st_mtim_ext: i32,
++ pub st_mtime: ::time_t,
++ pub st_mtime_nsec: ::c_long,
++ #[cfg(target_arch = "x86")]
++ st_ctim_ext: i32,
++ pub st_ctime: ::time_t,
++ pub st_ctime_nsec: ::c_long,
++ #[cfg(target_arch = "x86")]
++ st_btim_ext: i32,
++ pub st_birthtime: ::time_t,
++ pub st_birthtime_nsec: ::c_long,
++ pub st_size: ::off_t,
++ pub st_blocks: ::blkcnt_t,
++ pub st_blksize: ::blksize_t,
++ pub st_flags: ::fflags_t,
++ pub st_gen: u64,
++ pub st_spare: [u64; 10],
++ }
+ }
+
+ s_no_extra_traits! {
+@@ -529,15 +563,6 @@ extern "C" {
+ pub fn kvm_kerndisp(kd: *mut ::kvm_t) -> ::kssize_t;
+ }
+
+-cfg_if! {
+- if #[cfg(any(target_arch = "x86_64",
+- target_arch = "aarch64",
+- target_arch = "riscv64"))] {
+- mod b64;
+- pub use self::b64::*;
+- }
+-}
+-
+ cfg_if! {
+ if #[cfg(target_arch = "x86_64")] {
+ mod x86_64;
+diff --git a/src/unix/bsd/freebsdlike/freebsd/freebsd15/b64.rs b/src/unix/bsd/freebsdlike/freebsd/freebsd15/b64.rs
+deleted file mode 100644
+index 80c6fa1684530..0000000000000
+--- vendor/libc-0.2.157/src/unix/bsd/freebsdlike/freebsd/freebsd15/b64.rs
++++ /dev/null
+@@ -1,34 +0,0 @@
+-#[repr(C)]
+-#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, Hash, PartialEq))]
+-pub struct stat {
+- pub st_dev: ::dev_t,
+- pub st_ino: ::ino_t,
+- pub st_nlink: ::nlink_t,
+- pub st_mode: ::mode_t,
+- st_padding0: i16,
+- pub st_uid: ::uid_t,
+- pub st_gid: ::gid_t,
+- st_padding1: i32,
+- pub st_rdev: ::dev_t,
+- pub st_atime: ::time_t,
+- pub st_atime_nsec: ::c_long,
+- pub st_mtime: ::time_t,
+- pub st_mtime_nsec: ::c_long,
+- pub st_ctime: ::time_t,
+- pub st_ctime_nsec: ::c_long,
+- pub st_birthtime: ::time_t,
+- pub st_birthtime_nsec: ::c_long,
+- pub st_size: ::off_t,
+- pub st_blocks: ::blkcnt_t,
+- pub st_blksize: ::blksize_t,
+- pub st_flags: ::fflags_t,
+- pub st_gen: u64,
+- pub st_spare: [u64; 10],
+-}
+-
+-impl ::Copy for ::stat {}
+-impl ::Clone for ::stat {
+- fn clone(&self) -> ::stat {
+- *self
+- }
+-}
+diff --git a/src/unix/bsd/freebsdlike/freebsd/freebsd15/mod.rs b/src/unix/bsd/freebsdlike/freebsd/freebsd15/mod.rs
+index f76208400f324..a299af7d5d53e 100644
+--- vendor/libc-0.2.157/src/unix/bsd/freebsdlike/freebsd/freebsd15/mod.rs
++++ vendor/libc-0.2.157/src/unix/bsd/freebsdlike/freebsd/freebsd15/mod.rs
+@@ -228,6 +228,40 @@ s! {
+ /// kthread flag.
+ pub ki_tdflags: ::c_long,
+ }
++
++ pub struct stat {
++ pub st_dev: ::dev_t,
++ pub st_ino: ::ino_t,
++ pub st_nlink: ::nlink_t,
++ pub st_mode: ::mode_t,
++ st_padding0: i16,
++ pub st_uid: ::uid_t,
++ pub st_gid: ::gid_t,
++ st_padding1: i32,
++ pub st_rdev: ::dev_t,
++ #[cfg(target_arch = "x86")]
++ st_atim_ext: i32,
++ pub st_atime: ::time_t,
++ pub st_atime_nsec: ::c_long,
++ #[cfg(target_arch = "x86")]
++ st_mtim_ext: i32,
++ pub st_mtime: ::time_t,
++ pub st_mtime_nsec: ::c_long,
++ #[cfg(target_arch = "x86")]
++ st_ctim_ext: i32,
++ pub st_ctime: ::time_t,
++ pub st_ctime_nsec: ::c_long,
++ #[cfg(target_arch = "x86")]
++ st_btim_ext: i32,
++ pub st_birthtime: ::time_t,
++ pub st_birthtime_nsec: ::c_long,
++ pub st_size: ::off_t,
++ pub st_blocks: ::blkcnt_t,
++ pub st_blksize: ::blksize_t,
++ pub st_flags: ::fflags_t,
++ pub st_gen: u64,
++ pub st_spare: [u64; 10],
++ }
+ }
+
+ s_no_extra_traits! {
+@@ -529,15 +563,6 @@ extern "C" {
+ pub fn kvm_kerndisp(kd: *mut ::kvm_t) -> ::kssize_t;
+ }
+
+-cfg_if! {
+- if #[cfg(any(target_arch = "x86_64",
+- target_arch = "aarch64",
+- target_arch = "riscv64"))] {
+- mod b64;
+- pub use self::b64::*;
+- }
+-}
+-
+ cfg_if! {
+ if #[cfg(target_arch = "x86_64")] {
+ mod x86_64;
+diff --git a/src/unix/bsd/freebsdlike/freebsd/x86.rs b/src/unix/bsd/freebsdlike/freebsd/x86.rs
+index c3c576ed66681..31a660e7d0a22 100644
+--- vendor/libc-0.2.157/src/unix/bsd/freebsdlike/freebsd/x86.rs
++++ vendor/libc-0.2.157/src/unix/bsd/freebsdlike/freebsd/x86.rs
+@@ -42,31 +42,6 @@ s_no_extra_traits! {
+ }
+
+ s! {
+- pub struct stat {
+- pub st_dev: ::dev_t,
+- pub st_ino: ::ino_t,
+- pub st_mode: ::mode_t,
+- pub st_nlink: ::nlink_t,
+- pub st_uid: ::uid_t,
+- pub st_gid: ::gid_t,
+- pub st_rdev: ::dev_t,
+- pub st_atime: ::time_t,
+- pub st_atime_nsec: ::c_long,
+- pub st_mtime: ::time_t,
+- pub st_mtime_nsec: ::c_long,
+- pub st_ctime: ::time_t,
+- pub st_ctime_nsec: ::c_long,
+- pub st_size: ::off_t,
+- pub st_blocks: ::blkcnt_t,
+- pub st_blksize: ::blksize_t,
+- pub st_flags: ::fflags_t,
+- pub st_gen: u32,
+- pub st_lspare: i32,
+- pub st_birthtime: ::time_t,
+- pub st_birthtime_nsec: ::c_long,
+- __unused: [u8; 8],
+- }
+-
+ pub struct ucontext_t {
+ pub uc_sigmask: ::sigset_t,
+ pub uc_mcontext: ::mcontext_t,
+
+
+From f381e010b2439579c9f548ef86fb06409c2c55d2 Mon Sep 17 00:00:00 2001
+From: Alan Somers <asomers@gmail.com>
+Date: Mon, 23 Sep 2024 16:03:48 -0600
+Subject: [PATCH] fixup: fix build on powerpc, powerpc64, and arm
+
+---
+ src/unix/bsd/freebsdlike/freebsd/arm.rs | 30 -------------------
+ src/unix/bsd/freebsdlike/freebsd/powerpc.rs | 26 ----------------
+ src/unix/bsd/freebsdlike/freebsd/powerpc64.rs | 26 ----------------
+ 3 files changed, 82 deletions(-)
+
+diff --git a/src/unix/bsd/freebsdlike/freebsd/arm.rs b/src/unix/bsd/freebsdlike/freebsd/arm.rs
+index 300b3dd45ca9d..8ff500c65981c 100644
+--- vendor/libc-0.2.157/src/unix/bsd/freebsdlike/freebsd/arm.rs
++++ vendor/libc-0.2.157/src/unix/bsd/freebsdlike/freebsd/arm.rs
+@@ -6,36 +6,6 @@ pub type time_t = i64;
+ pub type suseconds_t = i32;
+ pub type register_t = i32;
+
+-s! {
+- pub struct stat {
+- pub st_dev: ::dev_t,
+- pub st_ino: ::ino_t,
+- pub st_mode: ::mode_t,
+- pub st_nlink: ::nlink_t,
+- pub st_uid: ::uid_t,
+- pub st_gid: ::gid_t,
+- pub st_rdev: ::dev_t,
+- pub st_atime: ::time_t,
+- pub st_atime_nsec: ::c_long,
+- pub st_atime_pad: ::c_long,
+- pub st_mtime: ::time_t,
+- pub st_mtime_nsec: ::c_long,
+- pub st_mtime_pad: ::c_long,
+- pub st_ctime: ::time_t,
+- pub st_ctime_nsec: ::c_long,
+- pub st_ctime_pad: ::c_long,
+- pub st_size: ::off_t,
+- pub st_blocks: ::blkcnt_t,
+- pub st_blksize: ::blksize_t,
+- pub st_flags: ::fflags_t,
+- pub st_gen: u32,
+- pub st_lspare: i32,
+- pub st_birthtime: ::time_t,
+- pub st_birthtime_nsec: ::c_long,
+- pub st_birthtime_pad: ::c_long,
+- }
+-}
+-
+ // should be pub(crate), but that requires Rust 1.18.0
+ cfg_if! {
+ if #[cfg(libc_const_size_of)] {
+diff --git a/src/unix/bsd/freebsdlike/freebsd/powerpc.rs b/src/unix/bsd/freebsdlike/freebsd/powerpc.rs
+index a0120c337e0ad..f84062ba34b93 100644
+--- vendor/libc-0.2.157/src/unix/bsd/freebsdlike/freebsd/powerpc.rs
++++ vendor/libc-0.2.157/src/unix/bsd/freebsdlike/freebsd/powerpc.rs
+@@ -6,32 +6,6 @@ pub type time_t = i64;
+ pub type suseconds_t = i32;
+ pub type register_t = i32;
+
+-s! {
+- pub struct stat {
+- pub st_dev: ::dev_t,
+- pub st_ino: ::ino_t,
+- pub st_mode: ::mode_t,
+- pub st_nlink: ::nlink_t,
+- pub st_uid: ::uid_t,
+- pub st_gid: ::gid_t,
+- pub st_rdev: ::dev_t,
+- pub st_atime: ::time_t,
+- pub st_atime_nsec: ::c_long,
+- pub st_mtime: ::time_t,
+- pub st_mtime_nsec: ::c_long,
+- pub st_ctime: ::time_t,
+- pub st_ctime_nsec: ::c_long,
+- pub st_size: ::off_t,
+- pub st_blocks: ::blkcnt_t,
+- pub st_blksize: ::blksize_t,
+- pub st_flags: ::fflags_t,
+- pub st_gen: u32,
+- pub st_lspare: i32,
+- pub st_birthtime: ::time_t,
+- pub st_birthtime_nsec: ::c_long,
+- }
+-}
+-
+ // should be pub(crate), but that requires Rust 1.18.0
+ cfg_if! {
+ if #[cfg(libc_const_size_of)] {
+diff --git a/src/unix/bsd/freebsdlike/freebsd/powerpc64.rs b/src/unix/bsd/freebsdlike/freebsd/powerpc64.rs
+index 7f5b9752264e3..69cf4c5fc88c7 100644
+--- vendor/libc-0.2.157/src/unix/bsd/freebsdlike/freebsd/powerpc64.rs
++++ vendor/libc-0.2.157/src/unix/bsd/freebsdlike/freebsd/powerpc64.rs
+@@ -6,32 +6,6 @@ pub type time_t = i64;
+ pub type suseconds_t = i64;
+ pub type register_t = i64;
+
+-s! {
+- pub struct stat {
+- pub st_dev: ::dev_t,
+- pub st_ino: ::ino_t,
+- pub st_mode: ::mode_t,
+- pub st_nlink: ::nlink_t,
+- pub st_uid: ::uid_t,
+- pub st_gid: ::gid_t,
+- pub st_rdev: ::dev_t,
+- pub st_atime: ::time_t,
+- pub st_atime_nsec: ::c_long,
+- pub st_mtime: ::time_t,
+- pub st_mtime_nsec: ::c_long,
+- pub st_ctime: ::time_t,
+- pub st_ctime_nsec: ::c_long,
+- pub st_size: ::off_t,
+- pub st_blocks: ::blkcnt_t,
+- pub st_blksize: ::blksize_t,
+- pub st_flags: ::fflags_t,
+- pub st_gen: u32,
+- pub st_lspare: i32,
+- pub st_birthtime: ::time_t,
+- pub st_birthtime_nsec: ::c_long,
+- }
+-}
+-
+ // should be pub(crate), but that requires Rust 1.18.0
+ cfg_if! {
+ if #[cfg(libc_const_size_of)] {
diff --git a/lang/rust/files/patch-vendor_libc-0.2.158 b/lang/rust/files/patch-vendor_libc-0.2.158
new file mode 100644
index 000000000000..6f8b8d093a71
--- /dev/null
+++ b/lang/rust/files/patch-vendor_libc-0.2.158
@@ -0,0 +1,745 @@
+https://github.com/rust-lang/rust/issues/130677
+
+From 9049542fabce9eea669d1fe3d4d973931c9d7d23 Mon Sep 17 00:00:00 2001
+From: Alan Somers <asomers@gmail.com>
+Date: Mon, 23 Sep 2024 10:22:32 -0600
+Subject: [PATCH] Fix the definition of ino_t on 32-bit FreeBSD 12+
+
+Commit 7437d0a6f1 erroneously defined it as "ulong" instead of u64.
+Nobody noticed the mistake, probably because it was only tested on
+64-bit architectures, where those are equivalent. But it's a problem
+now, after #3723 , which switched the standard library to a FreeBSD 12
+ABI.
+
+Issue https://github.com/rust-lang/rust/issues/130677
+---
+ src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs | 2 +-
+ src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs | 2 +-
+ src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs | 2 +-
+ src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs | 2 +-
+ src/unix/bsd/freebsdlike/freebsd/freebsd15/mod.rs | 2 +-
+ 5 files changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs b/src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs
+index de34069eabdf2..68a8364194607 100644
+--- vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs
++++ vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs
+@@ -4,7 +4,7 @@
+ pub type nlink_t = u16;
+ // Type of `dev_t` changed from `u32` to `u64` in FreeBSD 12:
+ pub type dev_t = u32;
+-// Type of `ino_t` changed from `unsigned int` to `unsigned long` in FreeBSD 12:
++// Type of `ino_t` changed from `__uint32_t` to `__uint64_t` in FreeBSD 12:
+ pub type ino_t = u32;
+
+ s! {
+diff --git a/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs b/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs
+index 10fcaa03a4ef6..197400ffb4e28 100644
+--- vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs
++++ vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs
+@@ -2,7 +2,7 @@
+
+ pub type nlink_t = u64;
+ pub type dev_t = u64;
+-pub type ino_t = ::c_ulong;
++pub type ino_t = u64;
+ pub type shmatt_t = ::c_uint;
+
+ s! {
+diff --git a/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs b/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs
+index ec6bce2a03091..d3a77d03c48d0 100644
+--- vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs
++++ vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs
+@@ -2,7 +2,7 @@
+
+ pub type nlink_t = u64;
+ pub type dev_t = u64;
+-pub type ino_t = ::c_ulong;
++pub type ino_t = u64;
+ pub type shmatt_t = ::c_uint;
+ pub type kpaddr_t = u64;
+ pub type kssize_t = i64;
+diff --git a/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs b/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs
+index 160a4baae481b..9d65317d29cb4 100644
+--- vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs
++++ vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs
+@@ -2,7 +2,7 @@
+
+ pub type nlink_t = u64;
+ pub type dev_t = u64;
+-pub type ino_t = ::c_ulong;
++pub type ino_t = u64;
+ pub type shmatt_t = ::c_uint;
+ pub type kpaddr_t = u64;
+ pub type kssize_t = i64;
+diff --git a/src/unix/bsd/freebsdlike/freebsd/freebsd15/mod.rs b/src/unix/bsd/freebsdlike/freebsd/freebsd15/mod.rs
+index d73215a68ec33..f76208400f324 100644
+--- vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd15/mod.rs
++++ vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd15/mod.rs
+@@ -2,7 +2,7 @@
+
+ pub type nlink_t = u64;
+ pub type dev_t = u64;
+-pub type ino_t = ::c_ulong;
++pub type ino_t = u64;
+ pub type shmatt_t = ::c_uint;
+ pub type kpaddr_t = u64;
+ pub type kssize_t = i64;
+
+
+From 8aca9c0126f3aa5a7dce1ad7fc016b4a0d6af70a Mon Sep 17 00:00:00 2001
+From: Alan Somers <asomers@gmail.com>
+Date: Mon, 23 Sep 2024 10:44:13 -0600
+Subject: [PATCH] Fix the definition of "struct stat" on 32-bit FreeBSD 12+
+
+The original definitions were never correct. But nobody noticed because
+we don't do CI on 32-bit FreeBSD. The problem is apparent now due to
+ #3723 , which caused the nightly toolchain to switch to a FreeBSD 12
+ABI.
+
+Fixes https://github.com/rust-lang/rust/issues/130677
+---
+ .../{freebsd12/b64.rs => freebsd11/b32.rs} | 13 +++---
+ .../bsd/freebsdlike/freebsd/freebsd11/mod.rs | 7 +--
+ .../bsd/freebsdlike/freebsd/freebsd12/mod.rs | 43 +++++++++++++++----
+ .../bsd/freebsdlike/freebsd/freebsd13/b64.rs | 34 ---------------
+ .../bsd/freebsdlike/freebsd/freebsd13/mod.rs | 43 +++++++++++++++----
+ .../bsd/freebsdlike/freebsd/freebsd14/b64.rs | 34 ---------------
+ .../bsd/freebsdlike/freebsd/freebsd14/mod.rs | 43 +++++++++++++++----
+ .../bsd/freebsdlike/freebsd/freebsd15/b64.rs | 34 ---------------
+ .../bsd/freebsdlike/freebsd/freebsd15/mod.rs | 43 +++++++++++++++----
+ src/unix/bsd/freebsdlike/freebsd/x86.rs | 25 -----------
+ 10 files changed, 146 insertions(+), 173 deletions(-)
+ rename src/unix/bsd/freebsdlike/freebsd/{freebsd12/b64.rs => freebsd11/b32.rs} (89%)
+ delete mode 100644 src/unix/bsd/freebsdlike/freebsd/freebsd13/b64.rs
+ delete mode 100644 src/unix/bsd/freebsdlike/freebsd/freebsd14/b64.rs
+ delete mode 100644 src/unix/bsd/freebsdlike/freebsd/freebsd15/b64.rs
+
+diff --git a/src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs b/src/unix/bsd/freebsdlike/freebsd/freebsd11/b32.rs
+similarity index 89%
+rename from src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs
+rename to src/unix/bsd/freebsdlike/freebsd/freebsd11/b32.rs
+
+--- vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd11/b32.rs.orig 2024-10-24 17:21:07.154172000 +0200
++++ vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd11/b32.rs 2024-10-24 17:21:02.029962000 +0200
+@@ -0,0 +1,34 @@
++#[repr(C)]
++#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, Hash, PartialEq))]
++pub struct stat {
++ pub st_dev: ::dev_t,
++ pub st_ino: ::ino_t,
++ pub st_nlink: ::nlink_t,
++ pub st_mode: ::mode_t,
++ st_padding0: i16,
++ pub st_uid: ::uid_t,
++ pub st_gid: ::gid_t,
++ st_padding1: i32,
++ pub st_rdev: ::dev_t,
++ pub st_atime: ::time_t,
++ pub st_atime_nsec: ::c_long,
++ pub st_mtime: ::time_t,
++ pub st_mtime_nsec: ::c_long,
++ pub st_ctime: ::time_t,
++ pub st_ctime_nsec: ::c_long,
++ pub st_birthtime: ::time_t,
++ pub st_birthtime_nsec: ::c_long,
++ pub st_size: ::off_t,
++ pub st_blocks: ::blkcnt_t,
++ pub st_blksize: ::blksize_t,
++ pub st_flags: ::fflags_t,
++ pub st_gen: u64,
++ pub st_spare: [u64; 10],
++}
++
++impl ::Copy for ::stat {}
++impl ::Clone for ::stat {
++ fn clone(&self) -> ::stat {
++ *self
++ }
++}
+
+
+index 80c6fa1684530..5c1156581fd61 100644
+--- vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs
++++ vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd11/b32.rs
+@@ -3,12 +3,10 @@
+ pub struct stat {
+ pub st_dev: ::dev_t,
+ pub st_ino: ::ino_t,
+- pub st_nlink: ::nlink_t,
+ pub st_mode: ::mode_t,
+- st_padding0: i16,
++ pub st_nlink: ::nlink_t,
+ pub st_uid: ::uid_t,
+ pub st_gid: ::gid_t,
+- st_padding1: i32,
+ pub st_rdev: ::dev_t,
+ pub st_atime: ::time_t,
+ pub st_atime_nsec: ::c_long,
+@@ -16,14 +14,15 @@ pub struct stat {
+ pub st_mtime_nsec: ::c_long,
+ pub st_ctime: ::time_t,
+ pub st_ctime_nsec: ::c_long,
+- pub st_birthtime: ::time_t,
+- pub st_birthtime_nsec: ::c_long,
+ pub st_size: ::off_t,
+ pub st_blocks: ::blkcnt_t,
+ pub st_blksize: ::blksize_t,
+ pub st_flags: ::fflags_t,
+- pub st_gen: u64,
+- pub st_spare: [u64; 10],
++ pub st_gen: u32,
++ pub st_lspare: i32,
++ pub st_birthtime: ::time_t,
++ pub st_birthtime_nsec: ::c_long,
++ __unused: [u8; 8],
+ }
+
+ impl ::Copy for ::stat {}
+diff --git a/src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs b/src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs
+index 68a8364194607..e416ebf745841 100644
+--- vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs
++++ vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs
+@@ -479,10 +479,11 @@ extern "C" {
+ }
+
+ cfg_if! {
+- if #[cfg(any(target_arch = "x86_64",
+- target_arch = "aarch64",
+- target_arch = "riscv64"))] {
++ if #[cfg(target_pointer_width = "64")] {
+ mod b64;
+ pub use self::b64::*;
++ } else {
++ mod b32;
++ pub use self::b32::*;
+ }
+ }
+diff --git a/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs b/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs
+index 197400ffb4e28..c4431a6458e8f 100644
+--- vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs
++++ vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs
+@@ -218,6 +218,40 @@ s! {
+ /// kthread flag.
+ pub ki_tdflags: ::c_long,
+ }
++
++ pub struct stat {
++ pub st_dev: ::dev_t,
++ pub st_ino: ::ino_t,
++ pub st_nlink: ::nlink_t,
++ pub st_mode: ::mode_t,
++ st_padding0: i16,
++ pub st_uid: ::uid_t,
++ pub st_gid: ::gid_t,
++ st_padding1: i32,
++ pub st_rdev: ::dev_t,
++ #[cfg(target_arch = "x86")]
++ st_atim_ext: i32,
++ pub st_atime: ::time_t,
++ pub st_atime_nsec: ::c_long,
++ #[cfg(target_arch = "x86")]
++ st_mtim_ext: i32,
++ pub st_mtime: ::time_t,
++ pub st_mtime_nsec: ::c_long,
++ #[cfg(target_arch = "x86")]
++ st_ctim_ext: i32,
++ pub st_ctime: ::time_t,
++ pub st_ctime_nsec: ::c_long,
++ #[cfg(target_arch = "x86")]
++ st_btim_ext: i32,
++ pub st_birthtime: ::time_t,
++ pub st_birthtime_nsec: ::c_long,
++ pub st_size: ::off_t,
++ pub st_blocks: ::blkcnt_t,
++ pub st_blksize: ::blksize_t,
++ pub st_flags: ::fflags_t,
++ pub st_gen: u64,
++ pub st_spare: [u64; 10],
++ }
+ }
+
+ s_no_extra_traits! {
+@@ -488,15 +522,6 @@ extern "C" {
+ pub fn basename(path: *mut ::c_char) -> *mut ::c_char;
+ }
+
+-cfg_if! {
+- if #[cfg(any(target_arch = "x86_64",
+- target_arch = "aarch64",
+- target_arch = "riscv64"))] {
+- mod b64;
+- pub use self::b64::*;
+- }
+-}
+-
+ cfg_if! {
+ if #[cfg(target_arch = "x86_64")] {
+ mod x86_64;
+diff --git a/src/unix/bsd/freebsdlike/freebsd/freebsd13/b64.rs b/src/unix/bsd/freebsdlike/freebsd/freebsd13/b64.rs
+deleted file mode 100644
+index 80c6fa1684530..0000000000000
+--- vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd13/b64.rs
++++ /dev/null
+@@ -1,34 +0,0 @@
+-#[repr(C)]
+-#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, Hash, PartialEq))]
+-pub struct stat {
+- pub st_dev: ::dev_t,
+- pub st_ino: ::ino_t,
+- pub st_nlink: ::nlink_t,
+- pub st_mode: ::mode_t,
+- st_padding0: i16,
+- pub st_uid: ::uid_t,
+- pub st_gid: ::gid_t,
+- st_padding1: i32,
+- pub st_rdev: ::dev_t,
+- pub st_atime: ::time_t,
+- pub st_atime_nsec: ::c_long,
+- pub st_mtime: ::time_t,
+- pub st_mtime_nsec: ::c_long,
+- pub st_ctime: ::time_t,
+- pub st_ctime_nsec: ::c_long,
+- pub st_birthtime: ::time_t,
+- pub st_birthtime_nsec: ::c_long,
+- pub st_size: ::off_t,
+- pub st_blocks: ::blkcnt_t,
+- pub st_blksize: ::blksize_t,
+- pub st_flags: ::fflags_t,
+- pub st_gen: u64,
+- pub st_spare: [u64; 10],
+-}
+-
+-impl ::Copy for ::stat {}
+-impl ::Clone for ::stat {
+- fn clone(&self) -> ::stat {
+- *self
+- }
+-}
+diff --git a/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs b/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs
+index d3a77d03c48d0..118404e8b089b 100644
+--- vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs
++++ vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs
+@@ -228,6 +228,40 @@ s! {
+ /// kthread flag.
+ pub ki_tdflags: ::c_long,
+ }
++
++ pub struct stat {
++ pub st_dev: ::dev_t,
++ pub st_ino: ::ino_t,
++ pub st_nlink: ::nlink_t,
++ pub st_mode: ::mode_t,
++ st_padding0: i16,
++ pub st_uid: ::uid_t,
++ pub st_gid: ::gid_t,
++ st_padding1: i32,
++ pub st_rdev: ::dev_t,
++ #[cfg(target_arch = "x86")]
++ st_atim_ext: i32,
++ pub st_atime: ::time_t,
++ pub st_atime_nsec: ::c_long,
++ #[cfg(target_arch = "x86")]
++ st_mtim_ext: i32,
++ pub st_mtime: ::time_t,
++ pub st_mtime_nsec: ::c_long,
++ #[cfg(target_arch = "x86")]
++ st_ctim_ext: i32,
++ pub st_ctime: ::time_t,
++ pub st_ctime_nsec: ::c_long,
++ #[cfg(target_arch = "x86")]
++ st_btim_ext: i32,
++ pub st_birthtime: ::time_t,
++ pub st_birthtime_nsec: ::c_long,
++ pub st_size: ::off_t,
++ pub st_blocks: ::blkcnt_t,
++ pub st_blksize: ::blksize_t,
++ pub st_flags: ::fflags_t,
++ pub st_gen: u64,
++ pub st_spare: [u64; 10],
++ }
+ }
+
+ s_no_extra_traits! {
+@@ -529,15 +563,6 @@ extern "C" {
+ pub fn kvm_kerndisp(kd: *mut ::kvm_t) -> ::kssize_t;
+ }
+
+-cfg_if! {
+- if #[cfg(any(target_arch = "x86_64",
+- target_arch = "aarch64",
+- target_arch = "riscv64"))] {
+- mod b64;
+- pub use self::b64::*;
+- }
+-}
+-
+ cfg_if! {
+ if #[cfg(target_arch = "x86_64")] {
+ mod x86_64;
+diff --git a/src/unix/bsd/freebsdlike/freebsd/freebsd14/b64.rs b/src/unix/bsd/freebsdlike/freebsd/freebsd14/b64.rs
+deleted file mode 100644
+index 80c6fa1684530..0000000000000
+--- vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd14/b64.rs
++++ /dev/null
+@@ -1,34 +0,0 @@
+-#[repr(C)]
+-#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, Hash, PartialEq))]
+-pub struct stat {
+- pub st_dev: ::dev_t,
+- pub st_ino: ::ino_t,
+- pub st_nlink: ::nlink_t,
+- pub st_mode: ::mode_t,
+- st_padding0: i16,
+- pub st_uid: ::uid_t,
+- pub st_gid: ::gid_t,
+- st_padding1: i32,
+- pub st_rdev: ::dev_t,
+- pub st_atime: ::time_t,
+- pub st_atime_nsec: ::c_long,
+- pub st_mtime: ::time_t,
+- pub st_mtime_nsec: ::c_long,
+- pub st_ctime: ::time_t,
+- pub st_ctime_nsec: ::c_long,
+- pub st_birthtime: ::time_t,
+- pub st_birthtime_nsec: ::c_long,
+- pub st_size: ::off_t,
+- pub st_blocks: ::blkcnt_t,
+- pub st_blksize: ::blksize_t,
+- pub st_flags: ::fflags_t,
+- pub st_gen: u64,
+- pub st_spare: [u64; 10],
+-}
+-
+-impl ::Copy for ::stat {}
+-impl ::Clone for ::stat {
+- fn clone(&self) -> ::stat {
+- *self
+- }
+-}
+diff --git a/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs b/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs
+index 9d65317d29cb4..e624dd7201b0a 100644
+--- vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs
++++ vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs
+@@ -228,6 +228,40 @@ s! {
+ /// kthread flag.
+ pub ki_tdflags: ::c_long,
+ }
++
++ pub struct stat {
++ pub st_dev: ::dev_t,
++ pub st_ino: ::ino_t,
++ pub st_nlink: ::nlink_t,
++ pub st_mode: ::mode_t,
++ st_padding0: i16,
++ pub st_uid: ::uid_t,
++ pub st_gid: ::gid_t,
++ st_padding1: i32,
++ pub st_rdev: ::dev_t,
++ #[cfg(target_arch = "x86")]
++ st_atim_ext: i32,
++ pub st_atime: ::time_t,
++ pub st_atime_nsec: ::c_long,
++ #[cfg(target_arch = "x86")]
++ st_mtim_ext: i32,
++ pub st_mtime: ::time_t,
++ pub st_mtime_nsec: ::c_long,
++ #[cfg(target_arch = "x86")]
++ st_ctim_ext: i32,
++ pub st_ctime: ::time_t,
++ pub st_ctime_nsec: ::c_long,
++ #[cfg(target_arch = "x86")]
++ st_btim_ext: i32,
++ pub st_birthtime: ::time_t,
++ pub st_birthtime_nsec: ::c_long,
++ pub st_size: ::off_t,
++ pub st_blocks: ::blkcnt_t,
++ pub st_blksize: ::blksize_t,
++ pub st_flags: ::fflags_t,
++ pub st_gen: u64,
++ pub st_spare: [u64; 10],
++ }
+ }
+
+ s_no_extra_traits! {
+@@ -529,15 +563,6 @@ extern "C" {
+ pub fn kvm_kerndisp(kd: *mut ::kvm_t) -> ::kssize_t;
+ }
+
+-cfg_if! {
+- if #[cfg(any(target_arch = "x86_64",
+- target_arch = "aarch64",
+- target_arch = "riscv64"))] {
+- mod b64;
+- pub use self::b64::*;
+- }
+-}
+-
+ cfg_if! {
+ if #[cfg(target_arch = "x86_64")] {
+ mod x86_64;
+diff --git a/src/unix/bsd/freebsdlike/freebsd/freebsd15/b64.rs b/src/unix/bsd/freebsdlike/freebsd/freebsd15/b64.rs
+deleted file mode 100644
+index 80c6fa1684530..0000000000000
+--- vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd15/b64.rs
++++ /dev/null
+@@ -1,34 +0,0 @@
+-#[repr(C)]
+-#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, Hash, PartialEq))]
+-pub struct stat {
+- pub st_dev: ::dev_t,
+- pub st_ino: ::ino_t,
+- pub st_nlink: ::nlink_t,
+- pub st_mode: ::mode_t,
+- st_padding0: i16,
+- pub st_uid: ::uid_t,
+- pub st_gid: ::gid_t,
+- st_padding1: i32,
+- pub st_rdev: ::dev_t,
+- pub st_atime: ::time_t,
+- pub st_atime_nsec: ::c_long,
+- pub st_mtime: ::time_t,
+- pub st_mtime_nsec: ::c_long,
+- pub st_ctime: ::time_t,
+- pub st_ctime_nsec: ::c_long,
+- pub st_birthtime: ::time_t,
+- pub st_birthtime_nsec: ::c_long,
+- pub st_size: ::off_t,
+- pub st_blocks: ::blkcnt_t,
+- pub st_blksize: ::blksize_t,
+- pub st_flags: ::fflags_t,
+- pub st_gen: u64,
+- pub st_spare: [u64; 10],
+-}
+-
+-impl ::Copy for ::stat {}
+-impl ::Clone for ::stat {
+- fn clone(&self) -> ::stat {
+- *self
+- }
+-}
+diff --git a/src/unix/bsd/freebsdlike/freebsd/freebsd15/mod.rs b/src/unix/bsd/freebsdlike/freebsd/freebsd15/mod.rs
+index f76208400f324..a299af7d5d53e 100644
+--- vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd15/mod.rs
++++ vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd15/mod.rs
+@@ -228,6 +228,40 @@ s! {
+ /// kthread flag.
+ pub ki_tdflags: ::c_long,
+ }
++
++ pub struct stat {
++ pub st_dev: ::dev_t,
++ pub st_ino: ::ino_t,
++ pub st_nlink: ::nlink_t,
++ pub st_mode: ::mode_t,
++ st_padding0: i16,
++ pub st_uid: ::uid_t,
++ pub st_gid: ::gid_t,
++ st_padding1: i32,
++ pub st_rdev: ::dev_t,
++ #[cfg(target_arch = "x86")]
++ st_atim_ext: i32,
++ pub st_atime: ::time_t,
++ pub st_atime_nsec: ::c_long,
++ #[cfg(target_arch = "x86")]
++ st_mtim_ext: i32,
++ pub st_mtime: ::time_t,
++ pub st_mtime_nsec: ::c_long,
++ #[cfg(target_arch = "x86")]
++ st_ctim_ext: i32,
++ pub st_ctime: ::time_t,
++ pub st_ctime_nsec: ::c_long,
++ #[cfg(target_arch = "x86")]
++ st_btim_ext: i32,
++ pub st_birthtime: ::time_t,
++ pub st_birthtime_nsec: ::c_long,
++ pub st_size: ::off_t,
++ pub st_blocks: ::blkcnt_t,
++ pub st_blksize: ::blksize_t,
++ pub st_flags: ::fflags_t,
++ pub st_gen: u64,
++ pub st_spare: [u64; 10],
++ }
+ }
+
+ s_no_extra_traits! {
+@@ -529,15 +563,6 @@ extern "C" {
+ pub fn kvm_kerndisp(kd: *mut ::kvm_t) -> ::kssize_t;
+ }
+
+-cfg_if! {
+- if #[cfg(any(target_arch = "x86_64",
+- target_arch = "aarch64",
+- target_arch = "riscv64"))] {
+- mod b64;
+- pub use self::b64::*;
+- }
+-}
+-
+ cfg_if! {
+ if #[cfg(target_arch = "x86_64")] {
+ mod x86_64;
+diff --git a/src/unix/bsd/freebsdlike/freebsd/x86.rs b/src/unix/bsd/freebsdlike/freebsd/x86.rs
+index c3c576ed66681..31a660e7d0a22 100644
+--- vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/x86.rs
++++ vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/x86.rs
+@@ -42,31 +42,6 @@ s_no_extra_traits! {
+ }
+
+ s! {
+- pub struct stat {
+- pub st_dev: ::dev_t,
+- pub st_ino: ::ino_t,
+- pub st_mode: ::mode_t,
+- pub st_nlink: ::nlink_t,
+- pub st_uid: ::uid_t,
+- pub st_gid: ::gid_t,
+- pub st_rdev: ::dev_t,
+- pub st_atime: ::time_t,
+- pub st_atime_nsec: ::c_long,
+- pub st_mtime: ::time_t,
+- pub st_mtime_nsec: ::c_long,
+- pub st_ctime: ::time_t,
+- pub st_ctime_nsec: ::c_long,
+- pub st_size: ::off_t,
+- pub st_blocks: ::blkcnt_t,
+- pub st_blksize: ::blksize_t,
+- pub st_flags: ::fflags_t,
+- pub st_gen: u32,
+- pub st_lspare: i32,
+- pub st_birthtime: ::time_t,
+- pub st_birthtime_nsec: ::c_long,
+- __unused: [u8; 8],
+- }
+-
+ pub struct ucontext_t {
+ pub uc_sigmask: ::sigset_t,
+ pub uc_mcontext: ::mcontext_t,
+
+
+From f381e010b2439579c9f548ef86fb06409c2c55d2 Mon Sep 17 00:00:00 2001
+From: Alan Somers <asomers@gmail.com>
+Date: Mon, 23 Sep 2024 16:03:48 -0600
+Subject: [PATCH] fixup: fix build on powerpc, powerpc64, and arm
+
+---
+ src/unix/bsd/freebsdlike/freebsd/arm.rs | 30 -------------------
+ src/unix/bsd/freebsdlike/freebsd/powerpc.rs | 26 ----------------
+ src/unix/bsd/freebsdlike/freebsd/powerpc64.rs | 26 ----------------
+ 3 files changed, 82 deletions(-)
+
+diff --git a/src/unix/bsd/freebsdlike/freebsd/arm.rs b/src/unix/bsd/freebsdlike/freebsd/arm.rs
+index 300b3dd45ca9d..8ff500c65981c 100644
+--- vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/arm.rs
++++ vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/arm.rs
+@@ -6,36 +6,6 @@ pub type time_t = i64;
+ pub type suseconds_t = i32;
+ pub type register_t = i32;
+
+-s! {
+- pub struct stat {
+- pub st_dev: ::dev_t,
+- pub st_ino: ::ino_t,
+- pub st_mode: ::mode_t,
+- pub st_nlink: ::nlink_t,
+- pub st_uid: ::uid_t,
+- pub st_gid: ::gid_t,
+- pub st_rdev: ::dev_t,
+- pub st_atime: ::time_t,
+- pub st_atime_nsec: ::c_long,
+- pub st_atime_pad: ::c_long,
+- pub st_mtime: ::time_t,
+- pub st_mtime_nsec: ::c_long,
+- pub st_mtime_pad: ::c_long,
+- pub st_ctime: ::time_t,
+- pub st_ctime_nsec: ::c_long,
+- pub st_ctime_pad: ::c_long,
+- pub st_size: ::off_t,
+- pub st_blocks: ::blkcnt_t,
+- pub st_blksize: ::blksize_t,
+- pub st_flags: ::fflags_t,
+- pub st_gen: u32,
+- pub st_lspare: i32,
+- pub st_birthtime: ::time_t,
+- pub st_birthtime_nsec: ::c_long,
+- pub st_birthtime_pad: ::c_long,
+- }
+-}
+-
+ // should be pub(crate), but that requires Rust 1.18.0
+ cfg_if! {
+ if #[cfg(libc_const_size_of)] {
+diff --git a/src/unix/bsd/freebsdlike/freebsd/powerpc.rs b/src/unix/bsd/freebsdlike/freebsd/powerpc.rs
+index a0120c337e0ad..f84062ba34b93 100644
+--- vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/powerpc.rs
++++ vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/powerpc.rs
+@@ -6,32 +6,6 @@ pub type time_t = i64;
+ pub type suseconds_t = i32;
+ pub type register_t = i32;
+
+-s! {
+- pub struct stat {
+- pub st_dev: ::dev_t,
+- pub st_ino: ::ino_t,
+- pub st_mode: ::mode_t,
+- pub st_nlink: ::nlink_t,
+- pub st_uid: ::uid_t,
+- pub st_gid: ::gid_t,
+- pub st_rdev: ::dev_t,
+- pub st_atime: ::time_t,
+- pub st_atime_nsec: ::c_long,
+- pub st_mtime: ::time_t,
+- pub st_mtime_nsec: ::c_long,
+- pub st_ctime: ::time_t,
+- pub st_ctime_nsec: ::c_long,
+- pub st_size: ::off_t,
+- pub st_blocks: ::blkcnt_t,
+- pub st_blksize: ::blksize_t,
+- pub st_flags: ::fflags_t,
+- pub st_gen: u32,
+- pub st_lspare: i32,
+- pub st_birthtime: ::time_t,
+- pub st_birthtime_nsec: ::c_long,
+- }
+-}
+-
+ // should be pub(crate), but that requires Rust 1.18.0
+ cfg_if! {
+ if #[cfg(libc_const_size_of)] {
+diff --git a/src/unix/bsd/freebsdlike/freebsd/powerpc64.rs b/src/unix/bsd/freebsdlike/freebsd/powerpc64.rs
+index 7f5b9752264e3..69cf4c5fc88c7 100644
+--- vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/powerpc64.rs
++++ vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/powerpc64.rs
+@@ -6,32 +6,6 @@ pub type time_t = i64;
+ pub type suseconds_t = i64;
+ pub type register_t = i64;
+
+-s! {
+- pub struct stat {
+- pub st_dev: ::dev_t,
+- pub st_ino: ::ino_t,
+- pub st_mode: ::mode_t,
+- pub st_nlink: ::nlink_t,
+- pub st_uid: ::uid_t,
+- pub st_gid: ::gid_t,
+- pub st_rdev: ::dev_t,
+- pub st_atime: ::time_t,
+- pub st_atime_nsec: ::c_long,
+- pub st_mtime: ::time_t,
+- pub st_mtime_nsec: ::c_long,
+- pub st_ctime: ::time_t,
+- pub st_ctime_nsec: ::c_long,
+- pub st_size: ::off_t,
+- pub st_blocks: ::blkcnt_t,
+- pub st_blksize: ::blksize_t,
+- pub st_flags: ::fflags_t,
+- pub st_gen: u32,
+- pub st_lspare: i32,
+- pub st_birthtime: ::time_t,
+- pub st_birthtime_nsec: ::c_long,
+- }
+-}
+-
+ // should be pub(crate), but that requires Rust 1.18.0
+ cfg_if! {
+ if #[cfg(libc_const_size_of)] {