diff options
author | Ard Biesheuvel <ard.biesheuvel@linaro.org> | 2016-01-26 03:13:44 -0500 |
---|---|---|
committer | Catalin Marinas <catalin.marinas@arm.com> | 2016-02-24 09:57:27 -0500 |
commit | 1e48ef7fcc374051730381a2a05da77eb4eafdb0 (patch) | |
tree | f7f7174e996accf28dfdeef5fa79a452e4dbfa41 /arch/arm64/Kconfig | |
parent | 6c94f27ac847ff8ef15b3da5b200574923bd6287 (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>
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 c85c29d660bd..fef3dc6e21b9 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig | |||
@@ -787,6 +787,17 @@ config ARM64_MODULE_PLTS | |||
787 | select ARM64_MODULE_CMODEL_LARGE | 787 | select ARM64_MODULE_CMODEL_LARGE |
788 | select HAVE_MOD_ARCH_SPECIFIC | 788 | select HAVE_MOD_ARCH_SPECIFIC |
789 | 789 | ||
790 | config RELOCATABLE | ||
791 | bool | ||
792 | help | ||
793 | This builds the kernel as a Position Independent Executable (PIE), | ||
794 | which retains all relocation metadata required to relocate the | ||
795 | kernel binary at runtime to a different virtual address than the | ||
796 | address it was linked at. | ||
797 | Since AArch64 uses the RELA relocation format, this requires a | ||
798 | relocation pass at runtime even if the kernel is loaded at the | ||
799 | same address it was linked at. | ||
800 | |||
790 | endmenu | 801 | endmenu |
791 | 802 | ||
792 | menu "Boot options" | 803 | menu "Boot options" |