arm: libbacktrace: Check if the compiler supports __sync atomics

Older versions of the Arm architecture lack support for __sync
operations directly in hardware and require calls into appropriate
operating-system hooks.  But such hooks obviously don't exist in a
freestanding environment.

Consquently, it is incorrect to assume during configure that such
functions will exist and we need a configure-time check to determine
whether or not these routines will work.

libbacktrace:

	* configure.ac: Always check if the compiler supports __sync
	operations.
	* configure: Regenerated.
This commit is contained in:
Richard Earnshaw
2025-01-27 13:52:05 +00:00
committed by Ian Lance Taylor
parent 1db85642e3
commit 5da31b9952
2 changed files with 33 additions and 0 deletions

View File

@@ -189,6 +189,16 @@ AC_CACHE_CHECK([__sync extensions],
[if test -n "${with_target_subdir}"; then
case "${host}" in
hppa*-*-hpux*) libbacktrace_cv_sys_sync=no ;;
arm*-*-eabi*)
# Older versions of the Arm architecture lack the necessary instructions
# for these constructs, so check whether we can use them.
AC_LINK_IFELSE(
[AC_LANG_PROGRAM([int i;],
[__sync_bool_compare_and_swap (&i, i, i);
__sync_lock_test_and_set (&i, 1);
__sync_lock_release (&i);])],
[libbacktrace_cv_sys_sync=yes],
[libbacktrace_cv_sys_sync=no]);;
*) libbacktrace_cv_sys_sync=yes ;;
esac
else