mirror of
https://gitlab.com/buildroot.org/buildroot.git
synced 2026-09-10 00:04:06 -09:00
5f8d0b78ec32bd35b8a38812c71f33529a2723cb
This patch fixes a build error with OpenSSL-enabled libcurl which was detected by the Gitlab pipelines: checking for openssl options with pkg-config... found configure: pkg-config: SSL_LIBS: "-lssl -lcrypto -pthread" configure: pkg-config: SSL_LDFLAGS: "-L/builds/bkuhls/buildroot/br-test-pkg/bootlin-m68k-5208-uclibc/host/bin/../m68k-buildroot-uclinux-uclibc/sysroot/usr/lib" configure: pkg-config: SSL_CPPFLAGS: "" checking for HMAC_Update in -lcrypto... no checking for HMAC_Init_ex in -lcrypto... no checking OpenSSL linking with -ldl... no checking OpenSSL linking with -ldl and -lpthread... no checking for SSL_set_quic_use_legacy_codepoint... no checking for SSL_set_quic_tls_cbs... no configure: OpenSSL version does not speak any known QUIC API configure: OPT_OPENSSL: /builds/bkuhls/buildroot/br-test-pkg/bootlin-m68k-5208-uclibc/host/m68k-buildroot-uclinux-uclibc/sysroot/usr configure: OPENSSL_ENABLED: configure: error: --with-openssl was given but OpenSSL could not be detected make[1]: *** [package/pkg-generic.mk:263: /builds/bkuhls/buildroot/br-test-pkg/bootlin-m68k-5208-uclibc/build/libcurl-8.21.0/.stamp_configured] Error 1 Although OpenSSL was found using pkg-config the build tests fail. A local build shows the concrete error in config.log, for example: configure:27577: checking for HMAC_Update in -lcrypto configure:27599: /home/bernd/buildroot/output/host/bin/m68k-linux-gcc -o conftest -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -fno-dwarf2-cfi-asm -Wl,-elf2flt=-r -static -Werror-implicit-function-declaration -Wno-system-headers -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -Wl,-elf2flt=-r -static -L/home/bernd/buildroot/output/host/bin/../m68k-buildroot-uclinux-uclibc/sysroot/usr/lib -L/home/bernd/buildroot/output/host/bin/../m68k-buildroot-uclinux-uclibc/sysroot/usr/lib conftest.c -lcrypto -lssl -lcrypto -lz -pthread -lz >&5 /home/bernd/buildroot/output/host/opt/ext-toolchain/m68k-buildroot-uclinux-uclibc/bin/ld.real: /home/bernd/buildroot/output/host/bin/../m68k-buildroot-uclinux-uclibc/sysroot/usr/lib/libcrypto.a(libcrypto-lib-threads_pthread.o): in function `ossl_rcu_read_lock': threads_pthread.c:(.text+0xa4): undefined reference to `__atomic_fetch_add_8' This error occurs many times for various atomic operations: $ grep "undefined reference to \`__atomic" output/build/libcurl-8.20.0/config.log | sort -u | grep -v real threads_pthread.c:(.text+0x28a): undefined reference to `__atomic_fetch_sub_8' threads_pthread.c:(.text+0x3b4): undefined reference to `__atomic_fetch_add_8' threads_pthread.c:(.text+0x9c8): undefined reference to `__atomic_is_lock_free' threads_pthread.c:(.text+0xa4): undefined reference to `__atomic_fetch_add_8' threads_pthread.c:(.text+0xa9c): undefined reference to `__atomic_is_lock_free' threads_pthread.c:(.text+0xb66): undefined reference to `__atomic_is_lock_free' threads_pthread.c:(.text+0xc30): undefined reference to `__atomic_is_lock_free' threads_pthread.c:(.text+0xcdc): undefined reference to `__atomic_is_lock_free' The build error can be reproduced with the current buildroot tree using this defconfig: BR2_m68k=y BR2_m68k_cf5208=y BR2_TOOLCHAIN_EXTERNAL=y BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_M68K_COLDFIRE_UCLIBC_STABLE=y BR2_PACKAGE_OPENSSL=y BR2_PACKAGE_LIBCURL=y Although the toolchain lacks atomics support $ grep ATOMIC .config $ it emits atomic-related defines, for example: $ echo | output/host/bin/m68k-linux-gcc -dM -E - | grep __ATOMIC_ACQ_REL #define __ATOMIC_ACQ_REL 4 $ This specific define __ATOMIC_ACQ_REL is used in OpenSSL to enable atomic support at various places: https://github.com/openssl/openssl/blob/openssl-3.6.3/crypto/threads_pthread.c causing the build errors we see with the mentioned defconfig. To fix the problem we use an OpenSSL-provided define to forcefully disable the usage of atomic intrinsics. The misdetection of atomic intrinsics for m68k coldfire is not a new problem: https://lists.buildroot.org/pipermail/buildroot/2017-May/180841.html https://lists.buildroot.org/pipermail/buildroot/2026-May/803110.html Signed-off-by: Bernd Kuhls <bernd@kuhls.net> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
…
…
…
…
…
…
…
…
Buildroot is a simple, efficient and easy-to-use tool to generate embedded Linux systems through cross-compilation. The documentation can be found in docs/manual. You can generate a text document with 'make manual-text' and read output/docs/manual/manual.text. Online documentation can be found at https://buildroot.org/docs.html To build and use the buildroot stuff, do the following: 1) run 'make menuconfig' 2) select the target architecture and the packages you wish to compile 3) run 'make' 4) wait while it compiles 5) find the kernel, bootloader, root filesystem, etc. in output/images You do not need to be root to build or run buildroot. Have fun! Buildroot comes with a basic configuration for a number of boards. Run 'make list-defconfigs' to view the list of provided configurations. Please feed suggestions, bug reports, insults, and bribes back to the buildroot mailing list: buildroot@buildroot.org You can also find us on #buildroot on OFTC IRC. If you would like to contribute patches, please read https://buildroot.org/manual.html#submitting-patches
Description
Languages
Makefile
62.5%
Python
19%
C
8.5%
Shell
6.1%
PHP
1.4%
Other
2.1%