On 18 October 2026 09:35:11 BST, Josef Schlehofer <[email protected]> wrote: >With LTO, SPL, TPL and VPL are linked through the compiler driver, and >GCC's lto-wrapper runs code generation through make. The link recipe >is not marked recursive, so make does not pass its jobserver to that >command. > >With Debian's GCC 12.2 and make 4.3, the SPL link of turris_1x_sdcard, >which the next patch switches to LTO, therefore fails at -j8: > > make[3]: *** write jobserver: Bad file descriptor. Stop. > lto-wrapper: fatal error: make returned 2 exit status > >Prefix the recipe with '+', as the top-level U-Boot link rule does. > >Tested with Debian's GCC 12.2, where the link now succeeds, and GCC >14.2, where '+' does not change the images of three mpc85xx LTO >builds.
I guess Reviewed-by: Bradley Morgan <[email protected]> > >Signed-off-by: Josef Schlehofer <[email protected]> >Cc: Tom Rini <[email protected]> >Cc: Simon Glass <[email protected]> >Cc: Marek BehĂșn <[email protected]> >--- >Changes in v2: >- shorter commit message > >With Debian's GCC 14.2.0-19, the link also succeeds without '+' at >-j8. The LTO images of turris_1x_sdcard, P2020RDB-PC_NAND and >T2080RDB_NAND are identical with and without it. >--- > scripts/Makefile.xpl | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > >diff --git a/scripts/Makefile.xpl b/scripts/Makefile.xpl >index dfd76b51a61..926d762108f 100644 >--- a/scripts/Makefile.xpl >+++ b/scripts/Makefile.xpl >@@ -544,7 +544,7 @@ endif > $(obj)/$(SPL_BIN): $(u-boot-spl-platdata) $(u-boot-spl-init) \ > $(u-boot-spl-main) $(u-boot-spl-keep-syms-lto) \ > $(obj)/u-boot-spl.lds FORCE >- $(call if_changed,u-boot-spl) >+ +$(call if_changed,u-boot-spl) > > $(sort $(u-boot-spl-init) $(u-boot-spl-main)): $(u-boot-spl-dirs) ; > > --- Thanks! "I'm not a very positive person" - Linus torvalds
