LWN.net Logo

Link-time optimization for the kernel

Link-time optimization for the kernel

Posted Aug 22, 2012 18:19 UTC (Wed) by stevenb (guest, #11536)
In reply to: Link-time optimization for the kernel by jwakely
Parent article: Link-time optimization for the kernel

GCC doesn't do this, but AFAIU the gold linker's icf.cc does this. From binutils-2.22:src/gold/icf.cc:

// Identical Code Folding Algorithm
// ----------------------------------
// Detecting identical functions is done here and the basic algorithm
// is as follows. A checksum is computed on each foldable section using
// its contents and relocations. If the symbol name corresponding to
// a relocation is known it is used to compute the checksum. If the
// symbol name is not known the stringified name of the object and the
// section number pointed to by the relocation is used. The checksums
// are stored as keys in a hash map and a section is identical to some
// other section if its checksum is already present in the hash map.
// Checksum collisions are handled by using a multimap and explicitly
// checking the contents when two sections have the same checksum.
//
// However, two functions A and B with identical text but with
// relocations pointing to different foldable sections can be identical if
// the corresponding foldable sections to which their relocations point to
// turn out to be identical. Hence, this checksumming process must be
// done repeatedly until convergence is obtained.

Whether this works with LTO, I don't know. And I suppose it requires -ffunction-sections but I'm not sure about that either.

Not a very helpful post, sorry ;-)


(Log in to post comments)

Link-time optimization for the kernel

Posted Aug 22, 2012 22:43 UTC (Wed) by andikleen (subscriber, #39006) [Link]

gold unfortunately does not work with LTO kernel builds at the moment.
You could only use it without.

Link-time optimization for the kernel

Posted Aug 23, 2012 10:05 UTC (Thu) by jwakely (subscriber, #60262) [Link]

No need to apologise, I'd somehow missed that gold did ICF and thought Microsoft's was the only mainstream linker to support it. Thanks, Steven!

Copyright © 2013, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds