[compiler-rt] [builtins][AArch64] Clean up the sys/auxv.h header handling (PR #161751)

Brad Smith via llvm-commits llvm-commits at lists.llvm.org
Fri Oct 3 23:37:58 PDT 2025


https://github.com/brad0 updated https://github.com/llvm/llvm-project/pull/161751

>From 4bba0a7c24b879b78738f95bee3b7a81eb2c7ef7 Mon Sep 17 00:00:00 2001
From: Brad Smith <brad at comstyle.com>
Date: Thu, 2 Oct 2025 18:36:50 -0400
Subject: [PATCH] [builtins][AArch64] Clean up the sys/auxv.h header handling

glibc 2.17 added AArch64 support and already had getauxval().
---
 compiler-rt/lib/builtins/cpu_model/aarch64.c          | 11 +++++++----
 compiler-rt/lib/builtins/cpu_model/aarch64/hwcap.inc  |  5 -----
 .../cpu_model/aarch64/lse_atomics/android.inc         |  1 -
 .../cpu_model/aarch64/lse_atomics/getauxval.inc       |  2 --
 4 files changed, 7 insertions(+), 12 deletions(-)

diff --git a/compiler-rt/lib/builtins/cpu_model/aarch64.c b/compiler-rt/lib/builtins/cpu_model/aarch64.c
index 8af736d0ffe93..119d18b8df8d7 100644
--- a/compiler-rt/lib/builtins/cpu_model/aarch64.c
+++ b/compiler-rt/lib/builtins/cpu_model/aarch64.c
@@ -34,19 +34,21 @@ typedef struct __ifunc_arg_t {
 _Bool __aarch64_have_lse_atomics
     __attribute__((visibility("hidden"), nocommon)) = false;
 
+// The formatter wants to re-order these includes, but doing so is incorrect:
+// clang-format off
 #if defined(__FreeBSD__) || defined(__OpenBSD__)
-// clang-format off: should not reorder sys/auxv.h alphabetically
 #include <sys/auxv.h>
-// clang-format on
 #include "aarch64/hwcap.inc"
 #include "aarch64/lse_atomics/elf_aux_info.inc"
 #elif defined(__Fuchsia__)
 #include "aarch64/hwcap.inc"
 #include "aarch64/lse_atomics/fuchsia.inc"
 #elif defined(__ANDROID__)
+#include <sys/auxv.h>
 #include "aarch64/hwcap.inc"
 #include "aarch64/lse_atomics/android.inc"
-#elif defined(__linux__) && __has_include(<sys/auxv.h>)
+#elif defined(__linux__)
+#include <sys/auxv.h>
 #include "aarch64/hwcap.inc"
 #include "aarch64/lse_atomics/getauxval.inc"
 #elif defined(_WIN32)
@@ -54,6 +56,7 @@ _Bool __aarch64_have_lse_atomics
 #else
 // When unimplemented, we leave __aarch64_have_lse_atomics initialized to false.
 #endif
+// clang-format on
 
 #if !defined(DISABLE_AARCH64_FMV)
 
@@ -76,7 +79,7 @@ struct {
 #elif defined(__ANDROID__)
 #include "aarch64/fmv/hwcap.inc"
 #include "aarch64/fmv/android.inc"
-#elif defined(__linux__) && __has_include(<sys/auxv.h>)
+#elif defined(__linux__)
 #include "aarch64/fmv/hwcap.inc"
 #include "aarch64/fmv/getauxval.inc"
 #elif defined(_WIN32)
diff --git a/compiler-rt/lib/builtins/cpu_model/aarch64/hwcap.inc b/compiler-rt/lib/builtins/cpu_model/aarch64/hwcap.inc
index 2f44e9e5f635e..a77fde39de99e 100644
--- a/compiler-rt/lib/builtins/cpu_model/aarch64/hwcap.inc
+++ b/compiler-rt/lib/builtins/cpu_model/aarch64/hwcap.inc
@@ -1,8 +1,3 @@
-#if __has_include(<sys/hwcap.h>)
-#include <sys/hwcap.h>
-#define HAVE_SYS_HWCAP_H
-#endif
-
 #ifndef _IFUNC_ARG_HWCAP
 #define _IFUNC_ARG_HWCAP (1ULL << 62)
 #endif
diff --git a/compiler-rt/lib/builtins/cpu_model/aarch64/lse_atomics/android.inc b/compiler-rt/lib/builtins/cpu_model/aarch64/lse_atomics/android.inc
index 94bf64a5b0b0f..8d8a9133e6770 100644
--- a/compiler-rt/lib/builtins/cpu_model/aarch64/lse_atomics/android.inc
+++ b/compiler-rt/lib/builtins/cpu_model/aarch64/lse_atomics/android.inc
@@ -1,5 +1,4 @@
 #include <string.h>
-#include <sys/auxv.h>
 #include <sys/system_properties.h>
 
 static bool __isExynos9810(void) {
diff --git a/compiler-rt/lib/builtins/cpu_model/aarch64/lse_atomics/getauxval.inc b/compiler-rt/lib/builtins/cpu_model/aarch64/lse_atomics/getauxval.inc
index 6642c1f5b60b3..670aba5d6899c 100644
--- a/compiler-rt/lib/builtins/cpu_model/aarch64/lse_atomics/getauxval.inc
+++ b/compiler-rt/lib/builtins/cpu_model/aarch64/lse_atomics/getauxval.inc
@@ -1,5 +1,3 @@
-#include <sys/auxv.h>
-
 static void CONSTRUCTOR_ATTRIBUTE init_have_lse_atomics(void) {
   unsigned long hwcap = getauxval(AT_HWCAP);
   __aarch64_have_lse_atomics = (hwcap & HWCAP_ATOMICS) != 0;



More information about the llvm-commits mailing list