[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