739bacbf7a
Currently empty .bss checks performed do not pay attention to "common objects" in object files which end up in .bss section eventually. The "size" tool is a part of binutils and since version 2.18 provides "--common" command line option, which allows to account "common objects" sizes in .bss section size. Utilize "size --common" to perform accurate check that .bss section is unused. Besides that the size tool handles object files without .bss section gracefully and doesn't require additional objdump run. The linux kernel requires binutils 2.20 since 4.13. Kbuild exports OBJSIZE to reference the right size tool. Link: http://lkml.kernel.org/r/patch-2.thread-2257a1.git-2257a1c53d4a.your-ad-here.call-01565088755-ext-5120@work.hours Reported-and-tested-by: Heiko Carstens <heiko.carstens@de.ibm.com> Acked-by: Heiko Carstens <heiko.carstens@de.ibm.com> Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
21 lines
492 B
Makefile
21 lines
492 B
Makefile
# SPDX-License-Identifier: GPL-2.0
|
|
|
|
chkbss-target ?= built-in.a
|
|
$(obj)/$(chkbss-target): chkbss
|
|
|
|
chkbss-files := $(addsuffix .chkbss, $(chkbss))
|
|
clean-files += $(chkbss-files)
|
|
|
|
PHONY += chkbss
|
|
chkbss: $(addprefix $(obj)/, $(chkbss-files))
|
|
|
|
quiet_cmd_chkbss = CHKBSS $<
|
|
cmd_chkbss = \
|
|
if ! $(OBJSIZE) --common $< | $(AWK) 'END { if ($$3) exit 1 }'; then \
|
|
echo "error: $< .bss section is not empty" >&2; exit 1; \
|
|
fi; \
|
|
touch $@;
|
|
|
|
$(obj)/%.o.chkbss: $(obj)/%.o
|
|
$(call cmd,chkbss)
|