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
// 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 ;-)