http://sourceware.org/bugzilla/show_bug.cgi?id=12280

           Summary: Makefiles don't support LTO
           Product: binutils
           Version: 2.22 (HEAD)
            Status: NEW
          Severity: normal
          Priority: P2
         Component: binutils
        AssignedTo: [email protected]
        ReportedBy: [email protected]


In a combined gcc 4.6 + binutils tree configured with
-with-build-config=bootstrap-lto, I got

make -j8
...
...
libtool: link: /export/build/gnu/gcc-lto/build-x86_64-linux/./prev-gcc/xgcc
-B/export/build/gnu/gcc-lto/build-x86_64-linux/./prev-gcc/
-B/usr/gcc-4.6.0/x86_64-unknown-linux-gnu/bin/
-B/usr/gcc-4.6.0/x86_64-unknown-linux-gnu/bin/
-B/usr/gcc-4.6.0/x86_64-unknown-linux-gnu/lib/ -isystem
/usr/gcc-4.6.0/x86_64-unknown-linux-gnu/include -isystem
/usr/gcc-4.6.0/x86_64-unknown-linux-gnu/sys-include -W -Wall
-Wstrict-prototypes -Wmissing-prototypes -Wshadow -Werror -g -O2
-flto=jobserver -fuse-linker-plugin -frandom-seed=1 -o .libs/as-new app.o as.o
atof-generic.o compress-debug.o cond.o depend.o dwarf2dbg.o dw2gencfi.o ecoff.o
ehopt.o expr.o flonum-copy.o flonum-konst.o flonum-mult.o frags.o hash.o
input-file.o input-scrub.o listing.o literal.o macro.o messages.o output-file.o
read.o remap.o sb.o stabs.o subsegs.o symbols.o write.o tc-i386.o obj-elf.o
atof-ieee.o  -L/export/build/gnu/gcc-lto/build-x86_64-linux/./ld
../opcodes/.libs/libopcodes.so
-L/export/build/gnu/gcc-lto/build-x86_64-linux/opcodes/../libiberty/pic
../bfd/.libs/libbfd.so
-L/export/build/gnu/gcc-lto/build-x86_64-linux/bfd/../libiberty/pic -liberty
../libiberty/libiberty.a -lz -Wl,-rpath -Wl,/usr/gcc-4.6.0/lib
make[3]: *** read jobs pipe EOF.  Stop.
make[3]: *** Waiting for unfinished jobs....
lto-wrapper: make returned 2 exit status
lto-wrapper failedcollect2: ld returned 1 exit status
make[2]: *** [as-new] Error 1
make[2]: Leaving directory `/export/build/gnu/gcc-lto/build-x86_64-linux/gas'
make[1]: *** [all-recursive] Error 1

Gcc manual says

---
     You can also specify `-flto=jobserver' to use GNU make's job
     server mode to determine the number of parallel jobs. This is
     useful when the Makefile calling GCC is already executing in
     parallel.  The parent Makefile will need a `+' prepended to the
     command recipe for this to work. This will likely only work if
     `MAKE' is GNU make.
---

Binutils Makefiles don't have `+' and failed.

[...@gnu-6 binutils]$ grep "^LINK" */Makefile.*
bfd/Makefile.in:LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
binutils/Makefile.in:LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS)
$(LIBTOOLFLAGS) \
gas/Makefile.in:LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
gold/Makefile.in:LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
-o $@
gprof/Makefile.in:LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS)
\
ld/Makefile.in:LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
opcodes/Makefile.am:LINK_FOR_BUILD = $(CC_FOR_BUILD) $(CFLAGS_FOR_BUILD) \
opcodes/Makefile.in:LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS)
$(LIBTOOLFLAGS) \
opcodes/Makefile.in:LINK_FOR_BUILD = $(CC_FOR_BUILD) $(CFLAGS_FOR_BUILD) \
[...@gnu-6 binutils]$ 

We need to prepend `+'.

-- 
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.

_______________________________________________
bug-binutils mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/bug-binutils

Reply via email to