hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
kernel/arch/s390/purgatory/Makefile
....@@ -4,11 +4,13 @@
44
55 purgatory-y := head.o purgatory.o string.o sha256.o mem.o
66
7
-targets += $(purgatory-y) purgatory.ro kexec-purgatory.c
7
+targets += $(purgatory-y) purgatory.lds purgatory purgatory.chk purgatory.ro
88 PURGATORY_OBJS = $(addprefix $(obj)/,$(purgatory-y))
99
10
-$(obj)/sha256.o: $(srctree)/lib/sha256.c FORCE
10
+$(obj)/sha256.o: $(srctree)/lib/crypto/sha256.c FORCE
1111 $(call if_changed_rule,cc_o_c)
12
+
13
+CFLAGS_sha256.o := -D__DISABLE_EXPORTS
1214
1315 $(obj)/mem.o: $(srctree)/arch/s390/lib/mem.S FORCE
1416 $(call if_changed_rule,as_o_S)
....@@ -18,22 +20,35 @@
1820 UBSAN_SANITIZE := n
1921 KASAN_SANITIZE := n
2022
21
-LDFLAGS_purgatory.ro := -e purgatory_start -r --no-undefined -nostdlib
22
-LDFLAGS_purgatory.ro += -z nodefaultlib
2323 KBUILD_CFLAGS := -fno-strict-aliasing -Wall -Wstrict-prototypes
2424 KBUILD_CFLAGS += -Wno-pointer-sign -Wno-sign-compare
2525 KBUILD_CFLAGS += -fno-zero-initialized-in-bss -fno-builtin -ffreestanding
2626 KBUILD_CFLAGS += -c -MD -Os -m64 -msoft-float -fno-common
27
+KBUILD_CFLAGS += -fno-stack-protector
28
+KBUILD_CFLAGS += -DDISABLE_BRANCH_PROFILING
29
+KBUILD_CFLAGS += $(CLANG_FLAGS)
2730 KBUILD_CFLAGS += $(call cc-option,-fno-PIE)
2831 KBUILD_AFLAGS := $(filter-out -DCC_USING_EXPOLINE,$(KBUILD_AFLAGS))
2932
30
-$(obj)/purgatory.ro: $(PURGATORY_OBJS) FORCE
33
+# Since we link purgatory with -r unresolved symbols are not checked, so we
34
+# also link a purgatory.chk binary without -r to check for unresolved symbols.
35
+PURGATORY_LDFLAGS := -nostdlib -z nodefaultlib
36
+LDFLAGS_purgatory := -r $(PURGATORY_LDFLAGS) -T
37
+LDFLAGS_purgatory.chk := -e purgatory_start $(PURGATORY_LDFLAGS)
38
+$(obj)/purgatory: $(obj)/purgatory.lds $(PURGATORY_OBJS) FORCE
3139 $(call if_changed,ld)
3240
33
-quiet_cmd_bin2c = BIN2C $@
34
- cmd_bin2c = $(objtree)/scripts/bin2c kexec_purgatory < $< > $@
41
+$(obj)/purgatory.chk: $(obj)/purgatory FORCE
42
+ $(call if_changed,ld)
3543
36
-$(obj)/kexec-purgatory.c: $(obj)/purgatory.ro FORCE
37
- $(call if_changed,bin2c)
44
+OBJCOPYFLAGS_purgatory.ro := -O elf64-s390
45
+OBJCOPYFLAGS_purgatory.ro += --remove-section='*debug*'
46
+OBJCOPYFLAGS_purgatory.ro += --remove-section='.comment'
47
+OBJCOPYFLAGS_purgatory.ro += --remove-section='.note.*'
48
+$(obj)/purgatory.ro: $(obj)/purgatory $(obj)/purgatory.chk FORCE
49
+ $(call if_changed,objcopy)
50
+
51
+$(obj)/kexec-purgatory.o: $(obj)/kexec-purgatory.S $(obj)/purgatory.ro FORCE
52
+ $(call if_changed_rule,as_o_S)
3853
3954 obj-$(CONFIG_ARCH_HAS_KEXEC_PURGATORY) += kexec-purgatory.o