From: Ross Burton Date: Fri, 25 Apr 2025 11:43:20 +0000 (+0100) Subject: libunwind: check if libatomic is needed at configure time X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=797e645dbcb8a05a2514afc2d5bc2b0b661a0d0e;p=thirdparty%2Fopenembedded%2Fopenembedded-core-contrib.git libunwind: check if libatomic is needed at configure time Backport a patch submitted upstream to conditionally link explicitly to libatomic, so we don't need to that in the recipe. Signed-off-by: Ross Burton Signed-off-by: Richard Purdie --- diff --git a/meta/recipes-support/libunwind/libunwind/libatomic.patch b/meta/recipes-support/libunwind/libunwind/libatomic.patch new file mode 100644 index 00000000000..f39e92f2eef --- /dev/null +++ b/meta/recipes-support/libunwind/libunwind/libatomic.patch @@ -0,0 +1,38 @@ +From d6a0d8ce07c761e51b9dc7c5d16a9b06c3e93560 Mon Sep 17 00:00:00 2001 +From: Stephen Webb +Date: Mon, 18 Mar 2024 10:22:26 -0400 +Subject: [PATCH] configure.ac: detect if -latomic is required + +Some OS runtimes require libatomic be linked in separately to get +standard atomic operations to work. Try to detect that at configure +time. + +Upstream-Status: Submitted [https://github.com/libunwind/libunwind/pull/732/] +Signed-off-by: Ross Burton +--- + configure.ac | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +diff --git a/configure.ac b/configure.ac +index 758a27d19..d0ef5f3d9 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -94,6 +94,18 @@ dnl Checks for library functions. + AC_CHECK_FUNCS(dl_iterate_phdr dl_phdr_removals_counter dlmodinfo getunwind \ + ttrace mincore pipe2 sigaltstack execvpe) + ++AC_MSG_CHECKING([if -latomic is required]) ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([[ ++ #include ++ atomic_bool ab_ = 0; atomic_llong al_ = 0; ++ ]],[[ ++ atomic_load(&ab_); atomic_load(&al_); ++ ]])], ++ [use_libatomic=no], ++ [use_libatomic=yes]) ++AC_MSG_RESULT([$use_libatomic]) ++AS_IF([test "$use_libatomic" = "yes"],[LIBS="-latomic $LIBS"]) ++ + AC_MSG_CHECKING([if building with AltiVec]) + AC_COMPILE_IFELSE([AC_LANG_SOURCE([[ + #ifndef __ALTIVEC__ diff --git a/meta/recipes-support/libunwind/libunwind_1.8.1.bb b/meta/recipes-support/libunwind/libunwind_1.8.1.bb index ee4a8401ba6..b2c592b4350 100644 --- a/meta/recipes-support/libunwind/libunwind_1.8.1.bb +++ b/meta/recipes-support/libunwind/libunwind_1.8.1.bb @@ -13,6 +13,7 @@ SRC_URI = "${GITHUB_BASE_URI}/download/v${PV}/${BP}.tar.gz \ file://0003-Fixed-miscompilation-of-unw_getcontext-on-ARM.patch \ file://0004-Rework-inline-aarch64-as-for-setcontext.patch \ file://0005-Handle-musl-on-PPC32.patch \ + file://libatomic.patch \ " SRC_URI[sha256sum] = "ddf0e32dd5fafe5283198d37e4bf9decf7ba1770b6e7e006c33e6df79e6a6157" @@ -33,7 +34,6 @@ ARM_INSTRUCTION_SET:armv4 = "arm" ARM_INSTRUCTION_SET:armv5 = "arm" LDFLAGS += "-Wl,-z,relro,-z,now" -LDFLAGS:append:powerpc:libc-musl = " -latomic" SECURITY_LDFLAGS:append:libc-musl = " -lssp_nonshared" CACHED_CONFIGUREVARS:append:libc-musl = " LDFLAGS='${LDFLAGS} -lucontext'"