diff options
author | Ard Biesheuvel <ard.biesheuvel@linaro.org> | 2016-01-26 09:13:44 +0100 |
---|---|---|
committer | Alex Shi <alex.shi@linaro.org> | 2016-05-11 23:18:45 +0800 |
commit | 89328d41aa99df071dadb43c722cd88ffafc77e2 (patch) | |
tree | d8f3aa049954132710c199b24ea62de1ac4646c5 /arch/arm64/Kconfig | |
parent | 525787eea48f8c6a1630e6dab07313896cfc6b8d (diff) |
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>
(cherry picked from commit 1e48ef7fcc374051730381a2a05da77eb4eafdb0)
Signed-off-by: Alex Shi <alex.shi@linaro.org>
Diffstat (limited to 'arch/arm64/Kconfig')
-rw-r--r-- | arch/arm64/Kconfig | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig index 22db20491733..ac1475f559e6 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig @@ -737,6 +737,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" |