From: Michael Jeanson Date: Tue, 7 Dec 2021 19:42:26 +0000 (-0500) Subject: fix: properly detect 'cmpxchg' on x86-32 X-Git-Tag: v0.14.0~41 X-Git-Url: https://git.lttng.org/?a=commitdiff_plain;h=101389e4df4a9661d22d9e9e7e15a7284ef06d0d;hp=101389e4df4a9661d22d9e9e7e15a7284ef06d0d;p=userspace-rcu.git fix: properly detect 'cmpxchg' on x86-32 We wrongly assumed that on x86-32 when '__i386__' is defined but none of '__i486__', '__i586__' or '__i686__' that the target arch is a literal i386 cpu without the cmpxchg instructions. However, when building with '-march=core2' we get '__i386__' but none of the others even if the arch is newer than an i686. Change the compat code to use the '__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4' builtin define to detect an x86-32 system without the cmpxchg instructions. Since this builtin define was introduced in GCC 4.3 and Clang 3.3, building with older compilers on any x86-32 system will enable the compat layer regardless of the availability of the instructions. Change-Id: I8329431e55d778405b2ca7007d90c2c6e5cdd426 Signed-off-by: Michael Jeanson Signed-off-by: Mathieu Desnoyers ---