kbuild: fix ksym_dep_filter when multiple EXPORT_SYMBOL() on the same line
authorNicolas Pitre <nicolas.pitre@linaro.org>
Thu, 28 Apr 2016 21:29:42 +0000 (17:29 -0400)
committerMichal Marek <mmarek@suse.com>
Tue, 10 May 2016 15:24:15 +0000 (17:24 +0200)
In kernel/cgroup.c there is:

    #define SUBSYS(_x)                                             \
        DEFINE_STATIC_KEY_TRUE(_x ## _cgrp_subsys_enabled_key);    \
        DEFINE_STATIC_KEY_TRUE(_x ## _cgrp_subsys_on_dfl_key);     \
        EXPORT_SYMBOL_GPL(_x ## _cgrp_subsys_enabled_key);         \
        EXPORT_SYMBOL_GPL(_x ## _cgrp_subsys_on_dfl_key);

The expansion of this macro causes multiple EXPORT_SYMBOL_GPL() instances
to appear on the same preprocessor line output, confusing the sed script
expecting only one of them per line.  Unfortunately this can't be fixed
nicely in the sed script as sed's regexp can't do non greedy matching.

Fix this by turning any semicolon into a line break before filtering.

Reported-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Nicolas Pitre <nico@linaro.org>
Signed-off-by: Michal Marek <mmarek@suse.com>
scripts/Kbuild.include

index 36e9475395aae316ad80c31fa25fe340875dc88f..1f0d41cc73d164a47bfbcefa2eaff2f113aaa885 100644 (file)
@@ -281,7 +281,7 @@ ksym_dep_filter =                                                            \
            $(CPP) $(call flags_nodeps,a_flags) -D__KSYM_DEPS__ $< ;;        \
          boot*|build*|*cpp_lds_S|dtc|host*|vdso*) : ;;                      \
          *) echo "Don't know how to preprocess $(1)" >&2; false ;;          \
-       esac | sed -rn 's/^.*=== __KSYM_(.*) ===.*$$/KSYM_\1/p'
+       esac | tr ";" "\n" | sed -rn 's/^.*=== __KSYM_(.*) ===.*$$/KSYM_\1/p'
 
 cmd_and_fixdep =                                                             \
        $(echo-cmd) $(cmd_$(1));                                             \