Makefile 1.97 KB
Newer Older
1
# SPDX-License-Identifier: GPL-2.0
2
3
OBJECT_FILES_NON_STANDARD := y

4
5
6
7
8
purgatory-y := purgatory.o stack.o setup-x86_$(BITS).o sha256.o entry64.o string.o

targets += $(purgatory-y)
PURGATORY_OBJS = $(addprefix $(obj)/,$(purgatory-y))

9
10
11
$(obj)/string.o: $(srctree)/arch/x86/boot/compressed/string.c FORCE
	$(call if_changed_rule,cc_o_c)

12
$(obj)/sha256.o: $(srctree)/lib/sha256.c FORCE
13
14
	$(call if_changed_rule,cc_o_c)

15
16
17
LDFLAGS_purgatory.ro := -e purgatory_start -r --no-undefined -nostdlib -z nodefaultlib
targets += purgatory.ro

18
KASAN_SANITIZE	:= n
Emese Revfy's avatar
Emese Revfy committed
19
20
KCOV_INSTRUMENT := n

21
22
# 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
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# 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)
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
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
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)
endif
51
52
53
54
55
56
57

$(obj)/purgatory.ro: $(PURGATORY_OBJS) FORCE
		$(call if_changed,ld)

targets += kexec-purgatory.c

quiet_cmd_bin2c = BIN2C   $@
58
      cmd_bin2c = $(objtree)/scripts/bin2c kexec_purgatory < $< > $@
59
60
61
62

$(obj)/kexec-purgatory.c: $(obj)/purgatory.ro FORCE
	$(call if_changed,bin2c)

63
obj-$(CONFIG_KEXEC_FILE)	+= kexec-purgatory.o