utils/genrandconfig: disable libopenssl without atomics
libopenssl needs atomic or the build will fail (e.g. on sparcv8 without libatomic): ${LDCMD:-/nvmedata/autobuild/instance-7/output-1/host/bin/sparc-buildroot-linux-uclibc-gcc} -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O0 -g2 -g2 -L. \ -o apps/openssl apps/asn1pars.o apps/ca.o apps/ciphers.o apps/cms.o apps/crl.o apps/crl2p7.o apps/dgst.o apps/dhparam.o apps/dsa.o apps/dsaparam.o apps/ec.o apps/ecparam.o apps/enc.o apps/engine.o apps/errstr.o apps/gendsa.o apps/genpkey.o apps/genrsa.o apps/nseq.o apps/ocsp.o apps/openssl.o apps/passwd.o apps/pkcs12.o apps/pkcs7.o apps/pkcs8.o apps/pkey.o apps/pkeyparam.o apps/pkeyutl.o apps/prime.o apps/rand.o apps/rehash.o apps/req.o apps/rsa.o apps/rsautl.o apps/s_client.o apps/s_server.o apps/s_time.o apps/sess_id.o apps/smime.o apps/speed.o apps/spkac.o apps/srp.o apps/storeutl.o apps/ts.o apps/verify.o apps/version.o apps/x509.o \ apps/libapps.a -lssl -lcrypto -ldl /nvmedata/autobuild/instance-7/output-1/host/lib/gcc/sparc-buildroot-linux-uclibc/10.3.0/../../../../sparc-buildroot-linux-uclibc/bin/ld: ./libssl.so: undefined reference to `__atomic_fetch_sub_4' It should be noted that openssl3 has added OPENSSL_DEV_NO_ATOMICS but "this is intended for internal development only, to check the refcounting is properly coded. It should never become a configuration option, hence the name of the macro.":503d4745a1
Atomics are not available in Buildroot if: - architecture is 32 bit and something other than ARM or xtensa, and - GCC < 4.8 or no threads or FLAT. The nothreads case can theoretically happen in many different situations, but in practice nobody disables threads. So the only interesting case is the FLAT case. Since ARM and RISC-V 64 both have atomics intrinsics, that leaves just m68k NOMMU as FLAT. So this is truly a corner case. The proper solution would be to patch GCC to also provide libatomic in those cases. - For nothreads, atomics are in fact not needed, so libatomic can simply be implemented as stubs. - For FLAT, it's probably just a matter of having a match to uclinux in libatomic/configure.tgt. Again, though, this happens only in such niche cases that it's not worth working on it. Fixes: - http://autobuild.buildroot.org/results/bce526d538f43a541fdfbc0c9b4a7cecebbbc539 Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com> Signed-off-by: Arnout Vandecappelle <arnout@mind.be> (cherry picked from commitaf494d92d3
) Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
This commit is contained in:
parent
d18c6c4a42
commit
3d60f6684c
@ -247,6 +247,11 @@ def fixup_config(sysinfo, configfile):
|
||||
if 'BR2_ARM_CPU_ARMV7M=y\n' in configlines and \
|
||||
'BR2_PACKAGE_LIBFFI=y\n' in configlines:
|
||||
return False
|
||||
# libopenssl needs atomic, but propagating this dependency in
|
||||
# Buildroot is really too much work, so we handle this here.
|
||||
if 'BR2_PACKAGE_LIBOPENSSL=y\n' in configlines and \
|
||||
not 'BR2_TOOLCHAIN_HAS_ATOMIC=y\n' in configlines:
|
||||
return False
|
||||
if 'BR2_PACKAGE_SUNXI_BOARDS=y\n' in configlines:
|
||||
configlines.remove('BR2_PACKAGE_SUNXI_BOARDS_FEX_FILE=""\n')
|
||||
configlines.append('BR2_PACKAGE_SUNXI_BOARDS_FEX_FILE="a10/hackberry.fex"\n')
|
||||
|
Loading…
Reference in New Issue
Block a user