[libunwind] [libunwind] Add test SME test for OpenBSD / FreeBSD (PR #193148)
via cfe-commits
cfe-commits at lists.llvm.org
Mon Apr 20 23:50:28 PDT 2026
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-libunwind
Author: Brad Smith (brad0)
<details>
<summary>Changes</summary>
Follow up to 588451c160c34b888ced1c3d9263d361df22f757 to
add an SME test for OpenBSD and FreeBSD.
---
Full diff: https://github.com/llvm/llvm-project/pull/193148.diff
5 Files Affected:
- (modified) libunwind/test/CMakeLists.txt (+2)
- (modified) libunwind/test/aarch64_za_unwind.pass.cpp (+15-2)
- (modified) libunwind/test/configs/llvm-libunwind-merged.cfg.in (+6)
- (modified) libunwind/test/configs/llvm-libunwind-shared.cfg.in (+6)
- (modified) libunwind/test/configs/llvm-libunwind-static.cfg.in (+6)
``````````diff
diff --git a/libunwind/test/CMakeLists.txt b/libunwind/test/CMakeLists.txt
index 2559ab34f9d5b..28cf2acd02aa9 100644
--- a/libunwind/test/CMakeLists.txt
+++ b/libunwind/test/CMakeLists.txt
@@ -25,6 +25,8 @@ foreach(target IN LISTS libunwind_test_suite_install_targets)
add_dependencies(unwind-test-depends libunwind-test-suite-install-${target})
endforeach()
+pythonize_bool(HAVE_GETAUXVAL)
+pythonize_bool(HAVE_ELF_AUX_INFO)
pythonize_bool(LIBUNWIND_ENABLE_CET)
pythonize_bool(LIBUNWIND_ENABLE_GCS)
pythonize_bool(LIBUNWIND_ENABLE_THREADS)
diff --git a/libunwind/test/aarch64_za_unwind.pass.cpp b/libunwind/test/aarch64_za_unwind.pass.cpp
index a8f616ad17677..84be24d7d2c0a 100644
--- a/libunwind/test/aarch64_za_unwind.pass.cpp
+++ b/libunwind/test/aarch64_za_unwind.pass.cpp
@@ -16,7 +16,8 @@
#include <string.h>
#if defined(__APPLE__)
#include <sys/sysctl.h>
-#else
+#endif
+#if defined(_LIBUNWIND_HAVE_GETAUXVAL) || defined(_LIBUNWIND_HAVE_ELF_AUX_INFO)
#include <sys/auxv.h>
#endif
@@ -32,12 +33,24 @@ static bool checkHasSME() {
return false;
return has_sme != 0;
}
-#else
+#elif defined(_LIBUNWIND_HAVE_GETAUXVAL)
static bool checkHasSME() {
constexpr int hwcap2_sme = (1 << 23);
unsigned long hwcap2 = getauxval(AT_HWCAP2);
return (hwcap2 & hwcap2_sme) != 0;
}
+#elif defined(_LIBUNWIND_HAVE_ELF_AUX_INFO)
+static bool checkHasSME() {
+ constexpr int hwcap2_sme = (1 << 23);
+ unsigned long hwcap2 = 0;
+ elf_aux_info(AT_HWCAP2, &hwcap2, sizeof(hwcap2));
+ return (hwcap2 & hwcap2_sme) != 0;
+}
+#else
+static bool checkHasSME() {
+ // TODO: Support other platforms.
+ return false;
+}
#endif
struct TPIDR2Block {
diff --git a/libunwind/test/configs/llvm-libunwind-merged.cfg.in b/libunwind/test/configs/llvm-libunwind-merged.cfg.in
index 34950f6ea2936..1ae1b515bff4d 100644
--- a/libunwind/test/configs/llvm-libunwind-merged.cfg.in
+++ b/libunwind/test/configs/llvm-libunwind-merged.cfg.in
@@ -8,6 +8,12 @@ lit_config.load_config(config, '@CMAKE_CURRENT_BINARY_DIR@/cmake-bridge.cfg')
compile_flags = []
link_flags = []
+if @HAVE_GETAUXVAL@:
+ compile_flags.append('-D_LIBUNWIND_HAVE_GETAUXVAL')
+
+if @HAVE_ELF_AUX_INFO@:
+ compile_flags.append('-D_LIBUNWIND_HAVE_ELF_AUX_INFO')
+
if @LIBUNWIND_ENABLE_CET@:
compile_flags.append('-fcf-protection=full')
diff --git a/libunwind/test/configs/llvm-libunwind-shared.cfg.in b/libunwind/test/configs/llvm-libunwind-shared.cfg.in
index 61d6b61cbae29..84af348a5c6cb 100644
--- a/libunwind/test/configs/llvm-libunwind-shared.cfg.in
+++ b/libunwind/test/configs/llvm-libunwind-shared.cfg.in
@@ -7,6 +7,12 @@ lit_config.load_config(config, '@CMAKE_CURRENT_BINARY_DIR@/cmake-bridge.cfg')
compile_flags = []
link_flags = []
+if @HAVE_GETAUXVAL@:
+ compile_flags.append('-D_LIBUNWIND_HAVE_GETAUXVAL')
+
+if @HAVE_ELF_AUX_INFO@:
+ compile_flags.append('-D_LIBUNWIND_HAVE_ELF_AUX_INFO')
+
if @LIBUNWIND_ENABLE_CET@:
compile_flags.append('-fcf-protection=full')
diff --git a/libunwind/test/configs/llvm-libunwind-static.cfg.in b/libunwind/test/configs/llvm-libunwind-static.cfg.in
index 194fa4f18f0e5..7e1fb5395c57a 100644
--- a/libunwind/test/configs/llvm-libunwind-static.cfg.in
+++ b/libunwind/test/configs/llvm-libunwind-static.cfg.in
@@ -10,6 +10,12 @@ link_flags = []
if @LIBUNWIND_ENABLE_THREADS@:
link_flags.append('-lpthread')
+if @HAVE_GETAUXVAL@:
+ compile_flags.append('-D_LIBUNWIND_HAVE_GETAUXVAL')
+
+if @HAVE_ELF_AUX_INFO@:
+ compile_flags.append('-D_LIBUNWIND_HAVE_ELF_AUX_INFO')
+
if @LIBUNWIND_ENABLE_CET@:
compile_flags.append('-fcf-protection=full')
``````````
</details>
https://github.com/llvm/llvm-project/pull/193148
More information about the cfe-commits
mailing list