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