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

Reply via email to