s390: introduce compile time check for empty .bss section
authorVasily Gorbik <gor@linux.ibm.com>
Thu, 3 May 2018 14:40:13 +0000 (16:40 +0200)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Wed, 9 May 2018 08:55:01 +0000 (10:55 +0200)
Introduce compile time check for files which should avoid using .bss
section, because of the following reasons:
- .bss section has not been zeroed yet,
- initrd has not been moved to a safe location and could be overlapping
with .bss section.

Reviewed-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
arch/s390/kernel/Makefile
arch/s390/lib/Makefile
arch/s390/scripts/Makefile.chkbss [new file with mode: 0644]
drivers/s390/char/Makefile

index b514669..2fed39b 100644 (file)
@@ -98,3 +98,6 @@ obj-$(CONFIG_TRACEPOINTS)     += trace.o
 # vdso
 obj-y                          += vdso64/
 obj-$(CONFIG_COMPAT)           += vdso32/
+
+chkbss := head.o head64.o als.o early_nobss.o
+include $(srctree)/arch/s390/scripts/Makefile.chkbss
index 9bfe080..57ab401 100644 (file)
@@ -8,3 +8,6 @@ obj-y += mem.o xor.o
 lib-$(CONFIG_SMP) += spinlock.o
 lib-$(CONFIG_KPROBES) += probes.o
 lib-$(CONFIG_UPROBES) += probes.o
+
+chkbss := mem.o
+include $(srctree)/arch/s390/scripts/Makefile.chkbss
diff --git a/arch/s390/scripts/Makefile.chkbss b/arch/s390/scripts/Makefile.chkbss
new file mode 100644 (file)
index 0000000..d92f2d9
--- /dev/null
@@ -0,0 +1,14 @@
+# SPDX-License-Identifier: GPL-2.0
+
+quiet_cmd_chkbss = CHKBSS  $<
+define cmd_chkbss
+       if ! $(OBJDUMP) -j .bss -w -h $< | awk 'END { if ($$3) exit 1 }'; then \
+               echo "error: $< .bss section is not empty" >&2; exit 1; \
+       fi; \
+       touch $@;
+endef
+
+$(obj)/built-in.a: $(patsubst %, $(obj)/%.chkbss, $(chkbss))
+
+%.o.chkbss: %.o
+       $(call cmd,chkbss)
index d049e2d..0a4c13e 100644 (file)
@@ -54,3 +54,6 @@ obj-$(CONFIG_CRASH_DUMP) += sclp_sdias.o zcore.o
 
 hmcdrv-objs := hmcdrv_mod.o hmcdrv_dev.o hmcdrv_ftp.o hmcdrv_cache.o diag_ftp.o sclp_ftp.o
 obj-$(CONFIG_HMC_DRV) += hmcdrv.o
+
+chkbss := sclp_early_core.o
+include $(srctree)/arch/s390/scripts/Makefile.chkbss