On Tue, Feb 1, 2011 at 9:52 AM, Dave Korn <dave.korn.cyg...@gmail.com> wrote: > On 01/02/2011 17:15, H.J. Lu wrote: >> On Tue, Feb 1, 2011 at 2:54 AM, Dave Korn <dave.korn.cyg...@gmail.com> wrote: >>> On 01/02/2011 02:33, Joel Sherrill wrote: >>>> Hi, >>>> >>>> There are ~100 failures on each *-rtems* target >>>> in the latest test runs when various lto related >>>> flags are on. The symbols in questions are in the >>>> RTEMS libraries which are picked up via the >>>> -B... argument. Other symbols from the same >>>> library are resolved. >>> These have all cropped up since -fuse-linker-plugin became the default. >>> >>>> Should LTO work with a target not using gold? >>> Yes, it should, but some work is needed at the binutils end. I am testing >>> the attached two patches at the moment; the idea is to have fully-debugged >>> support for LTO+plugin in the 2.20.1 release, to support 4.6.0 when it >>> comes out. >>> >> >> FWIW, your recan linker patch doesn't fix LTO 8, which is: >> >> http://sourceware.org/bugzilla/show_bug.cgi?id=12277 > > It wasn't supposed to, we've been through this before. It needs both the > link-order fix *and* the rescan-libs fix. The combined pair of patches I sent > Joel (one of which is indeed that first patch, the second of which is for lib > rescanning) *does* fix LTO 8 on i686/Linux, I tested it. >
I applied 2 patches of yours, With gcc version 4.6.0 revision 169143, I got /usr/gcc-4.6/bin/gcc -B/export/build/gnu/binutils-lto/build-i686-linux/ld/tmpdir/ld/ -L/usr/local/i686-linux/lib -L/usr/local/lib -L/lib -L/usr/lib -m32 -o tmpdir/lto-8.exe -L/net/gnu-6/export/gnu/src/binutils/binutils/ld/testsuite/ld-plugin -O2 -flto -fuse-linker-plugin tmpdir/lto-8b.o tmpdir/lto-8a.o tmpdir/dummy.o Executing on host: sh -c {/usr/gcc-4.6/bin/gcc -B/export/build/gnu/binutils-lto/build-i686-linux/ld/tmpdir/ld/ -L/usr/local/i686-linux/lib -L/usr/local/lib -L/lib -L/usr/lib -m32 -o tmpdir/lto-8.exe -L/net/gnu-6/export/gnu/src/binutils/binutils/ld/testsuite/ld-plugin -O2 -flto -fuse-linker-plugin tmpdir/lto-8b.o tmpdir/lto-8a.o tmpdir/dummy.o 2>&1} /dev/null ld.tmp (timeout = 300) /export/build/gnu/binutils-lto/build-i686-linux/ld/tmpdir/ld/ld: tmpdir/lto-8.exe: hidden symbol `bar' isn't defined /export/build/gnu/binutils-lto/build-i686-linux/ld/tmpdir/ld/ld: final link failed: Bad value collect2: ld returned 1 exit status -- H.J.