|
|
@@ -18,37 +18,40 @@ targets += purgatory.ro
|
|
|
KASAN_SANITIZE := n
|
|
|
KCOV_INSTRUMENT := n
|
|
|
|
|
|
+# These are adjustments to the compiler flags used for objects that
|
|
|
+# make up the standalone purgatory.ro
|
|
|
+
|
|
|
+PURGATORY_CFLAGS_REMOVE := -mcmodel=kernel
|
|
|
+PURGATORY_CFLAGS := -mcmodel=large -ffreestanding -fno-zero-initialized-in-bss
|
|
|
+
|
|
|
# Default KBUILD_CFLAGS can have -pg option set when FTRACE is enabled. That
|
|
|
# in turn leaves some undefined symbols like __fentry__ in purgatory and not
|
|
|
# sure how to relocate those.
|
|
|
ifdef CONFIG_FUNCTION_TRACER
|
|
|
-CFLAGS_REMOVE_sha256.o += $(CC_FLAGS_FTRACE)
|
|
|
-CFLAGS_REMOVE_purgatory.o += $(CC_FLAGS_FTRACE)
|
|
|
-CFLAGS_REMOVE_string.o += $(CC_FLAGS_FTRACE)
|
|
|
-CFLAGS_REMOVE_kexec-purgatory.o += $(CC_FLAGS_FTRACE)
|
|
|
+PURGATORY_CFLAGS_REMOVE += $(CC_FLAGS_FTRACE)
|
|
|
endif
|
|
|
|
|
|
ifdef CONFIG_STACKPROTECTOR
|
|
|
-CFLAGS_REMOVE_sha256.o += -fstack-protector
|
|
|
-CFLAGS_REMOVE_purgatory.o += -fstack-protector
|
|
|
-CFLAGS_REMOVE_string.o += -fstack-protector
|
|
|
-CFLAGS_REMOVE_kexec-purgatory.o += -fstack-protector
|
|
|
+PURGATORY_CFLAGS_REMOVE += -fstack-protector
|
|
|
endif
|
|
|
|
|
|
ifdef CONFIG_STACKPROTECTOR_STRONG
|
|
|
-CFLAGS_REMOVE_sha256.o += -fstack-protector-strong
|
|
|
-CFLAGS_REMOVE_purgatory.o += -fstack-protector-strong
|
|
|
-CFLAGS_REMOVE_string.o += -fstack-protector-strong
|
|
|
-CFLAGS_REMOVE_kexec-purgatory.o += -fstack-protector-strong
|
|
|
+PURGATORY_CFLAGS_REMOVE += -fstack-protector-strong
|
|
|
endif
|
|
|
|
|
|
ifdef CONFIG_RETPOLINE
|
|
|
-CFLAGS_REMOVE_sha256.o += $(RETPOLINE_CFLAGS)
|
|
|
-CFLAGS_REMOVE_purgatory.o += $(RETPOLINE_CFLAGS)
|
|
|
-CFLAGS_REMOVE_string.o += $(RETPOLINE_CFLAGS)
|
|
|
-CFLAGS_REMOVE_kexec-purgatory.o += $(RETPOLINE_CFLAGS)
|
|
|
+PURGATORY_CFLAGS_REMOVE += $(RETPOLINE_CFLAGS)
|
|
|
endif
|
|
|
|
|
|
+CFLAGS_REMOVE_purgatory.o += $(PURGATORY_CFLAGS_REMOVE)
|
|
|
+CFLAGS_purgatory.o += $(PURGATORY_CFLAGS)
|
|
|
+
|
|
|
+CFLAGS_REMOVE_sha256.o += $(PURGATORY_CFLAGS_REMOVE)
|
|
|
+CFLAGS_sha256.o += $(PURGATORY_CFLAGS)
|
|
|
+
|
|
|
+CFLAGS_REMOVE_string.o += $(PURGATORY_CFLAGS_REMOVE)
|
|
|
+CFLAGS_string.o += $(PURGATORY_CFLAGS)
|
|
|
+
|
|
|
$(obj)/purgatory.ro: $(PURGATORY_OBJS) FORCE
|
|
|
$(call if_changed,ld)
|
|
|
|