I managed to find some information on this from Prof John Criswell who did something similar for his dissertation but I do wonder how complicated the make files for building the kernel are since the method he used would require using llvm-link to stitch together all the different object files(bitcode) into a single file and then convert them into machine code at one go.
On Fri, Oct 12, 2018 at 10:20 AM <[email protected]> wrote: > On Thu, 11 Oct 2018 21:45:16 +0800, Carter Cheng said: > > > There are some detaills about the current procedures for linking the > kernel > > that I am unfamiliar with. My understanding is that GCC and Clang both > have > > the ability to do link time analysis and transforms on code but is it > > possible to write link time passes that will run on the kernel since the > > linking phase is a bit different (i.e. doesnt produce an ELF file)? > > The fact that the kernel gets linked is an existence proof that it is > possible > to do link time processing on the kernel. > > There's no LTO support in the stock 4.19 tree, but Andi Kleen did a > patchset > for 4.15, and there's another patchset to enable LTO when using Clang > rather > than gcc. (I haven't tried either one, don't use on a production machine, > as > the resulting kernel may crash, eat filesystems, and/or turn your dog > green...) > > Note that 'vmlinux' is a statically linked ELF binary. That plus a > bootstrap > code gets merged to create a bzImage or similar thing that can be loaded by > Grub2 or whatever boot loader. > >
_______________________________________________ Kernelnewbies mailing list [email protected] https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
