toolchain/Config.in: update BR2_TOOLCHAIN_HAS_LIBATOMIC dependencies
Update BR2_TOOLCHAIN_HAS_LIBATOMIC dependencies to avoid the following
build failure with libopenssl and
BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7M_UCLIBC_STABLE:
/home/buildroot/autobuild/run/instance-2/output-1/host/opt/ext-toolchain/arm-buildroot-uclinux-uclibcgnueabi/bin/ld.real: ./libcrypto.a(libcrypto-lib-threads_pthread.o): in function `CRYPTO_atomic_or':
threads_pthread.c:(.text+0xfa): undefined reference to `__atomic_is_lock_free'
libatomic is available since gcc 4.8, when thread support is enabled.
However, the gcc logic in libatomic/configure.tgt does not recognize
"uclinux" as a valid OS part of the target tuple, and therefore it
does not build libatomic. The "uclinux" part of the tuple is used by
Buildroot when BR2_BINFMT_FLAT=y [1]. This broken logic has only been
fixed for arm since gcc 10.1.0 [2].
Indeed, bootlin armv7m is an uclibc toolchain compiled with atomic
support through libatomic.
[1] https://git.buildroot.net/buildroot/commit/?id=b3d1fb26dcadd8c570e2c415ce05398ecc810b32
[2] https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=b1e21e5a5d19b436f948710e09157c5b3244f541
Fixes:
- http://autobuild.buildroot.org/results/d25e898f9715bf6a21284807361a57735a7a2e1d
- http://autobuild.buildroot.org/results/e37ed5ad6ba41d610bffe9c234f699e203ef5069
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
(cherry picked from commit 8cb0f6e011
)
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
This commit is contained in:
parent
51dc052d1d
commit
a270097247
@ -879,15 +879,19 @@ config BR2_TOOLCHAIN_HAS_SYNC_8
|
||||
default y if BR2_TOOLCHAIN_ARM_HAS_SYNC_8
|
||||
default y if BR2_TOOLCHAIN_X86_HAS_SYNC_8
|
||||
|
||||
# libatomic is available since gcc 4.8, when thread support is
|
||||
# enabled. Also, libatomic doesn't recognize "uclinux" as a valid OS
|
||||
# part of the tuple, and is therefore not build on uclinux targets,
|
||||
# which is why BR2_BINFMT_FLAT configurations are excluded.
|
||||
# libatomic is available since gcc 4.8, when thread support is enabled.
|
||||
# However, the gcc logic in libatomic/configure.tgt does not recognize
|
||||
# "uclinux" as a valid OS part of the target tuple, and therefore it
|
||||
# does not build libatomic. The "uclinux" part of the tuple is used by
|
||||
# Buildroot when BR2_BINFMT_FLAT=y. This broken logic has only been
|
||||
# fixed for arm since gcc 10.1.0.
|
||||
config BR2_TOOLCHAIN_HAS_LIBATOMIC
|
||||
bool
|
||||
default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 && \
|
||||
BR2_TOOLCHAIN_HAS_THREADS && \
|
||||
!BR2_BINFMT_FLAT
|
||||
default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
|
||||
depends on BR2_TOOLCHAIN_HAS_THREADS
|
||||
depends on BR2_BINFMT_ELF || \
|
||||
(BR2_BINFMT_FLAT && BR2_arm && \
|
||||
BR2_TOOLCHAIN_GCC_AT_LEAST_10)
|
||||
|
||||
# __atomic intrinsics are available:
|
||||
# - with gcc 4.8, either through built-ins or libatomic, on all
|
||||
|
Loading…
Reference in New Issue
Block a user