https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90392
Bug ID: 90392 Summary: Assertion failure in ldlang.c:6868 when compiling with -flto Product: gcc Version: 9.1.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: lto Assignee: unassigned at gcc dot gnu.org Reporter: ohaiziejohwahkeezuoz at xff dot cz CC: marxin at gcc dot gnu.org Target Milestone: --- Hello, I'm getting an assertion failure in ld when compiling with -flto. The compiler is built with the exact same flags as in this bug: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89260 The assertion that fails is in ldlang.c:6868: The only thing I've noticed that seems weird is that in gcc.c there is this (notice -fresolution=%u.res): #define LINK_PLUGIN_SPEC \ "%{" PLUGIN_COND": \ -plugin %(linker_plugin_file) \ -plugin-opt=%(lto_wrapper) \ -plugin-opt=-fresolution=%u.res \ %{flinker-output=*:-plugin-opt=-linker-output-known} \ %{!nostdlib:%{!nodefaultlibs:%:pass-through-libs(%(link_gcc_c_sequence))}} \ }" PLUGIN_COND_CLOSE But gcc produces this for me: -plugin-opt=-fresolution=-ldl.res This seems intuitively wrong, and looks like some memory corruption/mishandling. %u should produce some randomly named temporary file, instead it seems to generate output using some other part of the command line. In this case it takes the value from the '-ldl' argument. The wrong value is stable across multiple invocations. It also causes issues in parallel builds because multiple parallel invocations of gcc link step will overwrite and try to re-use the same -ldl.res file. Full output of the compilation of openssl, where this hapens for me: Convert string '/workspace/megous.com/apps-c/static-deps/toolchains/aarch64-linux-musl/libexec/gcc/aarch64-linux-musl/9.0.1/:/workspace/megous.com/apps-c/static-deps/toolchains/aarch64-linux-musl/lib exec/gcc/aarch64-linux-musl/9.0.1/:/workspace/megous.com/apps-c/static-deps/toolchains/aarch64-linux-musl/libexec/gcc/aarch64-linux-musl/:/workspace/megous.com/apps-c/static-deps/toolchains/aarch64-l inux-musl/lib/gcc/aarch64-linux-musl/9.0.1/:/workspace/megous.com/apps-c/static-deps/toolchains/aarch64-linux-musl/lib/gcc/aarch64-linux-musl/:/workspace/megous.com/apps-c/static-deps/toolchains/aarc h64-linux-musl/lib/gcc/aarch64-linux-musl/9.0.1/../../../../aarch64-linux-musl/bin/' into prefixes, separator = ':' - add prefix: /workspace/megous.com/apps-c/static-deps/toolchains/aarch64-linux-musl/libexec/gcc/aarch64-linux-musl/9.0.1/ - add prefix: /workspace/megous.com/apps-c/static-deps/toolchains/aarch64-linux-musl/libexec/gcc/aarch64-linux-musl/9.0.1/ - add prefix: /workspace/megous.com/apps-c/static-deps/toolchains/aarch64-linux-musl/libexec/gcc/aarch64-linux-musl/ - add prefix: /workspace/megous.com/apps-c/static-deps/toolchains/aarch64-linux-musl/lib/gcc/aarch64-linux-musl/9.0.1/ - add prefix: /workspace/megous.com/apps-c/static-deps/toolchains/aarch64-linux-musl/lib/gcc/aarch64-linux-musl/ - add prefix: /workspace/megous.com/apps-c/static-deps/toolchains/aarch64-linux-musl/lib/gcc/aarch64-linux-musl/9.0.1/../../../../aarch64-linux-musl/bin/ Convert string '/workspace/megous.com/apps-c/static-deps/toolchains/aarch64-linux-musl/bin:/bin' into prefixes, separator = ':' - add prefix: /workspace/megous.com/apps-c/static-deps/toolchains/aarch64-linux-musl/bin/ - add prefix: /bin/ Looking for 'real-ld' Looking for 'collect-ld' Looking for 'ld' Looking for 'gnm' Looking for 'aarch64-linux-musl-gnm' Looking for 'nm' Looking for 'gstrip' Looking for 'aarch64-linux-musl-gstrip' Looking for 'strip' Looking for 'aarch64-linux-musl-gcc' Looking for 'aarch64-linux-musl-gcc' collect2 version 9.0.1 20190430 (prerelease) ld_file_name = /workspace/megous.com/apps-c/static-deps/toolchains/aarch64-linux-musl/lib/gcc/aarch64-linux-musl/9.0.1/../../../../aarch64-linux-musl/bin/ld c_file_name = /workspace/megous.com/apps-c/static-deps/toolchains/aarch64-linux-musl/bin/aarch64-linux-musl-gcc nm_file_name = /workspace/megous.com/apps-c/static-deps/toolchains/aarch64-linux-musl/lib/gcc/aarch64-linux-musl/9.0.1/../../../../aarch64-linux-musl/bin/nm strip_file_name = /workspace/megous.com/apps-c/static-deps/toolchains/aarch64-linux-musl/lib/gcc/aarch64-linux-musl/9.0.1/../../../../aarch64-linux-musl/bin/strip c_file = apps/openssl.cdtor.c o_file = apps/openssl.cdtor.o COLLECT_GCC_OPTIONS = '-pthread' '-Wall' '-O3' '-g0' '-Os' '-Wimplicit-fallthrough=0' '-g0' '-Os' '-fomit-frame-pointer' '-Wimplicit-fallthrough=0' '-flto' '-save-temps' '-L.' '-L/workspace/megous.co m/apps-c/static-deps/output/arm64-lto/sys/usr/lib' '-static' '-o' 'apps/openssl' '-pthread' '-mlittle-endian' '-mabi=lp64' COLLECT_GCC = aarch64-linux-musl-gcc COMPILER_PATH = /workspace/megous.com/apps-c/static-deps/toolchains/aarch64-linux-musl/libexec/gcc/aarch64-linux-musl/9.0.1/:/workspace/megous.com/apps-c/static-deps/toolchains/aarch64-linux-mu sl/libexec/gcc/aarch64-linux-musl/9.0.1/:/workspace/megous.com/apps-c/static-deps/toolchains/aarch64-linux-musl/libexec/gcc/aarch64-linux-musl/:/workspace/megous.com/apps-c/static-deps/toolchains/aar ch64-linux-musl/lib/gcc/aarch64-linux-musl/9.0.1/:/workspace/megous.com/apps-c/static-deps/toolchains/aarch64-linux-musl/lib/gcc/aarch64-linux-musl/:/workspace/megous.com/apps-c/static-deps/toolchain s/aarch64-linux-musl/lib/gcc/aarch64-linux-musl/9.0.1/../../../../aarch64-linux-musl/bin/ LIBRARY_PATH = /workspace/megous.com/apps-c/static-deps/toolchains/aarch64-linux-musl/lib/gcc/aarch64-linux-musl/9.0.1/:/workspace/megous.com/apps-c/static-deps/toolchains/aarch64-linux-musl/l ib/gcc/aarch64-linux-musl/9.0.1/../../../../aarch64-linux-musl/lib/../lib64/:/workspace/megous.com/apps-c/static-deps/toolchains/aarch64-linux-musl/lib/gcc/aarch64-linux-musl/9.0.1/../../../../aarch6 4-linux-musl/lib/ /workspace/megous.com/apps-c/static-deps/toolchains/aarch64-linux-musl/lib/gcc/aarch64-linux-musl/9.0.1/../../../../aarch64-linux-musl/bin/ld -plugin /workspace/megous.com/apps-c/static-deps/toolchai ns/aarch64-linux-musl/libexec/gcc/aarch64-linux-musl/9.0.1/liblto_plugin.so -plugin-opt=/workspace/megous.com/apps-c/static-deps/toolchains/aarch64-linux-musl/libexec/gcc/aarch64-linux-musl/9.0.1/lto -wrapper -plugin-opt=-fresolution=-ldl.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lpthread -plugin-opt=-pass-through=-lc -Bstatic -X -EL -maarch64linux -o apps/openssl /workspace/ megous.com/apps-c/static-deps/toolchains/aarch64-linux-musl/lib/gcc/aarch64-linux-musl/9.0.1/../../../../aarch64-linux-musl/lib/crt1.o /workspace/megous.com/apps-c/static-deps/toolchains/aarch64-linu x-musl/lib/gcc/aarch64-linux-musl/9.0.1/../../../../aarch64-linux-musl/lib/crti.o /workspace/megous.com/apps-c/static-deps/toolchains/aarch64-linux-musl/lib/gcc/aarch64-linux-musl/9.0.1/crtbeginT.o - L. -L/workspace/megous.com/apps-c/static-deps/output/arm64-lto/sys/usr/lib -L/workspace/megous.com/apps-c/static-deps/toolchains/aarch64-linux-musl/lib/gcc/aarch64-linux-musl/9.0.1 -L/workspace/megou s.com/apps-c/static-deps/toolchains/aarch64-linux-musl/lib/gcc/aarch64-linux-musl/9.0.1/../../../../aarch64-linux-musl/lib/../lib64 -L/workspace/megous.com/apps-c/static-deps/toolchains/aarch64-linux -musl/lib/gcc/aarch64-linux-musl/9.0.1/../../../../aarch64-linux-musl/lib --start-group 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/ds a.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 --start-group -lgcc -lpthread -lc --end-group /workspace/megous.com/apps-c/static-deps/toolchains/aarch64-linux-musl/lib/gcc/aarch64-linux-musl/9.0.1/crtend.o /workspace/megous.com/apps-c/static-deps/toolchains/aarch64-linux-musl/lib/gcc/aarch6 4-linux-musl/9.0.1/../../../../aarch64-linux-musl/lib/crtn.o /workspace/megous.com/apps-c/static-deps/toolchains/aarch64-linux-musl/lib/gcc/aarch64-linux-musl/9.0.1/../../../../aarch64-linux-musl/bin/ld: internal error /workspace/megous.com/apps-c/static-deps/ toolchains/sources/binutils-gdb/ld/ldlang.c 6868 collect2: error: ld returned 1 exit status make[1]: *** [Makefile:6221: apps/openssl] Error 1 make[1]: Leaving directory '/workspace/megous.com/apps-c/static-deps/output/arm64-lto/builds/openssl/src/openssl-1.1.1b' make: *** [Makefile:172: all] Error 2