pkgsrc-WIP-changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

rust181: Add patches needed for native build on aarch64eb.



Module Name:	pkgsrc-wip
Committed By:	Havard Eidnes <he%NetBSD.org@localhost>
Pushed By:	he
Date:		Wed Oct 2 22:49:45 2024 +0000
Changeset:	b1058003a0e0ca77dc3321c3ee4ae9f3e2d69a0e

Modified Files:
	rust181/Makefile
	rust181/distinfo
Added Files:
	rust181/patches/patch-vendor_aho-corasick-1.1.2_src_packed_teddy_builder.rs
	rust181/patches/patch-vendor_aho-corasick-1.1.2_src_packed_vector.rs
	rust181/patches/patch-vendor_memchr-2.7.1_src_arch_aarch64_memchr.rs
	rust181/patches/patch-vendor_memchr-2.7.1_src_arch_aarch64_mod.rs
	rust181/patches/patch-vendor_memchr-2.7.1_src_memchr.rs
	rust181/patches/patch-vendor_memchr-2.7.1_src_memmem_searcher.rs
	rust181/patches/patch-vendor_memchr-2.7.1_src_vector.rs

Log Message:
rust181: Add patches needed for native build on aarch64eb.

This is from the rust180 package.

To see a diff of this commit:
https://wip.pkgsrc.org/cgi-bin/gitweb.cgi?p=pkgsrc-wip.git;a=commitdiff;h=b1058003a0e0ca77dc3321c3ee4ae9f3e2d69a0e

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

diffstat:
 rust181/Makefile                                   |  20 +++-
 rust181/distinfo                                   |   7 ++
 ..._aho-corasick-1.1.2_src_packed_teddy_builder.rs |  33 ++++++
 ...-vendor_aho-corasick-1.1.2_src_packed_vector.rs |  28 +++++
 ...-vendor_memchr-2.7.1_src_arch_aarch64_memchr.rs |  25 ++++
 ...tch-vendor_memchr-2.7.1_src_arch_aarch64_mod.rs |  16 +++
 .../patch-vendor_memchr-2.7.1_src_memchr.rs        | 129 +++++++++++++++++++++
 ...atch-vendor_memchr-2.7.1_src_memmem_searcher.rs |  79 +++++++++++++
 .../patch-vendor_memchr-2.7.1_src_vector.rs        |  15 +++
 9 files changed, 351 insertions(+), 1 deletion(-)

diffs:
diff --git a/rust181/Makefile b/rust181/Makefile
index dc74751008..7ba9013d4a 100644
--- a/rust181/Makefile
+++ b/rust181/Makefile
@@ -334,7 +334,7 @@ SITES.${RUST_STAGE0}=		${MASTER_SITE_LOCAL:=rust/}
 SITES.${RUST_STD_STAGE0}=	${MASTER_SITE_LOCAL:=rust/}
 .endif
 .if ${MACHINE_PLATFORM:MNetBSD-*-aarch64eb} || make(distinfo) || make (makesum) || make(mdi)
-RUST_STAGE0_VER=		1.77.1
+RUST_STAGE0_VER=		1.80.1
 RUST_ARCH=			aarch64_be-unknown-netbsd
 RUST_STAGE0:=			rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.xz
 RUST_STD_STAGE0:=		rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.xz
@@ -472,10 +472,28 @@ CKSUMS+=	28d66e566b73f6f0f7add4092874dc967ce133bfb6dcbd81f03c9a04b6e4e1d0
 CKSUMS+=	44cd1a614bd66f1e66fc86c541d3c3b8d3a14a644c13e8bf816df3f555eac2d4
 CKSUMS+=	27f9bff08b24828e1a611b10a0282f5457d12e9e7254202040144d392297d720
 
+CKSUM_CRATES+=	vendor/memchr-2.7.1
+CKSUMS+=	5bb70f915084e629d940dbc322f5b9096b2e658cf63fea8a2f6e7550412e73a0
+CKSUMS+=	34aaa34eb7048e8bba49d390942ab707990380952f37f388f3cca30970c53450
+CKSUMS+=	44cd1a614bd66f1e66fc86c541d3c3b8d3a14a644c13e8bf816df3f555eac2d4
+CKSUMS+=	27f9bff08b24828e1a611b10a0282f5457d12e9e7254202040144d392297d720
+CKSUMS+=	36f1c03304261877cd7f75c7ed8f7daff7a5c570cedce375e38e9b1ca44467f7
+CKSUMS+=	ef7e45ffa02b11b07aa79636b1b3138f5757e3409d6fc8d0134c09308ed1942c
+CKSUMS+=	69c38fb33d8f1a2a26769a81e514428240c8f8f15cea5302873d90b80391dd89
+CKSUMS+=	16e36c43c9bb6c14c6fd9282d187864aa748ee0c9b0e2c022a72c66a4b2b30e8
+CKSUMS+=	ef823ae8c54053780a0e7aeaee14b6c6ac2aea4567bf701ae8be137806c6d293
+CKSUMS+=	e9bae14479a8b7f1b946d5b0a5e186085ad4ec330cc8b882d444117c4b556b00
+
 CKSUM_CRATES+=	vendor/bytecount-0.6.8
 CKSUMS+=	01cd755a128d8a5892f3edda195b26bb461be375be17dd72e6e4f061169e6dff
 CKSUMS+=	a6750c0e2a6c385ec902cd7f87de7835fe2b4171b9c83da64122274ee20a77c6
 
+CKSUM_CRATES+=	vendor/aho-corasick-1.1.2
+CKSUMS+=	840065521cbd4701fa5b8b506d1537843d858c903f7cadf3c68749ea1780874b
+CKSUMS+=	3236bb49a58837d63d8dfb7b3c9cae59f0f27b9f7adf8f4e1a978f6116f64fef
+CKSUMS+=	720735ea6c7ff92b081426513e6e82feed24a922849297bb538d28f7b8129f81
+CKSUMS+=	f41fe38e3a4860e6c8adee4852ab7f5cf683bcb0849c6a02f00f7701ad25af89
+
 SUBST_CLASSES+=		cksum
 SUBST_STAGE.cksum=	pre-configure
 .for crate in ${CKSUM_CRATES}
diff --git a/rust181/distinfo b/rust181/distinfo
index df66afbba7..200ddcfd2c 100644
--- a/rust181/distinfo
+++ b/rust181/distinfo
@@ -137,10 +137,17 @@ SHA1 (patch-src_tools_cargo_src_cargo_core_profiles.rs) = e1af7fde97416e0a269ee3
 SHA1 (patch-src_tools_cargo_tests_testsuite_build.rs) = 84dfc091a152b83938e8706917d692a329b70393
 SHA1 (patch-src_tools_rust-installer_install-template.sh) = 6984546c34a2e4d55a6dbe59baa0d4958184e0b7
 SHA1 (patch-tools_rust-analyzer_lib_line-index-src_lib.rs) = 4ed527174447ee23fa81dd6840e18b9949d5a273
+SHA1 (patch-vendor_aho-corasick-1.1.2_src_packed_teddy_builder.rs) = c76abf55d641cebb70935ebeebe6cdd6f3f09463
+SHA1 (patch-vendor_aho-corasick-1.1.2_src_packed_vector.rs) = dddc3ea2f407ce61c8bf83d1842e6a82557b8bee
 SHA1 (patch-vendor_bytecount-0.6.8_src_lib.rs) = d7610f2ae957d085a465f8c75549e5a11586a8b0
 SHA1 (patch-vendor_cc-1.0.73_src_lib.rs) = 690b3feaa619050512254d7c18fd4f51da98e279
 SHA1 (patch-vendor_crossbeam-utils-0.8.18_no__atomic.rs) = d4d9288cb199af9bc7e321fbd2b42860aed954ec
 SHA1 (patch-vendor_libc-0.2.155_src_unix_solarish_mod.rs) = 97505b88875aa80fa2b5589b6090237c3786e143
+SHA1 (patch-vendor_memchr-2.7.1_src_arch_aarch64_memchr.rs) = 22b2cd0e629f66b81456aed62b4925070635a62b
+SHA1 (patch-vendor_memchr-2.7.1_src_arch_aarch64_mod.rs) = 46473abc95a7884ee6163d30156b67d8951c0c30
+SHA1 (patch-vendor_memchr-2.7.1_src_memchr.rs) = f2a5ad9d40ab3277d3f87d4044c5eb719a25b58d
+SHA1 (patch-vendor_memchr-2.7.1_src_memmem_searcher.rs) = cd5fa24223748307e20758c6669330b3b75e6b57
+SHA1 (patch-vendor_memchr-2.7.1_src_vector.rs) = 2903cc1de6c759d15ad269ae3f227709561b2c0c
 SHA1 (patch-vendor_memchr-2.7.2_src_arch_aarch64_memchr.rs) = caf5b8b848923c2e74bf5b5742b1ee564b6145f1
 SHA1 (patch-vendor_memchr-2.7.2_src_arch_aarch64_mod.rs) = fa96a8e6546e5603a8a22fe6e09619ffaafe7bf3
 SHA1 (patch-vendor_memchr-2.7.2_src_memchr.rs) = 609dc522e5c774226d7b21391d5354f8382fe578
diff --git a/rust181/patches/patch-vendor_aho-corasick-1.1.2_src_packed_teddy_builder.rs b/rust181/patches/patch-vendor_aho-corasick-1.1.2_src_packed_teddy_builder.rs
new file mode 100644
index 0000000000..97e419f1c2
--- /dev/null
+++ b/rust181/patches/patch-vendor_aho-corasick-1.1.2_src_packed_teddy_builder.rs
@@ -0,0 +1,33 @@
+$NetBSD$
+
+Avoid use of neon / SIMD on big-endian aarch64.
+
+--- vendor/aho-corasick-1.1.2/src/packed/teddy/builder.rs.orig	2024-09-29 08:19:52.405194911 +0000
++++ vendor/aho-corasick-1.1.2/src/packed/teddy/builder.rs
+@@ -230,7 +230,7 @@ impl Builder {
+                 }
+             }
+         }
+-        #[cfg(target_arch = "aarch64")]
++        #[cfg(all(target_arch = "aarch64", target_endian = "little"))]
+         {
+             use self::aarch64::SlimNeon;
+ 
+@@ -301,7 +301,7 @@ impl Builder {
+         }
+         #[cfg(not(any(
+             all(target_arch = "x86_64", target_feature = "sse2"),
+-            target_arch = "aarch64"
++            all(target_arch = "aarch64", target_endian = "little")
+         )))]
+         {
+             None
+@@ -705,7 +705,7 @@ mod x86_64 {
+     }
+ }
+ 
+-#[cfg(target_arch = "aarch64")]
++#[cfg(all(target_arch = "aarch64", target_endian = "little"))]
+ mod aarch64 {
+     use core::arch::aarch64::uint8x16_t;
+ 
diff --git a/rust181/patches/patch-vendor_aho-corasick-1.1.2_src_packed_vector.rs b/rust181/patches/patch-vendor_aho-corasick-1.1.2_src_packed_vector.rs
new file mode 100644
index 0000000000..ebbbbaaded
--- /dev/null
+++ b/rust181/patches/patch-vendor_aho-corasick-1.1.2_src_packed_vector.rs
@@ -0,0 +1,28 @@
+$NetBSD$
+
+Avoid use of neon / SIMD on big-endian aarch64.
+
+--- vendor/aho-corasick-1.1.2/src/packed/vector.rs.orig	2024-09-29 08:09:15.720814688 +0000
++++ vendor/aho-corasick-1.1.2/src/packed/vector.rs
+@@ -595,7 +595,7 @@ mod x86_64_avx2 {
+     }
+ }
+ 
+-#[cfg(target_arch = "aarch64")]
++#[cfg(all(target_arch = "aarch64", target_endian = "little"))]
+ mod aarch64_neon {
+     use core::arch::aarch64::*;
+ 
+@@ -1466,7 +1466,11 @@ mod tests_x86_64_avx2 {
+     }
+ }
+ 
+-#[cfg(all(test, target_arch = "aarch64", target_feature = "neon"))]
++#[cfg(all(test,
++          target_arch = "aarch64",
++          target_feature = "neon",
++          target_endian = "little"
++))]
+ mod tests_aarch64_neon {
+     use core::arch::aarch64::*;
+ 
diff --git a/rust181/patches/patch-vendor_memchr-2.7.1_src_arch_aarch64_memchr.rs b/rust181/patches/patch-vendor_memchr-2.7.1_src_arch_aarch64_memchr.rs
new file mode 100644
index 0000000000..dbedca579c
--- /dev/null
+++ b/rust181/patches/patch-vendor_memchr-2.7.1_src_arch_aarch64_memchr.rs
@@ -0,0 +1,25 @@
+$NetBSD$
+
+Turn off use of neon on big-endian aarch64.
+Ref. https://github.com/rust-lang/rust/issues/129819
+
+--- vendor/memchr-2.7.1/src/arch/aarch64/memchr.rs.orig	2024-09-29 15:07:46.024388906 +0000
++++ vendor/memchr-2.7.1/src/arch/aarch64/memchr.rs
+@@ -8,7 +8,7 @@ available for `aarch64` targets.)
+ 
+ macro_rules! defraw {
+     ($ty:ident, $find:ident, $start:ident, $end:ident, $($needles:ident),+) => {{
+-        #[cfg(target_feature = "neon")]
++        #[cfg(all(target_feature = "neon", target_endian = "little"))]
+         {
+             use crate::arch::aarch64::neon::memchr::$ty;
+ 
+@@ -19,7 +19,7 @@ macro_rules! defraw {
+             // enabled.
+             $ty::new_unchecked($($needles),+).$find($start, $end)
+         }
+-        #[cfg(not(target_feature = "neon"))]
++        #[cfg(not(all(target_feature = "neon", target_endian = "little")))]
+         {
+             use crate::arch::all::memchr::$ty;
+ 
diff --git a/rust181/patches/patch-vendor_memchr-2.7.1_src_arch_aarch64_mod.rs b/rust181/patches/patch-vendor_memchr-2.7.1_src_arch_aarch64_mod.rs
new file mode 100644
index 0000000000..3ce0048d64
--- /dev/null
+++ b/rust181/patches/patch-vendor_memchr-2.7.1_src_arch_aarch64_mod.rs
@@ -0,0 +1,16 @@
+$NetBSD$
+
+Only use neon extension on little-endian aarch64.
+Ref. https://github.com/rust-lang/rust/issues/129819
+
+--- vendor/memchr-2.7.1/src/arch/aarch64/mod.rs.orig	2024-09-29 15:09:57.496379714 +0000
++++ vendor/memchr-2.7.1/src/arch/aarch64/mod.rs
+@@ -2,6 +2,8 @@
+ Vector algorithms for the `aarch64` target.
+ */
+ 
++#[cfg(target_endian = "little")]
+ pub mod neon;
+ 
++#[cfg(target_endian = "little")]
+ pub(crate) mod memchr;
diff --git a/rust181/patches/patch-vendor_memchr-2.7.1_src_memchr.rs b/rust181/patches/patch-vendor_memchr-2.7.1_src_memchr.rs
new file mode 100644
index 0000000000..6cbb843fd8
--- /dev/null
+++ b/rust181/patches/patch-vendor_memchr-2.7.1_src_memchr.rs
@@ -0,0 +1,129 @@
+$NetBSD$
+
+Only use neon extension on little-endian aarch64.
+Ref. https://github.com/rust-lang/rust/issues/129819
+
+--- vendor/memchr-2.7.1/src/memchr.rs.orig	2024-09-29 15:11:13.260160791 +0000
++++ vendor/memchr-2.7.1/src/memchr.rs
+@@ -518,14 +518,14 @@ unsafe fn memchr_raw(
+     {
+         crate::arch::wasm32::memchr::memchr_raw(needle, start, end)
+     }
+-    #[cfg(target_arch = "aarch64")]
++    #[cfg(all(target_arch = "aarch64", target_endian = "little"))]
+     {
+         crate::arch::aarch64::memchr::memchr_raw(needle, start, end)
+     }
+     #[cfg(not(any(
+         target_arch = "x86_64",
+         target_arch = "wasm32",
+-        target_arch = "aarch64"
++        all(target_arch = "aarch64", target_endian = "little")
+     )))]
+     {
+         crate::arch::all::memchr::One::new(needle).find_raw(start, end)
+@@ -551,14 +551,14 @@ unsafe fn memrchr_raw(
+     {
+         crate::arch::wasm32::memchr::memrchr_raw(needle, start, end)
+     }
+-    #[cfg(target_arch = "aarch64")]
++    #[cfg(all(target_arch = "aarch64", target_endian = "little"))]
+     {
+         crate::arch::aarch64::memchr::memrchr_raw(needle, start, end)
+     }
+     #[cfg(not(any(
+         target_arch = "x86_64",
+         target_arch = "wasm32",
+-        target_arch = "aarch64"
++        all(target_arch = "aarch64", target_endian = "little")
+     )))]
+     {
+         crate::arch::all::memchr::One::new(needle).rfind_raw(start, end)
+@@ -585,14 +585,14 @@ unsafe fn memchr2_raw(
+     {
+         crate::arch::wasm32::memchr::memchr2_raw(needle1, needle2, start, end)
+     }
+-    #[cfg(target_arch = "aarch64")]
++    #[cfg(all(target_arch = "aarch64", target_endian = "little"))]
+     {
+         crate::arch::aarch64::memchr::memchr2_raw(needle1, needle2, start, end)
+     }
+     #[cfg(not(any(
+         target_arch = "x86_64",
+         target_arch = "wasm32",
+-        target_arch = "aarch64"
++        all(target_arch = "aarch64", target_endian = "little")
+     )))]
+     {
+         crate::arch::all::memchr::Two::new(needle1, needle2)
+@@ -620,7 +620,7 @@ unsafe fn memrchr2_raw(
+     {
+         crate::arch::wasm32::memchr::memrchr2_raw(needle1, needle2, start, end)
+     }
+-    #[cfg(target_arch = "aarch64")]
++    #[cfg(all(target_arch = "aarch64", target_endian = "little"))]
+     {
+         crate::arch::aarch64::memchr::memrchr2_raw(
+             needle1, needle2, start, end,
+@@ -629,7 +629,7 @@ unsafe fn memrchr2_raw(
+     #[cfg(not(any(
+         target_arch = "x86_64",
+         target_arch = "wasm32",
+-        target_arch = "aarch64"
++        all(target_arch = "aarch64", target_endian = "little")
+     )))]
+     {
+         crate::arch::all::memchr::Two::new(needle1, needle2)
+@@ -662,7 +662,7 @@ unsafe fn memchr3_raw(
+             needle1, needle2, needle3, start, end,
+         )
+     }
+-    #[cfg(target_arch = "aarch64")]
++    #[cfg(all(target_arch = "aarch64", target_endian = "little"))]
+     {
+         crate::arch::aarch64::memchr::memchr3_raw(
+             needle1, needle2, needle3, start, end,
+@@ -671,7 +671,7 @@ unsafe fn memchr3_raw(
+     #[cfg(not(any(
+         target_arch = "x86_64",
+         target_arch = "wasm32",
+-        target_arch = "aarch64"
++        all(target_arch = "aarch64", target_endian = "little")
+     )))]
+     {
+         crate::arch::all::memchr::Three::new(needle1, needle2, needle3)
+@@ -704,7 +704,7 @@ unsafe fn memrchr3_raw(
+             needle1, needle2, needle3, start, end,
+         )
+     }
+-    #[cfg(target_arch = "aarch64")]
++    #[cfg(all(target_arch = "aarch64", target_endian = "little"))]
+     {
+         crate::arch::aarch64::memchr::memrchr3_raw(
+             needle1, needle2, needle3, start, end,
+@@ -713,7 +713,7 @@ unsafe fn memrchr3_raw(
+     #[cfg(not(any(
+         target_arch = "x86_64",
+         target_arch = "wasm32",
+-        target_arch = "aarch64"
++        all(target_arch = "aarch64", target_endian = "little")
+     )))]
+     {
+         crate::arch::all::memchr::Three::new(needle1, needle2, needle3)
+@@ -736,14 +736,14 @@ unsafe fn count_raw(needle: u8, start: *
+     {
+         crate::arch::wasm32::memchr::count_raw(needle, start, end)
+     }
+-    #[cfg(target_arch = "aarch64")]
++    #[cfg(all(target_arch = "aarch64", target_endian = "little"))]
+     {
+         crate::arch::aarch64::memchr::count_raw(needle, start, end)
+     }
+     #[cfg(not(any(
+         target_arch = "x86_64",
+         target_arch = "wasm32",
+-        target_arch = "aarch64"
++        all(target_arch = "aarch64", target_endian = "little")
+     )))]
+     {
+         crate::arch::all::memchr::One::new(needle).count_raw(start, end)
diff --git a/rust181/patches/patch-vendor_memchr-2.7.1_src_memmem_searcher.rs b/rust181/patches/patch-vendor_memchr-2.7.1_src_memmem_searcher.rs
new file mode 100644
index 0000000000..facb8f2869
--- /dev/null
+++ b/rust181/patches/patch-vendor_memchr-2.7.1_src_memmem_searcher.rs
@@ -0,0 +1,79 @@
+$NetBSD$
+
+Skip attempts at using neon on big-endian aarch64.
+Ref. https://github.com/rust-lang/rust/issues/129819
+
+--- vendor/memchr-2.7.1/src/memmem/searcher.rs.orig	2024-09-29 15:19:47.699469326 +0000
++++ vendor/memchr-2.7.1/src/memmem/searcher.rs
+@@ -3,7 +3,7 @@ use crate::arch::all::{
+     rabinkarp, twoway,
+ };
+ 
+-#[cfg(target_arch = "aarch64")]
++#[cfg(all(target_arch = "aarch64", target_endian = "little"))]
+ use crate::arch::aarch64::neon::packedpair as neon;
+ #[cfg(target_arch = "wasm32")]
+ use crate::arch::wasm32::simd128::packedpair as simd128;
+@@ -129,7 +129,7 @@ impl Searcher {
+                 Searcher::twoway(needle, rabinkarp, prestrat)
+             }
+         }
+-        #[cfg(target_arch = "aarch64")]
++        #[cfg(all(target_arch = "aarch64", target_endian = "little"))]
+         {
+             if let Some(pp) = neon::Finder::with_pair(needle, pair) {
+                 if do_packed_search(needle) {
+@@ -152,7 +152,7 @@ impl Searcher {
+         #[cfg(not(any(
+             all(target_arch = "x86_64", target_feature = "sse2"),
+             target_arch = "wasm32",
+-            target_arch = "aarch64"
++            all(target_arch = "aarch64", target_endian = "little")
+         )))]
+         {
+             if prefilter.is_none() {
+@@ -253,7 +253,7 @@ union SearcherKind {
+     avx2: crate::arch::x86_64::avx2::packedpair::Finder,
+     #[cfg(target_arch = "wasm32")]
+     simd128: crate::arch::wasm32::simd128::packedpair::Finder,
+-    #[cfg(target_arch = "aarch64")]
++    #[cfg(all(target_arch = "aarch64", target_endian = "little"))]
+     neon: crate::arch::aarch64::neon::packedpair::Finder,
+ }
+ 
+@@ -421,7 +421,7 @@ unsafe fn searcher_kind_simd128(
+ /// # Safety
+ ///
+ /// Callers must ensure that the `searcher.kind.neon` union field is set.
+-#[cfg(target_arch = "aarch64")]
++#[cfg(all(target_arch = "aarch64", target_endian = "little"))]
+ unsafe fn searcher_kind_neon(
+     searcher: &Searcher,
+     _prestate: &mut PrefilterState,
+@@ -686,7 +686,7 @@ impl Prefilter {
+     }
+ 
+     /// Return a prefilter using a aarch64 neon vector algorithm.
+-    #[cfg(target_arch = "aarch64")]
++    #[cfg(all(target_arch = "aarch64", target_endian = "little"))]
+     #[inline]
+     fn neon(finder: neon::Finder, needle: &[u8]) -> Prefilter {
+         trace!("building aarch64 neon prefilter");
+@@ -763,7 +763,7 @@ union PrefilterKind {
+     avx2: crate::arch::x86_64::avx2::packedpair::Finder,
+     #[cfg(target_arch = "wasm32")]
+     simd128: crate::arch::wasm32::simd128::packedpair::Finder,
+-    #[cfg(target_arch = "aarch64")]
++    #[cfg(all(target_arch = "aarch64", target_endian = "little"))]
+     neon: crate::arch::aarch64::neon::packedpair::Finder,
+ }
+ 
+@@ -852,7 +852,7 @@ unsafe fn prefilter_kind_simd128(
+ /// # Safety
+ ///
+ /// Callers must ensure that the `strat.kind.neon` union field is set.
+-#[cfg(target_arch = "aarch64")]
++#[cfg(all(target_arch = "aarch64", target_endian = "little"))]
+ unsafe fn prefilter_kind_neon(
+     strat: &Prefilter,
+     haystack: &[u8],
diff --git a/rust181/patches/patch-vendor_memchr-2.7.1_src_vector.rs b/rust181/patches/patch-vendor_memchr-2.7.1_src_vector.rs
new file mode 100644
index 0000000000..d3dadc625c
--- /dev/null
+++ b/rust181/patches/patch-vendor_memchr-2.7.1_src_vector.rs
@@ -0,0 +1,15 @@
+$NetBSD$
+
+Avoid using neon on big-endian aarch64.
+
+--- vendor/memchr-2.7.1/src/vector.rs.orig	2024-09-29 15:24:01.478487808 +0000
++++ vendor/memchr-2.7.1/src/vector.rs
+@@ -293,7 +293,7 @@ mod x86avx2 {
+     }
+ }
+ 
+-#[cfg(target_arch = "aarch64")]
++#[cfg(all(target_arch = "aarch64", target_endian = "little"))]
+ mod aarch64neon {
+     use core::arch::aarch64::*;
+ 


Home | Main Index | Thread Index | Old Index