diff options
author | Masahiro Yamada <yamada.masahiro@socionext.com> | 2018-08-22 16:51:09 +0300 |
---|---|---|
committer | Masahiro Yamada <yamada.masahiro@socionext.com> | 2018-08-24 02:10:00 +0300 |
commit | e85d1d65cd8a9083040e280d172eba762875f8f1 (patch) | |
tree | 8038ed2a967ad92502f45a7173bdda15cfed57b7 | |
parent | f6f57a46435d7253a52a1a07a58183678ad266a0 (diff) | |
download | linux-e85d1d65cd8a9083040e280d172eba762875f8f1.tar.xz |
kbuild: test dead code/data elimination support in Kconfig
This config option should be enabled only when both the compiler and
the linker support necessary flags. Add proper dependencies to Kconfig.
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
-rw-r--r-- | Makefile | 8 | ||||
-rw-r--r-- | init/Kconfig | 2 |
2 files changed, 4 insertions, 6 deletions
@@ -790,8 +790,8 @@ KBUILD_CFLAGS += $(call cc-option, -fno-inline-functions-called-once) endif ifdef CONFIG_LD_DEAD_CODE_DATA_ELIMINATION -KBUILD_CFLAGS_KERNEL += $(call cc-option,-ffunction-sections,) -KBUILD_CFLAGS_KERNEL += $(call cc-option,-fdata-sections,) +KBUILD_CFLAGS_KERNEL += -ffunction-sections -fdata-sections +LDFLAGS_vmlinux += --gc-sections endif # arch Makefile may override CC so keep this after arch Makefile is included @@ -857,10 +857,6 @@ LDFLAGS_BUILD_ID := $(call ld-option, --build-id) KBUILD_LDFLAGS_MODULE += $(LDFLAGS_BUILD_ID) LDFLAGS_vmlinux += $(LDFLAGS_BUILD_ID) -ifdef CONFIG_LD_DEAD_CODE_DATA_ELIMINATION -LDFLAGS_vmlinux += $(call ld-option, --gc-sections,) -endif - ifeq ($(CONFIG_STRIP_ASM_SYMS),y) LDFLAGS_vmlinux += $(call ld-option, -X,) endif diff --git a/init/Kconfig b/init/Kconfig index 9bd50ba8253f..21b855921eaf 100644 --- a/init/Kconfig +++ b/init/Kconfig @@ -1085,6 +1085,8 @@ config LD_DEAD_CODE_DATA_ELIMINATION bool "Dead code and data elimination (EXPERIMENTAL)" depends on HAVE_LD_DEAD_CODE_DATA_ELIMINATION depends on EXPERT + depends on $(cc-option,-ffunction-sections -fdata-sections) + depends on $(ld-option,--gc-sections) help Enable this if you want to do dead code and data elimination with the linker by compiling with -ffunction-sections -fdata-sections, |