mirror of https://gitee.com/openkylin/linux.git
s390: introduce .boot.data section compile time validation
Make sure that .boot.data sections of vmlinux and arch/s390/compressed/vmlinux match before producing the compressed kernel image. Symbols presence, order and sizes are cross-checked. Reviewed-by: Martin Schwidefsky <schwidefsky@de.ibm.com> Signed-off-by: Vasily Gorbik <gor@linux.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:
parent
6966d604e2
commit
251b72a440
|
@ -1,2 +1,3 @@
|
|||
image
|
||||
bzImage
|
||||
section_cmp.*
|
||||
|
|
|
@ -28,14 +28,30 @@ endif
|
|||
CFLAGS_sclp_early_core.o += -I$(srctree)/drivers/s390/char
|
||||
|
||||
obj-y := head.o als.o startup.o mem_detect.o ebcdic.o sclp_early_core.o mem.o
|
||||
targets := bzImage startup.a $(obj-y)
|
||||
targets := bzImage startup.a section_cmp.boot.data $(obj-y)
|
||||
subdir- := compressed
|
||||
|
||||
OBJECTS := $(addprefix $(obj)/,$(obj-y))
|
||||
|
||||
$(obj)/bzImage: $(obj)/compressed/vmlinux FORCE
|
||||
quiet_cmd_section_cmp = SECTCMP $*
|
||||
define cmd_section_cmp
|
||||
s1=`$(OBJDUMP) -t -j "$*" "$<" | sort | \
|
||||
sed -n "/0000000000000000/! s/.*\s$*\s\+//p" | sha256sum`; \
|
||||
s2=`$(OBJDUMP) -t -j "$*" "$(word 2,$^)" | sort | \
|
||||
sed -n "/0000000000000000/! s/.*\s$*\s\+//p" | sha256sum`; \
|
||||
if [ "$$s1" != "$$s2" ]; then \
|
||||
echo "error: section $* differs between $< and $(word 2,$^)" >&2; \
|
||||
exit 1; \
|
||||
fi; \
|
||||
touch $@
|
||||
endef
|
||||
|
||||
$(obj)/bzImage: $(obj)/compressed/vmlinux $(obj)/section_cmp.boot.data FORCE
|
||||
$(call if_changed,objcopy)
|
||||
|
||||
$(obj)/section_cmp%: vmlinux $(obj)/compressed/vmlinux FORCE
|
||||
$(call if_changed,section_cmp)
|
||||
|
||||
$(obj)/compressed/vmlinux: $(obj)/startup.a FORCE
|
||||
$(Q)$(MAKE) $(build)=$(obj)/compressed $@
|
||||
|
||||
|
|
Loading…
Reference in New Issue