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
)/sha256.o
: $(srctree
)/lib
/sha256.c FORCE
10 $(call if_changed_rule
,cc_o_c
)
12 LDFLAGS_purgatory.ro
:= -e purgatory_start
-r
--no-undefined
-nostdlib
-z nodefaultlib
13 targets
+= purgatory.ro
18 # Default KBUILD_CFLAGS can have -pg option set when FTRACE is enabled. That
19 # in turn leaves some undefined symbols like __fentry__ in purgatory and not
20 # sure how to relocate those. Like kexec-tools, use custom flags.
22 KBUILD_CFLAGS
:= -fno-strict-aliasing
-Wall
-Wstrict-prototypes
-fno-zero-initialized-in-bss
-fno-builtin
-ffreestanding
-c
-Os
-mcmodel
=large
23 KBUILD_CFLAGS
+= -m
$(BITS
)
24 KBUILD_CFLAGS
+= $(call cc-option
,-fno-PIE
)
26 $(obj
)/purgatory.ro
: $(PURGATORY_OBJS
) FORCE
29 targets
+= kexec-purgatory.c
31 CMD_BIN2C
= $(objtree
)/scripts
/basic
/bin2c
32 quiet_cmd_bin2c
= BIN2C
$@
33 cmd_bin2c
= $(CMD_BIN2C
) kexec_purgatory
< $< > $@
35 $(obj
)/kexec-purgatory.c
: $(obj
)/purgatory.ro FORCE
36 $(call if_changed
,bin2c
)
38 obj-
$(CONFIG_KEXEC_FILE
) += kexec-purgatory.o