Hello toolchain gurus,

In the course of Linaro's kernel tinification project, the ability to 
compile the Linux kernel using LTO is a frequent requirement. However 
the kernel makes heavy usage of 'ld -r' with .o files resulting from LTO 
build of .c files as well as .o files resulting from pure assembly code.

This mix of LTO and non-LTO object files is not supported by upstream 
binutils unless a patch from H.J. Lu is applied.  That patch has been 
available since 2013 and was last refreshed in his 2.25.51.0.4 branch 
last September. It is accessible here:

https://git.linaro.org/toolchain/binutils-gdb.git/commit/6da5456971

I've attached a very simple test case demonstrating the problem. With 
the binutils-lto-mixed.patch applied, this test case compiles to a 
working executable. Otherwise compilation fails at the 'ld -r' step.

One question and one request:

- What, if anything, has prevented this patch from being merged in the 
  master branch upstream?

- In the mean time, could we include this patch in the Linaro binutils 
  package and releases?

Having this available in our toolchain releases would greatly simplify 
the LTO related work on the kernel. It was included in all binutils 
releases from H.J. Lu since 2013 and therefore has obtained significant 
exposure already.

Thanks.


Nicolas

Attachment: lto-mixed-test.tgz
Description: application/gzip

_______________________________________________
linaro-toolchain mailing list
linaro-toolchain@lists.linaro.org
https://lists.linaro.org/mailman/listinfo/linaro-toolchain

Reply via email to