diff options
author | Kees Cook <keescook@chromium.org> | 2020-08-21 12:42:56 -0700 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2020-09-01 10:03:17 +0200 |
commit | d7e3b065dc98e95f2dae6d2da031dd4c243bd7be (patch) | |
tree | 2bc7e1a9c53d42b315bb4d5a0f1e01a639d42b60 /arch/arm/kernel | |
parent | be2881824ae9eb92a35b094f734f9ca7339ddf6d (diff) | |
download | lwn-d7e3b065dc98e95f2dae6d2da031dd4c243bd7be.tar.gz lwn-d7e3b065dc98e95f2dae6d2da031dd4c243bd7be.zip |
arm/build: Refactor linker script headers
In preparation for adding --orphan-handling=warn, refactor the linker
script header includes, and extract common macros.
Signed-off-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Cc: Russell King <linux@armlinux.org.uk>
Link: https://lore.kernel.org/r/20200821194310.3089815-16-keescook@chromium.org
Diffstat (limited to 'arch/arm/kernel')
-rw-r--r-- | arch/arm/kernel/vmlinux-xip.lds.S | 4 | ||||
-rw-r--r-- | arch/arm/kernel/vmlinux.lds.S | 4 | ||||
-rw-r--r-- | arch/arm/kernel/vmlinux.lds.h | 127 |
3 files changed, 2 insertions, 133 deletions
diff --git a/arch/arm/kernel/vmlinux-xip.lds.S b/arch/arm/kernel/vmlinux-xip.lds.S index 3d4e88f08196..904c31fa20ed 100644 --- a/arch/arm/kernel/vmlinux-xip.lds.S +++ b/arch/arm/kernel/vmlinux-xip.lds.S @@ -9,15 +9,13 @@ #include <linux/sizes.h> -#include <asm-generic/vmlinux.lds.h> +#include <asm/vmlinux.lds.h> #include <asm/cache.h> #include <asm/thread_info.h> #include <asm/memory.h> #include <asm/mpu.h> #include <asm/page.h> -#include "vmlinux.lds.h" - OUTPUT_ARCH(arm) ENTRY(stext) diff --git a/arch/arm/kernel/vmlinux.lds.S b/arch/arm/kernel/vmlinux.lds.S index 5592f14b7e35..bb950c896a67 100644 --- a/arch/arm/kernel/vmlinux.lds.S +++ b/arch/arm/kernel/vmlinux.lds.S @@ -9,15 +9,13 @@ #else #include <linux/pgtable.h> -#include <asm-generic/vmlinux.lds.h> +#include <asm/vmlinux.lds.h> #include <asm/cache.h> #include <asm/thread_info.h> #include <asm/memory.h> #include <asm/mpu.h> #include <asm/page.h> -#include "vmlinux.lds.h" - OUTPUT_ARCH(arm) ENTRY(stext) diff --git a/arch/arm/kernel/vmlinux.lds.h b/arch/arm/kernel/vmlinux.lds.h deleted file mode 100644 index 381a8e105fa5..000000000000 --- a/arch/arm/kernel/vmlinux.lds.h +++ /dev/null @@ -1,127 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0 */ - -#ifdef CONFIG_HOTPLUG_CPU -#define ARM_CPU_DISCARD(x) -#define ARM_CPU_KEEP(x) x -#else -#define ARM_CPU_DISCARD(x) x -#define ARM_CPU_KEEP(x) -#endif - -#if (defined(CONFIG_SMP_ON_UP) && !defined(CONFIG_DEBUG_SPINLOCK)) || \ - defined(CONFIG_GENERIC_BUG) || defined(CONFIG_JUMP_LABEL) -#define ARM_EXIT_KEEP(x) x -#define ARM_EXIT_DISCARD(x) -#else -#define ARM_EXIT_KEEP(x) -#define ARM_EXIT_DISCARD(x) x -#endif - -#ifdef CONFIG_MMU -#define ARM_MMU_KEEP(x) x -#define ARM_MMU_DISCARD(x) -#else -#define ARM_MMU_KEEP(x) -#define ARM_MMU_DISCARD(x) x -#endif - -#define PROC_INFO \ - . = ALIGN(4); \ - __proc_info_begin = .; \ - *(.proc.info.init) \ - __proc_info_end = .; - -#define IDMAP_TEXT \ - ALIGN_FUNCTION(); \ - __idmap_text_start = .; \ - *(.idmap.text) \ - __idmap_text_end = .; \ - -#define ARM_DISCARD \ - *(.ARM.exidx.exit.text) \ - *(.ARM.extab.exit.text) \ - *(.ARM.exidx.text.exit) \ - *(.ARM.extab.text.exit) \ - ARM_CPU_DISCARD(*(.ARM.exidx.cpuexit.text)) \ - ARM_CPU_DISCARD(*(.ARM.extab.cpuexit.text)) \ - ARM_EXIT_DISCARD(EXIT_TEXT) \ - ARM_EXIT_DISCARD(EXIT_DATA) \ - EXIT_CALL \ - ARM_MMU_DISCARD(*(.text.fixup)) \ - ARM_MMU_DISCARD(*(__ex_table)) \ - *(.discard) \ - *(.discard.*) - -#define ARM_TEXT \ - IDMAP_TEXT \ - __entry_text_start = .; \ - *(.entry.text) \ - __entry_text_end = .; \ - IRQENTRY_TEXT \ - SOFTIRQENTRY_TEXT \ - TEXT_TEXT \ - SCHED_TEXT \ - CPUIDLE_TEXT \ - LOCK_TEXT \ - KPROBES_TEXT \ - *(.gnu.warning) \ - *(.glue_7) \ - *(.glue_7t) \ - . = ALIGN(4); \ - *(.got) /* Global offset table */ \ - ARM_CPU_KEEP(PROC_INFO) - -/* Stack unwinding tables */ -#define ARM_UNWIND_SECTIONS \ - . = ALIGN(8); \ - .ARM.unwind_idx : { \ - __start_unwind_idx = .; \ - *(.ARM.exidx*) \ - __stop_unwind_idx = .; \ - } \ - .ARM.unwind_tab : { \ - __start_unwind_tab = .; \ - *(.ARM.extab*) \ - __stop_unwind_tab = .; \ - } - -/* - * The vectors and stubs are relocatable code, and the - * only thing that matters is their relative offsets - */ -#define ARM_VECTORS \ - __vectors_start = .; \ - .vectors 0xffff0000 : AT(__vectors_start) { \ - *(.vectors) \ - } \ - . = __vectors_start + SIZEOF(.vectors); \ - __vectors_end = .; \ - \ - __stubs_start = .; \ - .stubs ADDR(.vectors) + 0x1000 : AT(__stubs_start) { \ - *(.stubs) \ - } \ - . = __stubs_start + SIZEOF(.stubs); \ - __stubs_end = .; \ - \ - PROVIDE(vector_fiq_offset = vector_fiq - ADDR(.vectors)); - -#define ARM_TCM \ - __itcm_start = ALIGN(4); \ - .text_itcm ITCM_OFFSET : AT(__itcm_start - LOAD_OFFSET) { \ - __sitcm_text = .; \ - *(.tcm.text) \ - *(.tcm.rodata) \ - . = ALIGN(4); \ - __eitcm_text = .; \ - } \ - . = __itcm_start + SIZEOF(.text_itcm); \ - \ - __dtcm_start = .; \ - .data_dtcm DTCM_OFFSET : AT(__dtcm_start - LOAD_OFFSET) { \ - __sdtcm_data = .; \ - *(.tcm.data) \ - . = ALIGN(4); \ - __edtcm_data = .; \ - } \ - . = __dtcm_start + SIZEOF(.data_dtcm); |