On Fri, 22 Jan 2016 22:54:44 +0100 Ard Biesheuvel <ard.biesheuvel@xxxxxxxxxx> wrote: > > """ > kallsyms: add support for relative offsets in kallsyms address table > > Similar to how relative extables are implemented, it is possible to emit > the kallsyms table in such a way that it contains offsets relative to some > anchor point in the kernel image rather than absolute addresses. > > On 64-bit architectures, it cuts the size of the kallsyms address table in > half, since offsets between kernel symbols can typically be expressed in 32 > bits. This saves several hundreds of kilobytes of permanent .rodata on > average. In addition, the kallsyms address table is no longer subject to > dynamic relocation when CONFIG_RELOCATABLE is in effect, so the relocation > work done after decompression now doesn't have to do relocation updates for > all these values. This saves up to 24 bytes (i.e., the size of a ELF64 RELA > relocation table entry) per value, which easily adds up to a couple of > megabytes of uncompressed __init data on ppc64 or arm64. Even if these > relocation entries typically compress well, the combined size reduction of > 2.8 MB uncompressed for a ppc64_defconfig build (of which 2.4 MB is __init > data) results in a ~500 KB space saving in the compressed image. > > Since it is useful for some architectures (like x86) to retain the ability > to emit absolute values as well, this patch adds support for both, by > emitting absolute addresses as positive 32-bit values, and addresses > relative to the lowest encountered relative symbol as negative values, > which are subtracted from the runtime address of this base symbol to > produce the actual address. > > Support for the above is enabled by default for all architectures except > IA-64, whose symbols are too far apart to capture in this manner. snip I still don't get the 2GB limitaiton, because of the 32 bit address does it imply that modules load with -2GB to +2GB of the kernel base address of the kallsyms address table? Balbir Singh. -- To unsubscribe from this list: send the line "unsubscribe linux-s390" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html