History

Merge tag 'kbuild-v5.7' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild

Pull Kbuild updates from Masahiro Yamada: "Build system: - add CONFIG_UNUSED_KSYMS_WHITELIST, which will be useful to define a fixed set of export symbols for Generic Kernel Image (GKI) - allow to run 'make dt_binding_check' without .config - use full schema for checking DT examples in *.yaml files - make modpost fail for missing MODULE_IMPORT_NS(), which makes more sense because we know the produced modules are never loadable - Remove unused 'AS' variable Kconfig: - sanitize DEFCONFIG_LIST, and remove ARCH_DEFCONFIG from Kconfig files - relax the 'imply' behavior so that symbols implied by 'y' can become 'm' - make 'imply' obey 'depends on' in order to make 'imply' really weak Misc: - add documentation on building the kernel with Clang/LLVM - revive __HAVE_ARCH_STRLEN for 32bit sparc to use optimized strlen() - fix warning from deb-pkg builds when CONFIG_DEBUG_INFO=n - various script and Makefile cleanups" * tag 'kbuild-v5.7' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild: (34 commits) Makefile: Update kselftest help information kbuild: deb-pkg: fix warning when CONFIG_DEBUG_INFO is unset kbuild: add outputmakefile to no-dot-config-targets kbuild: remove AS variable net: wan: wanxl: refactor the firmware rebuild rule net: wan: wanxl: use $(M68KCC) instead of $(M68KAS) for rebuilding firmware net: wan: wanxl: use allow to pass CROSS_COMPILE_M68k for rebuilding firmware kbuild: add comment about grouped target kbuild: add -Wall to KBUILD_HOSTCXXFLAGS kconfig: remove unused variable in qconf.cc sparc: revive __HAVE_ARCH_STRLEN for 32bit sparc kbuild: refactor Makefile.dtbinst more kbuild: compute the dtbs_install destination more simply Makefile: disallow data races on gcc-10 as well kconfig: make 'imply' obey the direct dependency kconfig: allow symbols implied by y to become m net: drop_monitor: use IS_REACHABLE() to guard net_dm_hw_report() modpost: return error if module is missing ns imports and MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS=n modpost: rework and consolidate logging interface kbuild: allow to run dt_binding_check without kernel configuration ...

Linus Torvalds committed 6 years ago

Commit 5b67fbf2 parents a162984 e51d8da35 files · +356 −200Browse files

Unified · Split

35 files
  1. Documentation/Makefile +2 −1
  2. Documentation/devicetree/bindings/.gitignore +1 −1
  3. Documentation/devicetree/bindings/Makefile +20 −12
  4. Documentation/devicetree/writing-schema.rst +4 −0
  5. Documentation/kbuild/index.rst +1 −0
  6. Documentation/kbuild/kconfig-language.rst +24 −3
  7. Documentation/kbuild/llvm.rst +80 −0
  8. MAINTAINERS +1 −0
  9. Makefile +37 −18
  10. arch/sh/Kconfig +0 −5
  11. arch/sparc/Kconfig +0 −5
  12. arch/sparc/include/asm/string.h +4 −0
  13. arch/sparc/include/asm/string_64.h +0 −4
  14. arch/x86/Kconfig +0 −5
  15. arch/x86/um/Kconfig +0 −5
  16. drivers/net/wan/Kconfig +1 −1
  17. drivers/net/wan/Makefile +22 −13
  18. include/net/drop_monitor.h +1 −1
  19. init/Kconfig +14 −2
  20. lib/Kconfig.debug +1 −2
  21. scripts/Makefile.dtbinst +11 −15
  22. scripts/Makefile.lib +2 −1
  23. scripts/Makefile.modpost +8 −7
  24. scripts/adjust_autoksyms.sh +4 −20
  25. scripts/basic/fixdep.c +2 −8
  26. scripts/dtc/Makefile +3 −2
  27. scripts/gcc-plugins/Makefile +1 −1
  28. scripts/gen_autoksyms.sh +52 −0
  29. scripts/kconfig/Makefile +0 −4
  30. scripts/kconfig/qconf.cc +0 −2
  31. scripts/kconfig/symbol.c +4 −5
  32. scripts/mkcompile_h +0 −11
  33. scripts/mod/modpost.c +40 −43
  34. scripts/mod/modpost.h +11 −3
  35. scripts/package/mkdebian +5 −0
Documentation/Makefile+2−1
@@ -2,7 +2,8 @@ · 1 unmodified line
22 # Makefile for Sphinx documentation
33 #
44
5−subdir-y := devicetree/bindings/
5+# for cleaning
6+subdir- := devicetree/bindings
67
78 # Check for broken documentation file references
89 ifeq ($(CONFIG_WARN_MISSING_DOCUMENTS),y)
Documentation/devicetree/bindings/.gitignore+1−1
@@ -1,2 +1,2 @@
11 *.example.dts
2−processed-schema.yaml
2+processed-schema*.yaml
Documentation/devicetree/bindings/Makefile+20−12
@@ -2,7 +2,6 @@ · 1 unmodified line
22 DT_DOC_CHECKER ?= dt-doc-validate
33 DT_EXTRACT_EX ?= dt-extract-example
44 DT_MK_SCHEMA ?= dt-mk-schema
5−DT_MK_SCHEMA_FLAGS := $(if $(DT_SCHEMA_FILES), -u)
65
76 quiet_cmd_chk_binding = CHKDT $(patsubst $(srctree)/%,%,$<)
87 cmd_chk_binding = $(DT_DOC_CHECKER) -u $(srctree)/$(src) $< ; \
@@ -11,26 +10,35 @@ quiet_cmd_chk_binding = CHKDT $(patsubst $(srctree)/%,%,$<) · 2 unmodified lines
1110 $(obj)/%.example.dts: $(src)/%.yaml FORCE
1211 $(call if_changed,chk_binding)
1312
14−DT_TMP_SCHEMA := processed-schema.yaml
13+# Use full schemas when checking %.example.dts
14+DT_TMP_SCHEMA := $(obj)/processed-schema-examples.yaml
1515
1616 quiet_cmd_mk_schema = SCHEMA $@
1717 cmd_mk_schema = $(DT_MK_SCHEMA) $(DT_MK_SCHEMA_FLAGS) -o $@ $(real-prereqs)
1818
19−DT_DOCS = $(shell \
19+DT_DOCS = $(addprefix $(src)/, \
20+ $(shell \
2021 cd $(srctree)/$(src) && \
2122 find * \( -name '*.yaml' ! \
22− -name $(DT_TMP_SCHEMA) ! \
23+ -name 'processed-schema*' ! \
2324 -name '*.example.dt.yaml' \) \
24− )
25+ ))
2526
26−DT_SCHEMA_FILES ?= $(addprefix $(src)/,$(DT_DOCS))
27+DT_SCHEMA_FILES ?= $(DT_DOCS)
2728
28−ifeq ($(CHECK_DTBS),)
29−extra-y += $(patsubst $(src)/%.yaml,%.example.dts, $(DT_SCHEMA_FILES))
30−extra-y += $(patsubst $(src)/%.yaml,%.example.dt.yaml, $(DT_SCHEMA_FILES))
31−endif
29+extra-$(CHECK_DT_BINDING) += $(patsubst $(src)/%.yaml,%.example.dts, $(DT_SCHEMA_FILES))
30+extra-$(CHECK_DT_BINDING) += $(patsubst $(src)/%.yaml,%.example.dt.yaml, $(DT_SCHEMA_FILES))
31+extra-$(CHECK_DT_BINDING) += processed-schema-examples.yaml
3232
33−$(obj)/$(DT_TMP_SCHEMA): $(DT_SCHEMA_FILES) FORCE
33+override DTC_FLAGS := \
34+ -Wno-avoid_unnecessary_addr_size \
35+ -Wno-graph_child_address
36+
37+$(obj)/processed-schema-examples.yaml: $(DT_DOCS) FORCE
38+ $(call if_changed,mk_schema)
39+
40+$(obj)/processed-schema.yaml: DT_MK_SCHEMA_FLAGS := -u
41+$(obj)/processed-schema.yaml: $(DT_SCHEMA_FILES) FORCE
3442 $(call if_changed,mk_schema)
3543
36−extra-y += $(DT_TMP_SCHEMA)
44+extra-y += processed-schema.yaml
Documentation/devicetree/writing-schema.rst+4−0
@@ -147,6 +147,10 @@ Note that ``dtbs_check`` will skip any binding schema files with errors. It is · 146 unmodified lines
147147 necessary to use ``dt_binding_check`` to get all the validation errors in the
148148 binding schema files.
149149
150+It is possible to run both in a single command::
151+
152+ make dt_binding_check dtbs_check
153+
150154 It is also possible to run checks with a single schema file by setting the
151155 ``DT_SCHEMA_FILES`` variable to a specific schema file.
152156
Documentation/kbuild/index.rst+1−0
@@ -20,6 +20,7 @@ Kernel Build System · 19 unmodified lines
2020 issues
2121 reproducible-builds
2222 gcc-plugins
23+ llvm
2324
2425 .. only:: subproject and html
2526
Documentation/kbuild/kconfig-language.rst+24−3
@@ -159,11 +159,11 @@ applicable everywhere (see syntax). · 158 unmodified lines
159159 Given the following example::
160160
161161 config FOO
162− tristate
162+ tristate "foo"
163163 imply BAZ
164164
165165 config BAZ
166− tristate
166+ tristate "baz"
167167 depends on BAR
168168
169169 The following values are possible:
@@ -173,7 +173,10 @@ applicable everywhere (see syntax). · 3 unmodified lines
173173 === === ============= ==============
174174 n y n N/m/y
175175 m y m M/y/n
176− y y y Y/n
176+ y y y Y/m/n
177+ n m n N/m
178+ m m m M/n
179+ y m n M/n
177180 y n * N
178181 === === ============= ==============
179182
@@ -181,6 +184,24 @@ applicable everywhere (see syntax). · 1 unmodified line
181184 ability to hook into a secondary subsystem while allowing the user to
182185 configure that subsystem out without also having to unset these drivers.
183186
187+ Note: If the combination of FOO=y and BAR=m causes a link error,
188+ you can guard the function call with IS_REACHABLE()::
189+
190+ foo_init()
191+ {
192+ if (IS_REACHABLE(CONFIG_BAZ))
193+ baz_register(&foo);
194+ ...
195+ }
196+
197+ Note: If the feature provided by BAZ is highly desirable for FOO,
198+ FOO should imply not only BAZ, but also its dependency BAR::
199+
200+ config FOO
201+ tristate "foo"
202+ imply BAR
203+ imply BAZ
204+
184205 - limiting menu display: "visible if" <expr>
185206
186207 This attribute is only applicable to menu blocks, if the condition is
Documentation/kbuild/llvm.rst+80−0
@@ -0,0 +1,80 @@
1+==============================
2+Building Linux with Clang/LLVM
3+==============================
4+
5+This document covers how to build the Linux kernel with Clang and LLVM
6+utilities.
7+
8+About
9+-----
10+
11+The Linux kernel has always traditionally been compiled with GNU toolchains
12+such as GCC and binutils. Ongoing work has allowed for `Clang
13+<https://clang.llvm.org/>`_ and `LLVM <https://llvm.org/>`_ utilities to be
14+used as viable substitutes. Distributions such as `Android
15+<https://www.android.com/>`_, `ChromeOS
16+<https://www.chromium.org/chromium-os>`_, and `OpenMandriva
17+<https://www.openmandriva.org/>`_ use Clang built kernels. `LLVM is a
18+collection of toolchain components implemented in terms of C++ objects
19+<https://www.aosabook.org/en/llvm.html>`_. Clang is a front-end to LLVM that
20+supports C and the GNU C extensions required by the kernel, and is pronounced
21+"klang," not "see-lang."
22+
23+Clang
24+-----
25+
26+The compiler used can be swapped out via `CC=` command line argument to `make`.
27+`CC=` should be set when selecting a config and during a build.
28+
29+ make CC=clang defconfig
30+
31+ make CC=clang
32+
33+Cross Compiling
34+---------------
35+
36+A single Clang compiler binary will typically contain all supported backends,
37+which can help simplify cross compiling.
38+
39+ ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- make CC=clang
40+
41+`CROSS_COMPILE` is not used to prefix the Clang compiler binary, instead
42+`CROSS_COMPILE` is used to set a command line flag: `--target <triple>`. For
43+example:
44+
45+ clang --target aarch64-linux-gnu foo.c
46+
47+LLVM Utilities
48+--------------
49+
50+LLVM has substitutes for GNU binutils utilities. These can be invoked as
51+additional parameters to `make`.
52+
53+ make CC=clang AS=clang LD=ld.lld AR=llvm-ar NM=llvm-nm STRIP=llvm-strip \\
54+ OBJCOPY=llvm-objcopy OBJDUMP=llvm-objdump OBJSIZE=llvm-objsize \\
55+ READELF=llvm-readelf HOSTCC=clang HOSTCXX=clang++ HOSTAR=llvm-ar \\
56+ HOSTLD=ld.lld
57+
58+Getting Help
59+------------
60+
61+- `Website <https://clangbuiltlinux.github.io/>`_
62+- `Mailing List <https://groups.google.com/forum/#!forum/clang-built-linux>`_: <clang-built-linux@googlegroups.com>
63+- `Issue Tracker <https://github.com/ClangBuiltLinux/linux/issues>`_
64+- IRC: #clangbuiltlinux on chat.freenode.net
65+- `Telegram <https://t.me/ClangBuiltLinux>`_: @ClangBuiltLinux
66+- `Wiki <https://github.com/ClangBuiltLinux/linux/wiki>`_
67+- `Beginner Bugs <https://github.com/ClangBuiltLinux/linux/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22>`_
68+
69+Getting LLVM
70+-------------
71+
72+- http://releases.llvm.org/download.html
73+- https://github.com/llvm/llvm-project
74+- https://llvm.org/docs/GettingStarted.html
75+- https://llvm.org/docs/CMake.html
76+- https://apt.llvm.org/
77+- https://www.archlinux.org/packages/extra/x86_64/llvm/
78+- https://github.com/ClangBuiltLinux/tc-build
79+- https://github.com/ClangBuiltLinux/linux/wiki/Building-Clang-from-source
80+- https://android.googlesource.com/platform/prebuilts/clang/host/linux-x86/
MAINTAINERS+1−0
@@ -4139,6 +4139,7 @@ B: https://github.com/ClangBuiltLinux/linux/issues · 4138 unmodified lines
41394139 C: irc://chat.freenode.net/clangbuiltlinux
41404140 S: Supported
41414141 K: \b(?i:clang|llvm)\b
4142+F: Documentation/kbuild/llvm.rst
41424143
41434144 CLEANCACHE API
41444145 M: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Makefile+37−18
@@ -255,7 +255,8 @@ clean-targets := %clean mrproper cleandocs · 254 unmodified lines
255255 no-dot-config-targets := $(clean-targets) \
256256 cscope gtags TAGS tags help% %docs check% coccicheck \
257257 $(version_h) headers headers_% archheaders archscripts \
258− %asm-generic kernelversion %src-pkg
258+ %asm-generic kernelversion %src-pkg dt_binding_check \
259+ outputmakefile
259260 no-sync-config-targets := $(no-dot-config-targets) install %install \
260261 kernelrelease
261262 single-targets := %.a %.i %.ko %.lds %.ll %.lst %.mod %.o %.s %.symtypes %/
@@ -388,6 +389,9 @@ endif · 126 unmodified lines
388389 KCONFIG_CONFIG ?= .config
389390 export KCONFIG_CONFIG
390391
392+# Default file for 'make defconfig'. This may be overridden by arch-Makefile.
393+export KBUILD_DEFCONFIG := defconfig
394+
391395 # SHELL used by kbuild
392396 CONFIG_SHELL := sh
393397
@@ -400,12 +404,11 @@ HOSTCXX = g++ · 6 unmodified lines
400404 KBUILD_HOSTCFLAGS := -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 \
401405 -fomit-frame-pointer -std=gnu89 $(HOST_LFS_CFLAGS) \
402406 $(HOSTCFLAGS)
403−KBUILD_HOSTCXXFLAGS := -O2 $(HOST_LFS_CFLAGS) $(HOSTCXXFLAGS)
407+KBUILD_HOSTCXXFLAGS := -Wall -O2 $(HOST_LFS_CFLAGS) $(HOSTCXXFLAGS)
404408 KBUILD_HOSTLDFLAGS := $(HOST_LFS_LDFLAGS) $(HOSTLDFLAGS)
405409 KBUILD_HOSTLDLIBS := $(HOST_LFS_LIBS) $(HOSTLDLIBS)
406410
407411 # Make variables (CC, etc...)
408−AS = $(CROSS_COMPILE)as
409412 LD = $(CROSS_COMPILE)ld
410413 CC = $(CROSS_COMPILE)gcc
411414 CPP = $(CC) -E
@@ -472,7 +475,7 @@ KBUILD_LDFLAGS := · 60 unmodified lines
472475 GCC_PLUGINS_CFLAGS :=
473476 CLANG_FLAGS :=
474477
475−export ARCH SRCARCH CONFIG_SHELL BASH HOSTCC KBUILD_HOSTCFLAGS CROSS_COMPILE AS LD CC
478+export ARCH SRCARCH CONFIG_SHELL BASH HOSTCC KBUILD_HOSTCFLAGS CROSS_COMPILE LD CC
476479 export CPP AR NM STRIP OBJCOPY OBJDUMP OBJSIZE READELF PAHOLE LEX YACC AWK INSTALLKERNEL
477480 export PERL PYTHON PYTHON3 CHECK CHECKFLAGS MAKE UTS_MACHINE HOSTCXX
478481 export KBUILD_HOSTCXXFLAGS KBUILD_HOSTLDFLAGS KBUILD_HOSTLDLIBS LDFLAGS_MODULE
@@ -535,7 +538,7 @@ endif · 56 unmodified lines
535538 ifneq ($(GCC_TOOLCHAIN),)
536539 CLANG_FLAGS += --gcc-toolchain=$(GCC_TOOLCHAIN)
537540 endif
538−ifeq ($(shell $(AS) --version 2>&1 | head -n 1 | grep clang),)
541+ifeq ($(if $(AS),$(shell $(AS) --version 2>&1 | head -n 1 | grep clang)),)
539542 CLANG_FLAGS += -no-integrated-as
540543 endif
541544 CLANG_FLAGS += -Werror=unknown-warning-option
@@ -674,6 +677,7 @@ $(KCONFIG_CONFIG): · 132 unmodified lines
674677 #
675678 # This exploits the 'multi-target pattern rule' trick.
676679 # The syncconfig should be executed only once to make all the targets.
680+# (Note: use the grouped target '&:' when we bump to GNU Make 4.3)
677681 %/auto.conf %/auto.conf.cmd: $(KCONFIG_CONFIG)
678682 $(Q)$(MAKE) -f $(srctree)/Makefile syncconfig
679683 else # !may-sync-config
@@ -714,6 +718,7 @@ endif · 34 unmodified lines
714718
715719 # Tell gcc to never replace conditional load with a non-conditional one
716720 KBUILD_CFLAGS += $(call cc-option,--param=allow-store-data-races=0)
721+KBUILD_CFLAGS += $(call cc-option,-fno-allow-store-data-races)
717722
718723 include scripts/Makefile.kcov
719724 include scripts/Makefile.gcc-plugins
@@ -729,7 +734,7 @@ KBUILD_CFLAGS += $(call cc-option,-fno-reorder-blocks,) \ · 9 unmodified lines
729734 endif
730735
731736 ifneq ($(CONFIG_FRAME_WARN),0)
732−KBUILD_CFLAGS += $(call cc-option,-Wframe-larger-than=${CONFIG_FRAME_WARN})
737+KBUILD_CFLAGS += -Wframe-larger-than=$(CONFIG_FRAME_WARN)
733738 endif
734739
735740 stackp-flags-$(CONFIG_CC_HAS_STACKPROTECTOR_NONE) := -fno-stack-protector
@@ -1063,9 +1068,12 @@ endif · 327 unmodified lines
10631068
10641069 autoksyms_h := $(if $(CONFIG_TRIM_UNUSED_KSYMS), include/generated/autoksyms.h)
10651070
1071+quiet_cmd_autoksyms_h = GEN $@
1072+ cmd_autoksyms_h = mkdir -p $(dir $@); \
1073+ $(CONFIG_SHELL) $(srctree)/scripts/gen_autoksyms.sh $@
1074+
10661075 $(autoksyms_h):
1067− $(Q)mkdir -p $(dir $@)
1068− $(Q)touch $@
1076+ $(call cmd,autoksyms_h)
10691077
10701078 ARCH_POSTLINK := $(wildcard $(srctree)/arch/$(SRCARCH)/Makefile.postlink)
10711079
@@ -1240,14 +1248,18 @@ ifneq ($(dtstree),) · 168 unmodified lines
12401248 $(Q)$(MAKE) $(build)=$(dtstree) $(dtstree)/$@
12411249
12421250 PHONY += dtbs dtbs_install dtbs_check
1243−dtbs dtbs_check: include/config/kernel.release scripts_dtc
1251+dtbs: include/config/kernel.release scripts_dtc
12441252 $(Q)$(MAKE) $(build)=$(dtstree)
12451253
1246−dtbs_check: export CHECK_DTBS=1
1247−dtbs_check: dt_binding_check
1254+ifneq ($(filter dtbs_check, $(MAKECMDGOALS)),)
1255+export CHECK_DTBS=y
1256+dtbs: dt_binding_check
1257+endif
1258+
1259+dtbs_check: dtbs
12481260
12491261 dtbs_install:
1250− $(Q)$(MAKE) $(dtbinst)=$(dtstree)
1262+ $(Q)$(MAKE) $(dtbinst)=$(dtstree) dst=$(INSTALL_DTBS_PATH)
12511263
12521264 ifdef CONFIG_OF_EARLY_FLATTREE
12531265 all: dtbs
@@ -1259,6 +1271,10 @@ PHONY += scripts_dtc · 5 unmodified lines
12591271 scripts_dtc: scripts_basic
12601272 $(Q)$(MAKE) $(build)=scripts/dtc
12611273
1274+ifneq ($(filter dt_binding_check, $(MAKECMDGOALS)),)
1275+export CHECK_DT_BINDING=y
1276+endif
1277+
12621278 PHONY += dt_binding_check
12631279 dt_binding_check: scripts_dtc
12641280 $(Q)$(MAKE) $(build)=Documentation/devicetree/bindings
@@ -1470,12 +1486,15 @@ help: · 205 unmodified lines
14701486 @echo ' nsdeps - Generate missing symbol namespace dependencies'
14711487 @echo ''
14721488 @echo 'Kernel selftest:'
1473− @echo ' kselftest - Build and run kernel selftest (run as root)'
1474− @echo ' Build, install, and boot kernel before'
1475− @echo ' running kselftest on it'
1476− @echo ' kselftest-clean - Remove all generated kselftest files'
1477− @echo ' kselftest-merge - Merge all the config dependencies of kselftest to existing'
1478− @echo ' .config.'
1489+ @echo ' kselftest - Build and run kernel selftest'
1490+ @echo ' Build, install, and boot kernel before'
1491+ @echo ' running kselftest on it'
1492+ @echo ' Run as root for full coverage'
1493+ @echo ' kselftest-all - Build kernel selftest'
1494+ @echo ' kselftest-install - Build and install kernel selftest'
1495+ @echo ' kselftest-clean - Remove all generated kselftest files'
1496+ @echo ' kselftest-merge - Merge all the config dependencies of'
1497+ @echo ' kselftest to existing .config.'
14791498 @echo ''
14801499 @$(if $(dtstree), \
14811500 echo 'Devicetree:'; \
arch/sh/Kconfig+0−5
@@ -87,11 +87,6 @@ config SUPERH64 · 86 unmodified lines
8787 select HAVE_EXIT_THREAD
8888 select KALLSYMS
8989
90−config ARCH_DEFCONFIG
91− string
92− default "arch/sh/configs/shx3_defconfig" if SUPERH32
93− default "arch/sh/configs/cayman_defconfig" if SUPERH64
94−
9590 config GENERIC_BUG
9691 def_bool y
9792 depends on BUG && SUPERH32
arch/sparc/Kconfig+0−5
@@ -96,11 +96,6 @@ config SPARC64 · 95 unmodified lines
9696 select PCI_DOMAINS if PCI
9797 select ARCH_HAS_GIGANTIC_PAGE
9898
99−config ARCH_DEFCONFIG
100− string
101− default "arch/sparc/configs/sparc32_defconfig" if SPARC32
102− default "arch/sparc/configs/sparc64_defconfig" if SPARC64
103−
10499 config ARCH_PROC_KCORE_TEXT
105100 def_bool y
106101
arch/sparc/include/asm/string.h+4−0
@@ -37,6 +37,10 @@ void *memmove(void *, const void *, __kernel_size_t); · 36 unmodified lines
3737 #define __HAVE_ARCH_MEMCMP
3838 int memcmp(const void *,const void *,__kernel_size_t);
3939
40+/* Now the str*() stuff... */
41+#define __HAVE_ARCH_STRLEN
42+__kernel_size_t strlen(const char *);
43+
4044 #define __HAVE_ARCH_STRNCMP
4145 int strncmp(const char *, const char *, __kernel_size_t);
4246
arch/sparc/include/asm/string_64.h+0−4
@@ -12,8 +12,4 @@ · 11 unmodified lines
1212
1313 #include <asm/asi.h>
1414
15−/* Now the str*() stuff... */
16−#define __HAVE_ARCH_STRLEN
17−__kernel_size_t strlen(const char *);
18−
1915 #endif /* !(__SPARC64_STRING_H__) */
arch/x86/Kconfig+0−5
@@ -240,11 +240,6 @@ config OUTPUT_FORMAT · 239 unmodified lines
240240 default "elf32-i386" if X86_32
241241 default "elf64-x86-64" if X86_64
242242
243−config ARCH_DEFCONFIG
244− string
245− default "arch/x86/configs/i386_defconfig" if X86_32
246− default "arch/x86/configs/x86_64_defconfig" if X86_64
247−
248243 config LOCKDEP_SUPPORT
249244 def_bool y
250245
arch/x86/um/Kconfig+0−5
@@ -27,11 +27,6 @@ config X86_64 · 26 unmodified lines
2727 def_bool 64BIT
2828 select MODULES_USE_ELF_RELA
2929
30−config ARCH_DEFCONFIG
31− string
32− default "arch/um/configs/i386_defconfig" if X86_32
33− default "arch/um/configs/x86_64_defconfig" if X86_64
34−
3530 config 3_LEVEL_PGTABLES
3631 bool "Three-level pagetables" if !64BIT
3732 default 64BIT
drivers/net/wan/Kconfig+1−1
@@ -200,7 +200,7 @@ config WANXL_BUILD_FIRMWARE · 199 unmodified lines
200200 depends on WANXL && !PREVENT_FIRMWARE_BUILD
201201 help
202202 Allows you to rebuild firmware run by the QUICC processor.
203− It requires as68k, ld68k and hexdump programs.
203+ It requires m68k toolchains and hexdump programs.
204204
205205 You should never need this option, say N.
206206
drivers/net/wan/Makefile+22−13
@@ -40,21 +40,30 @@ $(obj)/wanxl.o: $(obj)/wanxlfw.inc · 39 unmodified lines
4040
4141 ifeq ($(CONFIG_WANXL_BUILD_FIRMWARE),y)
4242 ifeq ($(ARCH),m68k)
43− AS68K = $(AS)
44− LD68K = $(LD)
43+ M68KCC = $(CC)
44+ M68KLD = $(LD)
4545 else
46− AS68K = as68k
47− LD68K = ld68k
46+ M68KCC = $(CROSS_COMPILE_M68K)gcc
47+ M68KLD = $(CROSS_COMPILE_M68K)ld
4848 endif
4949
50−quiet_cmd_build_wanxlfw = BLD FW $@
51− cmd_build_wanxlfw = \
52− $(CPP) -D__ASSEMBLY__ -Wp,-MD,$(depfile) -I$(srctree)/include/uapi $< | $(AS68K) -m68360 -o $(obj)/wanxlfw.o; \
53− $(LD68K) --oformat binary -Ttext 0x1000 $(obj)/wanxlfw.o -o $(obj)/wanxlfw.bin; \
54− hexdump -ve '"\n" 16/1 "0x%02X,"' $(obj)/wanxlfw.bin | sed 's/0x ,//g;1s/^/static const u8 firmware[]={/;$$s/,$$/\n};\n/' >$(obj)/wanxlfw.inc; \
55− rm -f $(obj)/wanxlfw.bin $(obj)/wanxlfw.o
50+quiet_cmd_build_wanxlfw = BLDFW $@
51+ cmd_build_wanxlfw = hexdump -ve '"\n" 16/1 "0x%02X,"' $< | \
52+ sed 's/0x ,//g;1s/^/static const u8 firmware[]={/;$$s/,$$/\n};\n/' > $@
5653
57−$(obj)/wanxlfw.inc: $(src)/wanxlfw.S
58− $(call if_changed_dep,build_wanxlfw)
59−targets += wanxlfw.inc
54+$(obj)/wanxlfw.inc: $(obj)/wanxlfw.bin FORCE
55+ $(call if_changed,build_wanxlfw)
56+
57+quiet_cmd_m68kld_bin_o = M68KLD $@
58+ cmd_m68kld_bin_o = $(M68KLD) --oformat binary -Ttext 0x1000 $< -o $@
59+
60+$(obj)/wanxlfw.bin: $(obj)/wanxlfw.o FORCE
61+ $(call if_changed,m68kld_bin_o)
62+
63+quiet_cmd_m68kas_o_S = M68KAS $@
64+ cmd_m68kas_o_S = $(M68KCC) -D__ASSEMBLY__ -Wp,-MD,$(depfile) -I$(srctree)/include/uapi -c -o $@ $<
65+
66+$(obj)/wanxlfw.o: $(src)/wanxlfw.S FORCE
67+ $(call if_changed_dep,m68kas_o_S)
6068 endif
69+targets += wanxlfw.inc wanxlfw.bin wanxlfw.o
include/net/drop_monitor.h+1−1
@@ -19,7 +19,7 @@ struct net_dm_hw_metadata { · 18 unmodified lines
1919 struct net_device *input_dev;
2020 };
2121
22−#if IS_ENABLED(CONFIG_NET_DROP_MONITOR)
22+#if IS_REACHABLE(CONFIG_NET_DROP_MONITOR)
2323 void net_dm_hw_report(struct sk_buff *skb,
2424 const struct net_dm_hw_metadata *hw_metadata);
2525 #else
init/Kconfig+14−2
@@ -6,8 +6,7 @@ config DEFCONFIG_LIST · 5 unmodified lines
66 default "/lib/modules/$(shell,uname -r)/.config"
77 default "/etc/kernel-config"
88 default "/boot/config-$(shell,uname -r)"
9− default ARCH_DEFCONFIG
10− default "arch/$(ARCH)/defconfig"
9+ default "arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG)"
1110
1211 config CC_IS_GCC
1312 def_bool $(success,$(CC) --version | head -n 1 | grep -q gcc)
@@ -2211,6 +2210,19 @@ config TRIM_UNUSED_KSYMS · 2197 unmodified lines
22112210
22122211 If unsure, or if you need to build out-of-tree modules, say N.
22132212
2213+config UNUSED_KSYMS_WHITELIST
2214+ string "Whitelist of symbols to keep in ksymtab"
2215+ depends on TRIM_UNUSED_KSYMS
2216+ help
2217+ By default, all unused exported symbols will be un-exported from the
2218+ build when TRIM_UNUSED_KSYMS is selected.
2219+
2220+ UNUSED_KSYMS_WHITELIST allows to whitelist symbols that must be kept
2221+ exported at all times, even in absence of in-tree users. The value to
2222+ set here is the path to a text file containing the list of symbols,
2223+ one per line. The path can be absolute, or relative to the kernel
2224+ source tree.
2225+
22142226 endif # MODULES
22152227
22162228 config MODULES_TREE_LOOKUP
lib/Kconfig.debug+1−2
@@ -266,7 +266,7 @@ config ENABLE_MUST_CHECK · 265 unmodified lines
266266 attribute warn_unused_result" messages.
267267
268268 config FRAME_WARN
269− int "Warn for stack frames larger than (needs gcc 4.4)"
269+ int "Warn for stack frames larger than"
270270 range 0 8192
271271 default 2048 if GCC_PLUGIN_LATENT_ENTROPY
272272 default 1280 if (!64BIT && PARISC)
@@ -276,7 +276,6 @@ config FRAME_WARN · 3 unmodified lines
276276 Tell gcc to warn at build time for stack frames larger than this.
277277 Setting this too low will cause a lot of warnings.
278278 Setting it to 0 disables the warning.
279− Requires gcc 4.4
280279
281280 config STRIP_ASM_SYMS
282281 bool "Strip assembler-generated symbols during link"
scripts/Makefile.dtbinst+11−15
@@ -13,28 +13,24 @@ src := $(obj) · 12 unmodified lines
1313 PHONY := __dtbs_install
1414 __dtbs_install:
1515
16−export dtbinst_root ?= $(obj)
17−
1816 include include/config/auto.conf
1917 include scripts/Kbuild.include
2018 include $(src)/Makefile
2119
22−dtbinst-files := $(sort $(dtb-y) $(if $(CONFIG_OF_ALL_DTBS), $(dtb-)))
23−dtbinst-dirs := $(subdir-y) $(subdir-m)
24−
25−# Helper targets for Installing DTBs into the boot directory
26−quiet_cmd_dtb_install = INSTALL $<
27− cmd_dtb_install = mkdir -p $(2); cp $< $(2)
20+dtbs := $(addprefix $(dst)/, $(dtb-y) $(if $(CONFIG_OF_ALL_DTBS),$(dtb-)))
21+subdirs := $(addprefix $(obj)/, $(subdir-y) $(subdir-m))
2822
29−install-dir = $(patsubst $(dtbinst_root)%,$(INSTALL_DTBS_PATH)%,$(obj))
23+__dtbs_install: $(dtbs) $(subdirs)
24+ @:
3025
31−$(dtbinst-files): %.dtb: $(obj)/%.dtb
32− $(call cmd,dtb_install,$(install-dir))
26+quiet_cmd_dtb_install = INSTALL $@
27+ cmd_dtb_install = install -D $< $@
3328
34−$(dtbinst-dirs):
35− $(Q)$(MAKE) $(dtbinst)=$(obj)/$@
29+$(dst)/%.dtb: $(obj)/%.dtb
30+ $(call cmd,dtb_install)
3631
37−PHONY += $(dtbinst-files) $(dtbinst-dirs)
38−__dtbs_install: $(dtbinst-files) $(dtbinst-dirs)
32+PHONY += $(subdirs)
33+$(subdirs):
34+ $(Q)$(MAKE) $(dtbinst)=$@ dst=$(patsubst $(obj)/%,$(dst)/%,$@)
3935
4036 .PHONY: $(PHONY)
scripts/Makefile.lib+2−1
@@ -297,7 +297,8 @@ $(obj)/%.dtb: $(src)/%.dts $(DTC) FORCE · 296 unmodified lines
297297
298298 DT_CHECKER ?= dt-validate
299299 DT_BINDING_DIR := Documentation/devicetree/bindings
300−DT_TMP_SCHEMA := $(objtree)/$(DT_BINDING_DIR)/processed-schema.yaml
300+# DT_TMP_SCHEMA may be overridden from Documentation/devicetree/bindings/Makefile
301+DT_TMP_SCHEMA ?= $(objtree)/$(DT_BINDING_DIR)/processed-schema.yaml
301302
302303 quiet_cmd_dtb_check = CHECK $@
303304 cmd_dtb_check = $(DT_CHECKER) -u $(srctree)/$(DT_BINDING_DIR) -p $(DT_TMP_SCHEMA) $@
scripts/Makefile.modpost+8−7
@@ -46,13 +46,14 @@ include scripts/Kbuild.include · 45 unmodified lines
4646 kernelsymfile := $(objtree)/Module.symvers
4747 modulesymfile := $(firstword $(KBUILD_EXTMOD))/Module.symvers
4848
49−MODPOST = scripts/mod/modpost \
50− $(if $(CONFIG_MODVERSIONS),-m) \
51− $(if $(CONFIG_MODULE_SRCVERSION_ALL),-a) \
52− $(if $(KBUILD_EXTMOD),-i,-o) $(kernelsymfile) \
53− $(if $(KBUILD_EXTMOD),$(addprefix -e ,$(KBUILD_EXTRA_SYMBOLS))) \
54− $(if $(KBUILD_EXTMOD),-o $(modulesymfile)) \
55− $(if $(CONFIG_SECTION_MISMATCH_WARN_ONLY),,-E) \
49+MODPOST = scripts/mod/modpost \
50+ $(if $(CONFIG_MODVERSIONS),-m) \
51+ $(if $(CONFIG_MODULE_SRCVERSION_ALL),-a) \
52+ $(if $(KBUILD_EXTMOD),-i,-o) $(kernelsymfile) \
53+ $(if $(KBUILD_EXTMOD),$(addprefix -e ,$(KBUILD_EXTRA_SYMBOLS))) \
54+ $(if $(KBUILD_EXTMOD),-o $(modulesymfile)) \
55+ $(if $(CONFIG_SECTION_MISMATCH_WARN_ONLY),,-E) \
56+ $(if $(CONFIG_MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS)$(KBUILD_NSDEPS),-N) \
5657 $(if $(KBUILD_MODPOST_WARN),-w)
5758
5859 ifdef MODPOST_VMLINUX
scripts/adjust_autoksyms.sh+4−20
@@ -1,14 +1,13 @@
11 #!/bin/sh
22 # SPDX-License-Identifier: GPL-2.0-only
33
4−# Script to create/update include/generated/autoksyms.h and dependency files
4+# Script to update include/generated/autoksyms.h and dependency files
55 #
66 # Copyright: (C) 2016 Linaro Limited
77 # Created by: Nicolas Pitre, January 2016
88 #
99
10−# Create/update the include/generated/autoksyms.h file from the list
11−# of all module's needed symbols as recorded on the second line of *.mod files.
10+# Update the include/generated/autoksyms.h file.
1211 #
1312 # For each symbol being added or removed, the corresponding dependency
1413 # file's timestamp is updated to force a rebuild of the affected source
@@ -38,23 +37,8 @@ esac · 23 unmodified lines
3837 # We need access to CONFIG_ symbols
3938 . include/config/auto.conf
4039
41−# Generate a new ksym list file with symbols needed by the current
42−# set of modules.
43−cat > "$new_ksyms_file" << EOT
44−/*
45− * Automatically generated file; DO NOT EDIT.
46− */
47−
48−EOT
49−sed 's/ko$/mod/' modules.order |
50−xargs -n1 sed -n -e '2{s/ /\n/g;/^$/!p;}' -- |
51−sort -u |
52−sed -e 's/\(.*\)/#define __KSYM_\1 1/' >> "$new_ksyms_file"
53−
54−# Special case for modversions (see modpost.c)
55−if [ -n "$CONFIG_MODVERSIONS" ]; then
56− echo "#define __KSYM_module_layout 1" >> "$new_ksyms_file"
57−fi
40+# Generate a new symbol list file
41+$CONFIG_SHELL $srctree/scripts/gen_autoksyms.sh "$new_ksyms_file"
5842
5943 # Extract changes between old and new list and touch corresponding
6044 # dependency files.
scripts/basic/fixdep.c+2−8
@@ -77,11 +77,6 @@ · 76 unmodified lines
7777 * dependencies on include/config/my/option.h for every
7878 * CONFIG_MY_OPTION encountered in any of the prerequisites.
7979 *
80− * It will also filter out all the dependencies on *.ver. We need
81− * to make sure that the generated version checksum are globally up
82− * to date before even starting the recursive build, so it's too late
83− * at this point anyway.
84− *
8580 * We don't even try to really parse the header files, but
8681 * merely grep, i.e. if CONFIG_FOO is mentioned in a comment, it will
8782 * be picked up as well. It's not a problem with respect to
@@ -251,7 +246,7 @@ static void parse_config_file(const char *p) · 163 unmodified lines
251246 }
252247 p += 7;
253248 q = p;
254− while (*q && (isalnum(*q) || *q == '_'))
249+ while (isalnum(*q) || *q == '_')
255250 q++;
256251 if (str_ends_with(p, q - p, "_MODULE"))
257252 r = q - 7;
@@ -299,8 +294,7 @@ static void *read_file(const char *filename) · 41 unmodified lines
299294 static int is_ignored_file(const char *s, int len)
300295 {
301296 return str_ends_with(s, len, "include/generated/autoconf.h") ||
302− str_ends_with(s, len, "include/generated/autoksyms.h") ||
303− str_ends_with(s, len, ".ver");
297+ str_ends_with(s, len, "include/generated/autoksyms.h");
304298 }
305299
306300 /*
scripts/dtc/Makefile+3−2
@@ -1,8 +1,9 @@
11 # SPDX-License-Identifier: GPL-2.0
22 # scripts/dtc makefile
33
4−hostprogs := dtc
5−always-$(CONFIG_DTC) := $(hostprogs)
4+hostprogs := dtc
5+always-$(CONFIG_DTC) += $(hostprogs)
6+always-$(CHECK_DT_BINDING) += $(hostprogs)
67
78 dtc-objs := dtc.o flattree.o fstree.o data.o livetree.o treesource.o \
89 srcpos.o checks.o util.o
scripts/gcc-plugins/Makefile+1−1
@@ -10,7 +10,7 @@ else · 9 unmodified lines
1010 HOSTLIBS := hostcxxlibs
1111 HOST_EXTRACXXFLAGS += -I$(GCC_PLUGINS_DIR)/include -I$(src) -std=gnu++98 -fno-rtti
1212 HOST_EXTRACXXFLAGS += -fno-exceptions -fasynchronous-unwind-tables -ggdb
13− HOST_EXTRACXXFLAGS += -Wno-narrowing -Wno-unused-variable
13+ HOST_EXTRACXXFLAGS += -Wno-narrowing -Wno-unused-variable -Wno-c++11-compat
1414 export HOST_EXTRACXXFLAGS
1515 endif
1616
scripts/gen_autoksyms.sh+52−0
@@ -0,0 +1,52 @@
1+#!/bin/sh
2+# SPDX-License-Identifier: GPL-2.0-only
3+
4+# Create an autoksyms.h header file from the list of all module's needed symbols
5+# as recorded on the second line of *.mod files and the user-provided symbol
6+# whitelist.
7+
8+set -e
9+
10+output_file="$1"
11+
12+# Use "make V=1" to debug this script.
13+case "$KBUILD_VERBOSE" in
14+*1*)
15+ set -x
16+ ;;
17+esac
18+
19+# We need access to CONFIG_ symbols
20+. include/config/auto.conf
21+
22+ksym_wl=/dev/null
23+if [ -n "$CONFIG_UNUSED_KSYMS_WHITELIST" ]; then
24+ # Use 'eval' to expand the whitelist path and check if it is relative
25+ eval ksym_wl="$CONFIG_UNUSED_KSYMS_WHITELIST"
26+ [ "${ksym_wl}" != "${ksym_wl#/}" ] || ksym_wl="$abs_srctree/$ksym_wl"
27+ if [ ! -f "$ksym_wl" ] || [ ! -r "$ksym_wl" ]; then
28+ echo "ERROR: '$ksym_wl' whitelist file not found" >&2
29+ exit 1
30+ fi
31+fi
32+
33+# Generate a new ksym list file with symbols needed by the current
34+# set of modules.
35+cat > "$output_file" << EOT
36+/*
37+ * Automatically generated file; DO NOT EDIT.
38+ */
39+
40+EOT
41+
42+[ -f modules.order ] && modlist=modules.order || modlist=/dev/null
43+sed 's/ko$/mod/' $modlist |
44+xargs -n1 sed -n -e '2{s/ /\n/g;/^$/!p;}' -- |
45+cat - "$ksym_wl" |
46+sort -u |
47+sed -e 's/\(.*\)/#define __KSYM_\1 1/' >> "$output_file"
48+
49+# Special case for modversions (see modpost.c)
50+if [ -n "$CONFIG_MODVERSIONS" ]; then
51+ echo "#define __KSYM_module_layout 1" >> "$output_file"
52+fi
scripts/kconfig/Makefile+0−4
@@ -12,10 +12,6 @@ else · 11 unmodified lines
1212 Kconfig := Kconfig
1313 endif
1414
15−ifndef KBUILD_DEFCONFIG
16−KBUILD_DEFCONFIG := defconfig
17−endif
18−
1915 ifeq ($(quiet),silent_)
2016 silent := -s
2117 endif
scripts/kconfig/qconf.cc+0−2
@@ -309,8 +309,6 @@ ConfigList::ConfigList(ConfigView* p, const char *name) · 308 unmodified lines
309309 showName(false), showRange(false), showData(false), mode(singleMode), optMode(normalOpt),
310310 rootEntry(0), headerPopup(0)
311311 {
312− int i;
313−
314312 setObjectName(name);
315313 setSortingEnabled(false);
316314 setRootIsDecorated(true);
scripts/kconfig/symbol.c+4−5
@@ -221,7 +221,7 @@ static void sym_calc_visibility(struct symbol *sym) · 220 unmodified lines
221221 sym_set_changed(sym);
222222 }
223223 tri = no;
224− if (sym->implied.expr && sym->dir_dep.tri != no)
224+ if (sym->implied.expr)
225225 tri = expr_calc_value(sym->implied.expr);
226226 if (tri == mod && sym_get_type(sym) == S_BOOLEAN)
227227 tri = yes;
@@ -394,6 +394,8 @@ void sym_calc_value(struct symbol *sym) · 166 unmodified lines
394394 if (sym->implied.tri != no) {
395395 sym->flags |= SYMBOL_WRITE;
396396 newval.tri = EXPR_OR(newval.tri, sym->implied.tri);
397+ newval.tri = EXPR_AND(newval.tri,
398+ sym->dir_dep.tri);
397399 }
398400 }
399401 calc_newval:
@@ -401,8 +403,7 @@ void sym_calc_value(struct symbol *sym) · 1 unmodified line
401403 sym_warn_unmet_dep(sym);
402404 newval.tri = EXPR_OR(newval.tri, sym->rev_dep.tri);
403405 }
404− if (newval.tri == mod &&
405− (sym_get_type(sym) == S_BOOLEAN || sym->implied.tri == yes))
406+ if (newval.tri == mod && sym_get_type(sym) == S_BOOLEAN)
406407 newval.tri = yes;
407408 break;
408409 case S_STRING:
@@ -484,8 +485,6 @@ bool sym_tristate_within_range(struct symbol *sym, tristate val) · 75 unmodified lines
484485 return false;
485486 if (sym->visible <= sym->rev_dep.tri)
486487 return false;
487− if (sym->implied.tri == yes && val == mod)
488− return false;
489488 if (sym_is_choice_value(sym) && sym->visible == yes)
490489 return val == yes;
491490 return val >= sym->rev_dep.tri && val <= sym->visible;
scripts/mkcompile_h+0−11
@@ -10,17 +10,6 @@ CC=$6 · 9 unmodified lines
1010
1111 vecho() { [ "${quiet}" = "silent_" ] || echo "$@" ; }
1212
13−# If compile.h exists already and we don't own autoconf.h
14−# (i.e. we're not the same user who did make *config), don't
15−# modify compile.h
16−# So "sudo make install" won't change the "compiled by <user>"
17−# do "compiled by root"
18−
19−if [ -r $TARGET -a ! -O include/generated/autoconf.h ]; then
20− vecho " SKIPPED $TARGET"
21− exit 0
22−fi
23−
2413 # Do not expand names
2514 set -f
2615
scripts/mod/modpost.c+40−43
@@ -39,6 +39,8 @@ static int sec_mismatch_count = 0; · 38 unmodified lines
3939 static int sec_mismatch_fatal = 0;
4040 /* ignore missing files */
4141 static int ignore_missing_files;
42+/* If set to 1, only warn (instead of error) about missing ns imports */
43+static int allow_missing_ns_imports;
4244
4345 enum export {
4446 export_plain, export_unused, export_gpl,
@@ -51,41 +53,33 @@ enum export { · 6 unmodified lines
5153
5254 #define MODULE_NAME_LEN (64 - sizeof(Elf_Addr))
5355
54−#define PRINTF __attribute__ ((format (printf, 1, 2)))
55−
56−PRINTF void fatal(const char *fmt, ...)
56+void __attribute__((format(printf, 2, 3)))
57+modpost_log(enum loglevel loglevel, const char *fmt, ...)
5758 {
5859 va_list arglist;
5960
60− fprintf(stderr, "FATAL: ");
61−
62− va_start(arglist, fmt);
63− vfprintf(stderr, fmt, arglist);
64− va_end(arglist);
65−
66− exit(1);
67−}
68−
69−PRINTF void warn(const char *fmt, ...)
70−{
71− va_list arglist;
61+ switch (loglevel) {
62+ case LOG_WARN:
63+ fprintf(stderr, "WARNING: ");
64+ break;
65+ case LOG_ERROR:
66+ fprintf(stderr, "ERROR: ");
67+ break;
68+ case LOG_FATAL:
69+ fprintf(stderr, "FATAL: ");
70+ break;
71+ default: /* invalid loglevel, ignore */
72+ break;
73+ }
7274
73− fprintf(stderr, "WARNING: ");
75+ fprintf(stderr, "modpost: ");
7476
7577 va_start(arglist, fmt);
7678 vfprintf(stderr, fmt, arglist);
7779 va_end(arglist);
78−}
79−
80−PRINTF void merror(const char *fmt, ...)
81−{
82− va_list arglist;
8380
84− fprintf(stderr, "ERROR: ");
85−
86− va_start(arglist, fmt);
87− vfprintf(stderr, fmt, arglist);
88− va_end(arglist);
81+ if (loglevel == LOG_FATAL)
82+ exit(1);
8983 }
9084
9185 static inline bool strends(const char *str, const char *postfix)
@@ -113,7 +107,7 @@ static int is_vmlinux(const char *modname) · 21 unmodified lines
113107 void *do_nofail(void *ptr, const char *expr)
114108 {
115109 if (!ptr)
116− fatal("modpost: Memory allocation failure: %s.\n", expr);
110+ fatal("Memory allocation failure: %s.\n", expr);
117111
118112 return ptr;
119113 }
@@ -2022,7 +2016,7 @@ static void read_symbols(const char *modname) · 1902 unmodified lines
20222016
20232017 license = get_modinfo(&info, "license");
20242018 if (!license && !is_vmlinux(modname))
2025− warn("modpost: missing MODULE_LICENSE() in %s\n"
2019+ warn("missing MODULE_LICENSE() in %s\n"
20262020 "see include/linux/module.h for "
20272021 "more information\n", modname);
20282022 while (license) {
@@ -2153,15 +2147,15 @@ static void check_for_gpl_usage(enum export exp, const char *m, const char *s) · 124 unmodified lines
21532147
21542148 switch (exp) {
21552149 case export_gpl:
2156− fatal("modpost: GPL-incompatible module %s%s "
2150+ fatal("GPL-incompatible module %s%s "
21572151 "uses GPL-only symbol '%s'\n", m, e, s);
21582152 break;
21592153 case export_unused_gpl:
2160− fatal("modpost: GPL-incompatible module %s%s "
2154+ fatal("GPL-incompatible module %s%s "
21612155 "uses GPL-only symbol marked UNUSED '%s'\n", m, e, s);
21622156 break;
21632157 case export_gpl_future:
2164− warn("modpost: GPL-incompatible module %s%s "
2158+ warn("GPL-incompatible module %s%s "
21652159 "uses future GPL-only symbol '%s'\n", m, e, s);
21662160 break;
21672161 case export_plain:
@@ -2179,7 +2173,7 @@ static void check_for_unused(enum export exp, const char *m, const char *s) · 11 unmodified lines
21792173 switch (exp) {
21802174 case export_unused:
21812175 case export_unused_gpl:
2182− warn("modpost: module %s%s "
2176+ warn("module %s%s "
21832177 "uses symbol '%s' marked UNUSED\n", m, e, s);
21842178 break;
21852179 default:
@@ -2198,14 +2192,11 @@ static int check_exports(struct module *mod) · 12 unmodified lines
21982192 exp = find_symbol(s->name);
21992193 if (!exp || exp->module == mod) {
22002194 if (have_vmlinux && !s->weak) {
2201− if (warn_unresolved) {
2202− warn("\"%s\" [%s.ko] undefined!\n",
2203− s->name, mod->name);
2204− } else {
2205− merror("\"%s\" [%s.ko] undefined!\n",
2206− s->name, mod->name);
2195+ modpost_log(warn_unresolved ? LOG_WARN : LOG_ERROR,
2196+ "\"%s\" [%s.ko] undefined!\n",
2197+ s->name, mod->name);
2198+ if (!warn_unresolved)
22072199 err = 1;
2208− }
22092200 }
22102201 continue;
22112202 }
@@ -2217,8 +2208,11 @@ static int check_exports(struct module *mod) · 5 unmodified lines
22172208
22182209 if (exp->namespace &&
22192210 !module_imports_namespace(mod, exp->namespace)) {
2220− warn("module %s uses symbol %s from namespace %s, but does not import it.\n",
2221− basename, exp->name, exp->namespace);
2211+ modpost_log(allow_missing_ns_imports ? LOG_WARN : LOG_ERROR,
2212+ "module %s uses symbol %s from namespace %s, but does not import it.\n",
2213+ basename, exp->name, exp->namespace);
2214+ if (!allow_missing_ns_imports)
2215+ err = 1;
22222216 add_namespace(&mod->missing_namespaces, exp->namespace);
22232217 }
22242218
@@ -2565,7 +2559,7 @@ int main(int argc, char **argv) · 340 unmodified lines
25652559 struct ext_sym_list *extsym_iter;
25662560 struct ext_sym_list *extsym_start = NULL;
25672561
2568− while ((opt = getopt(argc, argv, "i:e:mnsT:o:awEd:")) != -1) {
2562+ while ((opt = getopt(argc, argv, "i:e:mnsT:o:awENd:")) != -1) {
25692563 switch (opt) {
25702564 case 'i':
25712565 kernel_read = optarg;
@@ -2603,6 +2597,9 @@ int main(int argc, char **argv) · 31 unmodified lines
26032597 case 'E':
26042598 sec_mismatch_fatal = 1;
26052599 break;
2600+ case 'N':
2601+ allow_missing_ns_imports = 1;
2602+ break;
26062603 case 'd':
26072604 missing_namespace_deps = optarg;
26082605 break;
@@ -2658,7 +2655,7 @@ int main(int argc, char **argv) · 49 unmodified lines
26582655 if (dump_write)
26592656 write_dump(dump_write);
26602657 if (sec_mismatch_count && sec_mismatch_fatal)
2661− fatal("modpost: Section mismatches detected.\n"
2658+ fatal("Section mismatches detected.\n"
26622659 "Set CONFIG_SECTION_MISMATCH_WARN_ONLY=y to allow them.\n");
26632660 for (n = 0; n < SYMBOL_HASH_SIZE; n++) {
26642661 struct symbol *s;
scripts/mod/modpost.h+11−3
@@ -198,6 +198,14 @@ void *grab_file(const char *filename, unsigned long *size); · 197 unmodified lines
198198 char* get_next_line(unsigned long *pos, void *file, unsigned long size);
199199 void release_file(void *file, unsigned long size);
200200
201−void fatal(const char *fmt, ...);
202−void warn(const char *fmt, ...);
203−void merror(const char *fmt, ...);
201+enum loglevel {
202+ LOG_WARN,
203+ LOG_ERROR,
204+ LOG_FATAL
205+};
206+
207+void modpost_log(enum loglevel loglevel, const char *fmt, ...);
208+
209+#define warn(fmt, args...) modpost_log(LOG_WARN, fmt, ##args)
210+#define merror(fmt, args...) modpost_log(LOG_ERROR, fmt, ##args)
211+#define fatal(fmt, args...) modpost_log(LOG_FATAL, fmt, ##args)
scripts/package/mkdebian+5−0
@@ -198,6 +198,10 @@ Description: Linux support headers for userspace development · 197 unmodified lines
198198 This package provides userspaces headers from the Linux kernel. These headers
199199 are used by the installed headers for GNU glibc and other system libraries.
200200 Multi-Arch: same
201+EOF
202+
203+if is_enabled CONFIG_DEBUG_INFO; then
204+cat <<EOF >> debian/control
201205
202206 Package: $dbg_packagename
203207 Section: debug
@@ -206,6 +210,7 @@ Description: Linux kernel debugging symbols for $version · 2 unmodified lines
206210 This package will come in handy if you need to debug the kernel. It provides
207211 all the necessary debug symbols for the kernel and its modules.
208212 EOF
213+fi
209214
210215 cat <<EOF > debian/rules
211216 #!$(command -v $MAKE) -f