Commit 54ba73ef authored by Nicolas Boichat's avatar Nicolas Boichat Committed by Matt Turner
Browse files Fix -latomic test

When compiling with LLVM 6.0 on x86 (32-bit) for Android, the test
fails to detect that -latomic is actually required, as the atomic
call is inlined.

In the code itself (src/util/disk_cache.c), we see this pattern:
p_atomic_add(cache->size, - (uint64_t)size);
where cache->size is an uint64_t *, and results in the following
link time error without -latomic:
src/util/disk_cache.c:628: error: undefined reference to '__atomic_fetch_add_8'

Fix the configure/meson test to replicate this pattern, which then
correctly realizes the need for -latomic.
Reviewed-by: default avatarMatt Turner <>
Signed-off-by: default avatarNicolas Boichat <>
parent 8b519075
......@@ -445,9 +445,11 @@ if test "x$GCC_ATOMIC_BUILTINS_SUPPORTED" = x1; then
AC_MSG_CHECKING(whether -latomic is needed)
#include <stdint.h>
uint64_t v;
struct {
uint64_t *v;
} x;
int main() {
return (int)__atomic_load_n(&v, __ATOMIC_ACQUIRE);
return (int)__atomic_load_n(x.v, __ATOMIC_ACQUIRE);
......@@ -849,8 +849,10 @@ if cc.compiles('int main() { int n; return __atomic_load_n(&n, __ATOMIC_ACQUIRE)
# as ARM.
if not cc.links('''#include <stdint.h>
int main() {
uint64_t n;
return (int)__atomic_load_n(&n, __ATOMIC_ACQUIRE);
struct {
uint64_t *v;
} x;
return (int)__atomic_load_n(x.v, __ATOMIC_ACQUIRE);
name : 'GCC atomic builtins required -latomic')
dep_atomic = cc.find_library('atomic')
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment