Makefile 1.9 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
$(obj)/sha256.o: $(srctree)/lib/sha256.c FORCE
10 11
	$(call if_changed_rule,cc_o_c)

12 13 14
LDFLAGS_purgatory.ro := -e purgatory_start -r --no-undefined -nostdlib -z nodefaultlib
targets += purgatory.ro

15
KASAN_SANITIZE	:= n
E
Emese Revfy 已提交
16 17
KCOV_INSTRUMENT := n

18 19
# 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
20 21 22 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
# 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
48 49 50 51 52 53 54

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

targets += kexec-purgatory.c

quiet_cmd_bin2c = BIN2C   $@
55
      cmd_bin2c = $(objtree)/scripts/bin2c kexec_purgatory < $< > $@
56 57 58 59

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

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