https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91376

--- Comment #9 from Martin Liška <marxin at gcc dot gnu.org> ---
(In reply to r...@cebitec.uni-bielefeld.de from comment #8)
> > --- Comment #7 from Martin Liška <marxin at gcc dot gnu.org> ---
> > (In reply to Martin Liška from comment #6)
> >> Good, then let me take a look.
> >
> > So I've just tested current master of binutils and I can see:
> >
> > marxin@marxinbox:/tmp> gcc --version
> > gcc (GCC) 10.0.0 20190806 (experimental)
> > Copyright (C) 2019 Free Software Foundation, Inc.
> > This is free software; see the source for copying conditions.  There is NO
> > warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
> >
> > marxin@marxinbox:/tmp> gcc -c -flto main.c
> >
> > $ nm main.o
> > nm: main.o: plugin needed to handle lto object
> > 0000000000000001 C __gnu_lto_slim
> >
> > The issue here is that the installed nm can't load plugin from bfd-plugins:
> >
> > $ strace -f -s512 nm main.o 2>&1 | grep plugin
> > openat(AT_FDCWD, "/home/marxin/bin/binutils/bin/../bin/../lib/bfd-plugins",
> > O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 4
> > stat("/home/marxin/bin/binutils/bin/../bin/../lib/bfd-plugins/..",
> > {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
> > stat("/home/marxin/bin/binutils/bin/../bin/../lib/bfd-plugins/.",
> > {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
> > write(2, "main.o: plugin needed to handle lto object", 42main.o: plugin 
> > needed
> > to handle lto object) = 42
> >
> > $ nm --plugin /dev/shm/objdir/lto-plugin/.libs/liblto_plugin.so.0.0.0 main.o
> > 00000000 T main
> >
> > So the question is if you have a LTO plugin accessible for the built gold or
> > nm?
> 
> I don't see how nm would come into play here.

I thought you see the failure for all tests. Then one could use nm to identify
if LTO plugin is properly loaded.

>  For one, I've only
> installed gas and gld from binutils trunk under non-standard names
> (gas-2.32.51 and gld-2.32.51) and use them via --with-as and --with-ld.
> 
> The failing testcases boils down to (run in gcc/testsuite/g++):
> 
> #!/bin/sh
> 
> COLLECT_GCC=../../xg++ \
> COLLECT_GCC_OPTIONS= \
> COLLECT_LTO_WRAPPER=../../lto-wrapper \
> COMPILER_PATH=../.. \
> \
> /vol/gcc/bin/gld-2.32.51 \
>   -plugin ../../liblto_plugin.so \
>   -plugin-opt=../../lto-wrapper \
>   -plugin-opt=-fresolution=cp_lto_pr90990_0.res \
>   -plugin-opt=-v \
>   -plugin-opt=-save-temps \
>   -o g++-dg-lto-pr90990-01.exe -r cp_lto_pr90990_0.o
> 
> $ gld.cmd 
> ../../lto-wrapper -fresolution=cp_lto_pr90990_0.res -flinker-output=rel
> cp_lto_pr90990_0.o 
> /vol/gcc/bin/gld-2.32.51: /var/tmp//ccKkavFd.lto.o: plugin needed to handle
> lto object
> [Leaving g++-dg-lto-pr90990-01.exe.lto_wrapper_args]
> [Leaving /var/tmp//ccKkavFd.lto.o]

Can you please send me the *.o files so that I can investigate them?

> 
> When I run this under truss (Solaris equivalent of strace), I find just
> the following calls to execve:
> 
> 12815:        execve("../../lto-wrapper", 0xFEFFD6F4, 0xFEFFD844)  argc = 2
> 12815:         argv: ../../lto-wrapper
> 12815:          @g++-dg-lto-pr90990-01.exe.lto_wrapper_args
> 
> 12817:        execve("../../xg++", 0xFEFFD5A4, 0xFEFFD990)  argc = 2
> 12817:         argv: ../../xg++ @/var/tmp//ccxh7UCb
> 
> 12819:        execve("../../lto1", 0x08189FD0, 0x08187784)  argc = 19
> 12819:         argv: ../../lto1 -quiet -dumpbase cp_lto_pr90990_0.o
> 12819:          -mtune=generic -march=pentium4 -auxbase-strip
> 12819:          /var/tmp//ccKkavFd.lto.o -O0 -fno-openmp -fno-openacc
> 12819:          -fno-pie -fno-diagnostics-show-caret
> 12819:          -fno-diagnostics-show-line-numbers
> 12819:          -fresolution=cp_lto_pr90990_0.res -flinker-output=rel
> 12819:          @/var/tmp//ccsvXE.b -o /var/tmp//ccM632hc.s
> 
> 12821:        execve("/vol/gcc/bin/gas-2.32.51", 0x08189FD0, 0x08187784)  
> argc = 7
> 12821:         argv: /vol/gcc/bin/gas-2.32.51 -Qy -s --32 -o
> 12821:          /var/tmp//ccKkavFd.lto.o /var/tmp//ccM632hc.s
> 
> There's no nm anywhere in sight.  Besides, I find it very strange that
> out of hundreds if not thousends of LTO tests during this bootstrap,
> only a single one shows this error.  If there were a fundamental
> problem, I'd expect a way larger number here.

That's strange! The test-case is not special to me.

Reply via email to