forked from ~ljy/RK356X_SDK_RELEASE

hc
2023-12-11 6778948f9de86c3cfaf36725a7c87dcff9ba247f
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,34 @@
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 += $(CLANG_FLAGS)
2729 KBUILD_CFLAGS += $(call cc-option,-fno-PIE)
2830 KBUILD_AFLAGS := $(filter-out -DCC_USING_EXPOLINE,$(KBUILD_AFLAGS))
2931
30
-$(obj)/purgatory.ro: $(PURGATORY_OBJS) FORCE
32
+# Since we link purgatory with -r unresolved symbols are not checked, so we
33
+# also link a purgatory.chk binary without -r to check for unresolved symbols.
34
+PURGATORY_LDFLAGS := -nostdlib -z nodefaultlib
35
+LDFLAGS_purgatory := -r $(PURGATORY_LDFLAGS) -T
36
+LDFLAGS_purgatory.chk := -e purgatory_start $(PURGATORY_LDFLAGS)
37
+$(obj)/purgatory: $(obj)/purgatory.lds $(PURGATORY_OBJS) FORCE
3138 $(call if_changed,ld)
3239
33
-quiet_cmd_bin2c = BIN2C $@
34
- cmd_bin2c = $(objtree)/scripts/bin2c kexec_purgatory < $< > $@
40
+$(obj)/purgatory.chk: $(obj)/purgatory FORCE
41
+ $(call if_changed,ld)
3542
36
-$(obj)/kexec-purgatory.c: $(obj)/purgatory.ro FORCE
37
- $(call if_changed,bin2c)
43
+OBJCOPYFLAGS_purgatory.ro := -O elf64-s390
44
+OBJCOPYFLAGS_purgatory.ro += --remove-section='*debug*'
45
+OBJCOPYFLAGS_purgatory.ro += --remove-section='.comment'
46
+OBJCOPYFLAGS_purgatory.ro += --remove-section='.note.*'
47
+$(obj)/purgatory.ro: $(obj)/purgatory $(obj)/purgatory.chk FORCE
48
+ $(call if_changed,objcopy)
49
+
50
+$(obj)/kexec-purgatory.o: $(obj)/kexec-purgatory.S $(obj)/purgatory.ro FORCE
51
+ $(call if_changed_rule,as_o_S)
3852
3953 obj-$(CONFIG_ARCH_HAS_KEXEC_PURGATORY) += kexec-purgatory.o