[PATCH 2/4] powerpc: enable text relative kallsyms for ppc64

From: Ard Biesheuvel
Date: Wed Jan 20 2016 - 04:07:05 EST


This enables the newly introduced text-relative kallsyms support when
building 64-bit targets. This cuts the size of the kallsyms address
table in half, and drastically reduces the size of the PIE dynamic
relocation section when building with CONFIG_RELOCATABLE=y (by about
3 MB for ppc64_defconfig)

Signed-off-by: Ard Biesheuvel <ard.biesheuvel@xxxxxxxxxx>
---

Results for ppc64_defconfig:

BEFORE:
=======
$ size vmlinux
text data bss dec hex filename
19827996 2008456 849612 22686064 15a2970 vmlinux

$ readelf -S .tmp_kallsyms2.o
There are 9 section headers, starting at offset 0x4513f8:

Section Headers:
[Nr] Name Type Address Offset
Size EntSize Flags Link Info Align
...
[ 4] .rodata PROGBITS 0000000000000000 00000100
00000000001fcf00 0000000000000000 A 0 0 256
[ 5] .rela.rodata RELA 0000000000000000 001fd1d8
0000000000254220 0000000000000018 I 7 4 8
[ 6] .shstrtab STRTAB 0000000000000000 001fd000
0000000000000039 0000000000000000 0 0 1
...

$ ls -l arch/powerpc/boot/zImage
-rwxrwxr-x 2 ard ard 7533160 Jan 20 08:43 arch/powerpc/boot/zImage

AFTER:
======
$ size vmlinux
text data bss dec hex filename
16979516 2009992 849612 19839120 12eb890 vmlinux

$ readelf -S .tmp_kallsyms2.o
There are 8 section headers, starting at offset 0x199bb0:

Section Headers:
[Nr] Name Type Address Offset
Size EntSize Flags Link Info Align
...
[ 4] .rodata PROGBITS 0000000000000000 00000100
0000000000199900 0000000000000000 A 0 0 256
[ 5] .shstrtab STRTAB 0000000000000000 00199a00
0000000000000034 0000000000000000 0 0 1
...

$ ls -l arch/powerpc/boot/zImage
-rwxrwxr-x 2 ard ard 6985672 Jan 20 08:45 arch/powerpc/boot/zImage
---
arch/powerpc/Kconfig | 1 +
1 file changed, 1 insertion(+)

diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index 94f6c5089e0c..d1c26749632b 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -158,6 +158,7 @@ config PPC
select ARCH_HAS_DMA_SET_COHERENT_MASK
select ARCH_HAS_DEVMEM_IS_ALLOWED
select HAVE_ARCH_SECCOMP_FILTER
+ select KALLSYMS_TEXT_RELATIVE if PPC64

config GENERIC_CSUM
def_bool CPU_LITTLE_ENDIAN
--
2.5.0