summaryrefslogtreecommitdiff
path: root/arch/riscv/Makefile.postlink
diff options
context:
space:
mode:
authorAlexandre Ghiti <alex@ghiti.fr>2023-03-29 07:53:28 +0300
committerPalmer Dabbelt <palmer@rivosinc.com>2023-04-19 17:46:32 +0300
commitc2dea0bc53397166a77811d9b66928643a83d6f3 (patch)
tree778bb8026b57daf5e8e4f92e2ba661b25eebb474 /arch/riscv/Makefile.postlink
parent47981b5cc6871d78aee67b6c9ae70aff90ddb97d (diff)
downloadlinux-c2dea0bc53397166a77811d9b66928643a83d6f3.tar.xz
riscv: Check relocations at compile time
Relocating kernel at runtime is done very early in the boot process, so it is not convenient to check for relocations there and react in case a relocation was not expected. There exists a script in scripts/ that extracts the relocations from vmlinux that is then used at postlink to check the relocations. Signed-off-by: Alexandre Ghiti <alex@ghiti.fr> Reviewed-by: Anup Patel <anup@brainfault.org> Link: https://lore.kernel.org/r/20230329045329.64565-6-alexghiti@rivosinc.com Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
Diffstat (limited to 'arch/riscv/Makefile.postlink')
-rw-r--r--arch/riscv/Makefile.postlink36
1 files changed, 36 insertions, 0 deletions
diff --git a/arch/riscv/Makefile.postlink b/arch/riscv/Makefile.postlink
new file mode 100644
index 000000000000..d5de8d520d3e
--- /dev/null
+++ b/arch/riscv/Makefile.postlink
@@ -0,0 +1,36 @@
+# SPDX-License-Identifier: GPL-2.0
+# ===========================================================================
+# Post-link riscv pass
+# ===========================================================================
+#
+# Check that vmlinux relocations look sane
+
+PHONY := __archpost
+__archpost:
+
+-include include/config/auto.conf
+include $(srctree)/scripts/Kbuild.include
+
+quiet_cmd_relocs_check = CHKREL $@
+cmd_relocs_check = \
+ $(CONFIG_SHELL) $(srctree)/arch/riscv/tools/relocs_check.sh "$(OBJDUMP)" "$(NM)" "$@"
+
+# `@true` prevents complaint when there is nothing to be done
+
+vmlinux: FORCE
+ @true
+ifdef CONFIG_RELOCATABLE
+ $(call if_changed,relocs_check)
+endif
+
+%.ko: FORCE
+ @true
+
+clean:
+ @true
+
+PHONY += FORCE clean
+
+FORCE:
+
+.PHONY: $(PHONY)