diff --git a/srcpkgs/llvm19/patches/compiler-rt-getauxval-aarch64.patch b/srcpkgs/llvm19/patches/compiler-rt-getauxval-aarch64.patch index 027c72e1cfd..aa9f797eb93 100644 --- a/srcpkgs/llvm19/patches/compiler-rt-getauxval-aarch64.patch +++ b/srcpkgs/llvm19/patches/compiler-rt-getauxval-aarch64.patch @@ -1,45 +1,51 @@ -__getauxval is a private symbol in musl, use the public getauxval function - -From 3d36920a76e992c9a723ca4d3bccee8d0bef3251 Mon Sep 17 00:00:00 2001 +From cd634f57c10dedbe4f908889dece2c4460b702c9 Mon Sep 17 00:00:00 2001 From: Daniel Kiss -Date: Mon, 12 Aug 2024 23:05:50 +0200 +Date: Fri, 30 Aug 2024 08:51:08 +0200 Subject: [PATCH] [compiler-rt][AArch64][Android] Use getauxval on Android. + (#102979) __getauxval is a libgcc function that doesn't exist on Android. +Also on Linux let's use getauxval as it is anyway used other places in compiler-rt. --- - compiler-rt/lib/builtins/aarch64/sme-abi-init.c | 13 +++++++++---- - 1 file changed, 9 insertions(+), 4 deletions(-) + .../lib/builtins/aarch64/sme-abi-init.c | 22 +++++++++---------- + 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/compiler-rt/lib/builtins/aarch64/sme-abi-init.c b/compiler-rt/lib/builtins/aarch64/sme-abi-init.c -index b6ee12170d56d..8b6715bd2254c 100644 +index b6ee12170d56d..d3cd8278a5d21 100644 --- a/compiler-rt/lib/builtins/aarch64/sme-abi-init.c +++ b/compiler-rt/lib/builtins/aarch64/sme-abi-init.c -@@ -7,7 +7,8 @@ _Bool __aarch64_has_sme_and_tpidr2_el0; +@@ -7,24 +7,22 @@ _Bool __aarch64_has_sme_and_tpidr2_el0; // We have multiple ways to check that the function has SME, depending on our // target. -// * For Linux we can use __getauxval(). -+// * For Linux/glibc we can use __getauxval(). ++// * For Linux/Glibc we can use getauxval(). +// * For Android we can use getauxval(). // * For newlib we can use __aarch64_sme_accessible(). #if defined(__linux__) -@@ -20,11 +21,15 @@ _Bool __aarch64_has_sme_and_tpidr2_el0; - #define HWCAP2_SME (1 << 23) - #endif -+#ifdef __ANDROID__ -+extern unsigned long int getauxval(unsigned long int); -+#define GETAUXVAL(x) getauxval(x) +-#ifndef AT_HWCAP2 +-#define AT_HWCAP2 26 ++#if defined(__ANDROID__) ++#include ++#elif __has_include() ++#include +#else - extern unsigned long int __getauxval (unsigned long int); -+#define GETAUXVAL(x) __getauxval(x) -+#endif ++#define getauxval(x) 0 + #endif ++#include "../cpu_model/aarch64/hwcap.inc" +-#ifndef HWCAP2_SME +-#define HWCAP2_SME (1 << 23) +-#endif +- +-extern unsigned long int __getauxval (unsigned long int); +- -static _Bool has_sme(void) { - return __getauxval(AT_HWCAP2) & HWCAP2_SME; -} -+static _Bool has_sme(void) { return GETAUXVAL(AT_HWCAP2) & HWCAP2_SME; } ++static _Bool has_sme(void) { return getauxval(AT_HWCAP2) & HWCAP2_SME; } #else // defined(__linux__)