1 # SPDX-License-Identifier: GPL-2.0
2 OBJECT_FILES_NON_STANDARD
:= y
4 purgatory-y
:= purgatory.o stack.o setup-x86_
$(BITS
).o sha256.o entry64.o string.o
6 targets
+= $(purgatory-y
)
7 PURGATORY_OBJS
= $(addprefix $(obj
)/,$(purgatory-y
))
9 $(obj
)/string.o
: $(srctree
)/arch
/x86
/boot
/compressed
/string.c FORCE
10 $(call if_changed_rule
,cc_o_c
)
12 $(obj
)/sha256.o
: $(srctree
)/lib
/crypto
/sha256.c FORCE
13 $(call if_changed_rule
,cc_o_c
)
15 CFLAGS_sha256.o
:= -D__DISABLE_EXPORTS
17 LDFLAGS_purgatory.ro
:= -e purgatory_start
-r
--no-undefined
-nostdlib
-z nodefaultlib
18 targets
+= purgatory.ro
23 # These are adjustments to the compiler flags used for objects that
24 # make up the standalone purgatory.ro
26 PURGATORY_CFLAGS_REMOVE
:= -mcmodel
=kernel
27 PURGATORY_CFLAGS
:= -mcmodel
=large
-ffreestanding
-fno-zero-initialized-in-bss
28 PURGATORY_CFLAGS
+= $(DISABLE_STACKLEAK_PLUGIN
)
30 # Default KBUILD_CFLAGS can have -pg option set when FTRACE is enabled. That
31 # in turn leaves some undefined symbols like __fentry__ in purgatory and not
32 # sure how to relocate those.
33 ifdef CONFIG_FUNCTION_TRACER
34 PURGATORY_CFLAGS_REMOVE
+= $(CC_FLAGS_FTRACE
)
37 ifdef CONFIG_STACKPROTECTOR
38 PURGATORY_CFLAGS_REMOVE
+= -fstack-protector
41 ifdef CONFIG_STACKPROTECTOR_STRONG
42 PURGATORY_CFLAGS_REMOVE
+= -fstack-protector-strong
45 ifdef CONFIG_RETPOLINE
46 PURGATORY_CFLAGS_REMOVE
+= $(RETPOLINE_CFLAGS
)
49 CFLAGS_REMOVE_purgatory.o
+= $(PURGATORY_CFLAGS_REMOVE
)
50 CFLAGS_purgatory.o
+= $(PURGATORY_CFLAGS
)
52 CFLAGS_REMOVE_sha256.o
+= $(PURGATORY_CFLAGS_REMOVE
)
53 CFLAGS_sha256.o
+= $(PURGATORY_CFLAGS
)
55 CFLAGS_REMOVE_string.o
+= $(PURGATORY_CFLAGS_REMOVE
)
56 CFLAGS_string.o
+= $(PURGATORY_CFLAGS
)
58 $(obj
)/purgatory.ro
: $(PURGATORY_OBJS
) FORCE
61 targets
+= kexec-purgatory.c
63 quiet_cmd_bin2c
= BIN2C
$@
64 cmd_bin2c
= $(objtree
)/scripts
/bin2c kexec_purgatory
< $< > $@
66 $(obj
)/kexec-purgatory.c
: $(obj
)/purgatory.ro FORCE
67 $(call if_changed
,bin2c
)
69 obj-
$(CONFIG_KEXEC_FILE
) += kexec-purgatory.o