1 # SPDX-License-Identifier: GPL-2.0
3 OBJECT_FILES_NON_STANDARD
:= y
5 purgatory-y
:= head.o purgatory.o string.o sha256.o mem.o
7 targets
+= $(purgatory-y
) purgatory.lds purgatory purgatory.chk purgatory.ro
8 PURGATORY_OBJS
= $(addprefix $(obj
)/,$(purgatory-y
))
10 $(obj
)/sha256.o
: $(srctree
)/lib
/crypto
/sha256.c FORCE
11 $(call if_changed_rule
,cc_o_c
)
13 CFLAGS_sha256.o
:= -D__DISABLE_EXPORTS
15 $(obj
)/mem.o
: $(srctree
)/arch
/s390
/lib
/mem.S FORCE
16 $(call if_changed_rule
,as_o_S
)
23 KBUILD_CFLAGS
:= -fno-strict-aliasing
-Wall
-Wstrict-prototypes
24 KBUILD_CFLAGS
+= -Wno-pointer-sign
-Wno-sign-compare
25 KBUILD_CFLAGS
+= -fno-zero-initialized-in-bss
-fno-builtin
-ffreestanding
26 KBUILD_CFLAGS
+= -c
-MD
-Os
-m64
-msoft-float
-fno-common
27 KBUILD_CFLAGS
+= $(CLANG_FLAGS
)
28 KBUILD_CFLAGS
+= $(call cc-option
,-fno-PIE
)
29 KBUILD_AFLAGS
:= $(filter-out -DCC_USING_EXPOLINE
,$(KBUILD_AFLAGS
))
31 # Since we link purgatory with -r unresolved symbols are not checked, so we
32 # also link a purgatory.chk binary without -r to check for unresolved symbols.
33 PURGATORY_LDFLAGS
:= -nostdlib
-z nodefaultlib
34 LDFLAGS_purgatory
:= -r
$(PURGATORY_LDFLAGS
) -T
35 LDFLAGS_purgatory.chk
:= -e purgatory_start
$(PURGATORY_LDFLAGS
)
36 $(obj
)/purgatory
: $(obj
)/purgatory.lds
$(PURGATORY_OBJS
) FORCE
39 $(obj
)/purgatory.chk
: $(obj
)/purgatory FORCE
42 OBJCOPYFLAGS_purgatory.ro
:= -O elf64-s390
43 OBJCOPYFLAGS_purgatory.ro
+= --remove-section
='*debug*'
44 OBJCOPYFLAGS_purgatory.ro
+= --remove-section
='.comment'
45 OBJCOPYFLAGS_purgatory.ro
+= --remove-section
='.note.*'
46 $(obj
)/purgatory.ro
: $(obj
)/purgatory
$(obj
)/purgatory.chk FORCE
47 $(call if_changed
,objcopy
)
49 $(obj
)/kexec-purgatory.o
: $(obj
)/kexec-purgatory.S
$(obj
)/purgatory.ro FORCE
50 $(call if_changed_rule
,as_o_S
)
52 obj-
$(CONFIG_ARCH_HAS_KEXEC_PURGATORY
) += kexec-purgatory.o