summaryrefslogtreecommitdiffstats
path: root/arch/arm64/Kconfig
diff options
context:
space:
mode:
authorArd Biesheuvel2016-01-26 09:13:44 +0100
committerCatalin Marinas2016-02-24 15:57:27 +0100
commit1e48ef7fcc374051730381a2a05da77eb4eafdb0 (patch)
treef7f7174e996accf28dfdeef5fa79a452e4dbfa41 /arch/arm64/Kconfig
parentarm64: switch to relative exception tables (diff)
downloadkernel-qcow2-linux-1e48ef7fcc374051730381a2a05da77eb4eafdb0.tar.gz
kernel-qcow2-linux-1e48ef7fcc374051730381a2a05da77eb4eafdb0.tar.xz
kernel-qcow2-linux-1e48ef7fcc374051730381a2a05da77eb4eafdb0.zip
arm64: add support for building vmlinux as a relocatable PIE binary
This implements CONFIG_RELOCATABLE, which links the final vmlinux image with a dynamic relocation section, allowing the early boot code to perform a relocation to a different virtual address at runtime. This is a prerequisite for KASLR (CONFIG_RANDOMIZE_BASE). Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Diffstat (limited to 'arch/arm64/Kconfig')
-rw-r--r--arch/arm64/Kconfig11
1 files changed, 11 insertions, 0 deletions
diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
index c85c29d660bd..fef3dc6e21b9 100644
--- a/arch/arm64/Kconfig
+++ b/arch/arm64/Kconfig
@@ -787,6 +787,17 @@ config ARM64_MODULE_PLTS
select ARM64_MODULE_CMODEL_LARGE
select HAVE_MOD_ARCH_SPECIFIC
+config RELOCATABLE
+ bool
+ help
+ This builds the kernel as a Position Independent Executable (PIE),
+ which retains all relocation metadata required to relocate the
+ kernel binary at runtime to a different virtual address than the
+ address it was linked at.
+ Since AArch64 uses the RELA relocation format, this requires a
+ relocation pass at runtime even if the kernel is loaded at the
+ same address it was linked at.
+
endmenu
menu "Boot options"