Kbuild updates for v5.15

- Add -s option (strict mode) to merge_config.sh to make it fail when
    any symbol is redefined.
 
  - Show a warning if a different compiler is used for building external
    modules.
 
  - Infer --target from ARCH for CC=clang to let you cross-compile the
    kernel without CROSS_COMPILE.
 
  - Make the integrated assembler default (LLVM_IAS=1) for CC=clang.
 
  - Add <linux/stdarg.h> to the kernel source instead of borrowing
    <stdarg.h> from the compiler.
 
  - Add Nick Desaulniers as a Kbuild reviewer.
 
  - Drop stale cc-option tests.
 
  - Fix the combination of CONFIG_TRIM_UNUSED_KSYMS and CONFIG_LTO_CLANG
    to handle symbols in inline assembly.
 
  - Show a warning if 'FORCE' is missing for if_changed rules.
 
  - Various cleanups
 -----BEGIN PGP SIGNATURE-----
 
 iQJJBAABCgAzFiEEbmPs18K1szRHjPqEPYsBB53g2wYFAmExXHoVHG1hc2FoaXJv
 eUBrZXJuZWwub3JnAAoJED2LAQed4NsGAZwP/iHdEZzuQ4cz2uXUaV0fevj9jjPU
 zJ8wrrNabAiT6f5x861DsARQSR4OSt3zN0tyBNgZwUdotbe7ED5GegrgIUBMWlML
 QskhTEIZj7TexAX/20vx671gtzI3JzFg4c9BuriXCFRBvychSevdJPr65gMDOesL
 vOJnXe+SGXG2+fPWi/PxrcOItNRcveqo2GiWHT3g0Cv/DJUulu81gEkz3hrufnMR
 cjMeSkV0nJJcvI755OQBOUnEuigW64k4m2WxHPG24tU8cQOCqV6lqwOfNQBAn4+F
 OoaCMyPQT9gvGYwGExQMCXGg0wbUt1qnxzOVoA2qFCwbo+MFhqjBvPXab6VJm7CE
 mY3RrTtvxSqBdHI6EGcYeLjhycK9b+LLoJ1qc3S9FK8It6NoFFp4XV0R6ItPBls7
 mWi9VSpyI6k0AwLq+bGXEHvaX/bnnf/vfqn8H+w6mRZdXjFV8EB2DiOSRX/OqjVG
 RnvTtXzWWThLyXvWR3Jox4+7X6728oL7akLemoeZI6oTbJDm7dQgwpz5HbSyHXLh
 d+gUF3Y/6lqxT5N9GSVDxpD1bEMh2I7nGQ4M7WGbGas/3yUemF8wbBqGQo4a+YeD
 d9vGAUxDp2PQTtL2sjFo5Gd4PZEM9g7vwWzRvHe0o5NxKEXcBg25b8cD1hxrN9Y4
 Y1AAnc0kLO+My3PC
 =lw3M
 -----END PGP SIGNATURE-----

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

Pull Kbuild updates from Masahiro Yamada:

 - Add -s option (strict mode) to merge_config.sh to make it fail when
   any symbol is redefined.

 - Show a warning if a different compiler is used for building external
   modules.

 - Infer --target from ARCH for CC=clang to let you cross-compile the
   kernel without CROSS_COMPILE.

 - Make the integrated assembler default (LLVM_IAS=1) for CC=clang.

 - Add <linux/stdarg.h> to the kernel source instead of borrowing
   <stdarg.h> from the compiler.

 - Add Nick Desaulniers as a Kbuild reviewer.

 - Drop stale cc-option tests.

 - Fix the combination of CONFIG_TRIM_UNUSED_KSYMS and CONFIG_LTO_CLANG
   to handle symbols in inline assembly.

 - Show a warning if 'FORCE' is missing for if_changed rules.

 - Various cleanups

* tag 'kbuild-v5.15' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild: (39 commits)
  kbuild: redo fake deps at include/ksym/*.h
  kbuild: clean up objtool_args slightly
  modpost: get the *.mod file path more simply
  checkkconfigsymbols.py: Fix the '--ignore' option
  kbuild: merge vmlinux_link() between ARCH=um and other architectures
  kbuild: do not remove 'linux' link in scripts/link-vmlinux.sh
  kbuild: merge vmlinux_link() between the ordinary link and Clang LTO
  kbuild: remove stale *.symversions
  kbuild: remove unused quiet_cmd_update_lto_symversions
  gen_compile_commands: extract compiler command from a series of commands
  x86: remove cc-option-yn test for -mtune=
  arc: replace cc-option-yn uses with cc-option
  s390: replace cc-option-yn uses with cc-option
  ia64: move core-y in arch/ia64/Makefile to arch/ia64/Kbuild
  sparc: move the install rule to arch/sparc/Makefile
  security: remove unneeded subdir-$(CONFIG_...)
  kbuild: sh: remove unused install script
  kbuild: Fix 'no symbols' warning when CONFIG_TRIM_UNUSD_KSYMS=y
  kbuild: Switch to 'f' variants of integrated assembler flag
  kbuild: Shuffle blank line to improve comment meaning
  ...
This commit is contained in:
Linus Torvalds 2021-09-03 15:33:47 -07:00
commit b250e6d141
101 changed files with 305 additions and 349 deletions

View File

@ -38,7 +38,7 @@ Cross Compiling
A single Clang compiler binary will typically contain all supported backends, A single Clang compiler binary will typically contain all supported backends,
which can help simplify cross compiling. :: which can help simplify cross compiling. ::
ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- make CC=clang make ARCH=arm64 CC=clang CROSS_COMPILE=aarch64-linux-gnu-
``CROSS_COMPILE`` is not used to prefix the Clang compiler binary, instead ``CROSS_COMPILE`` is not used to prefix the Clang compiler binary, instead
``CROSS_COMPILE`` is used to set a command line flag: ``--target=<triple>``. For ``CROSS_COMPILE`` is used to set a command line flag: ``--target=<triple>``. For
@ -60,8 +60,27 @@ They can be enabled individually. The full list of the parameters: ::
OBJCOPY=llvm-objcopy OBJDUMP=llvm-objdump READELF=llvm-readelf \ OBJCOPY=llvm-objcopy OBJDUMP=llvm-objdump READELF=llvm-readelf \
HOSTCC=clang HOSTCXX=clang++ HOSTAR=llvm-ar HOSTLD=ld.lld HOSTCC=clang HOSTCXX=clang++ HOSTAR=llvm-ar HOSTLD=ld.lld
Currently, the integrated assembler is disabled by default. You can pass The integrated assembler is enabled by default. You can pass ``LLVM_IAS=0`` to
``LLVM_IAS=1`` to enable it. disable it.
Omitting CROSS_COMPILE
----------------------
As explained above, ``CROSS_COMPILE`` is used to set ``--target=<triple>``.
If ``CROSS_COMPILE`` is not specified, the ``--target=<triple>`` is inferred
from ``ARCH``.
That means if you use only LLVM tools, ``CROSS_COMPILE`` becomes unnecessary.
For example, to cross-compile the arm64 kernel::
make ARCH=arm64 LLVM=1
If ``LLVM_IAS=0`` is specified, ``CROSS_COMPILE`` is also used to derive
``--prefix=<path>`` to search for the GNU assembler and linker. ::
make ARCH=arm64 LLVM=1 LLVM_IAS=0 CROSS_COMPILE=aarch64-linux-gnu-
Supported Architectures Supported Architectures
----------------------- -----------------------

View File

@ -4532,6 +4532,7 @@ B: https://github.com/ClangBuiltLinux/linux/issues
C: irc://irc.libera.chat/clangbuiltlinux C: irc://irc.libera.chat/clangbuiltlinux
F: Documentation/kbuild/llvm.rst F: Documentation/kbuild/llvm.rst
F: include/linux/compiler-clang.h F: include/linux/compiler-clang.h
F: scripts/Makefile.clang
F: scripts/clang-tools/ F: scripts/clang-tools/
K: \b(?i:clang|llvm)\b K: \b(?i:clang|llvm)\b
@ -10116,6 +10117,7 @@ F: fs/autofs/
KERNEL BUILD + files below scripts/ (unless maintained elsewhere) KERNEL BUILD + files below scripts/ (unless maintained elsewhere)
M: Masahiro Yamada <masahiroy@kernel.org> M: Masahiro Yamada <masahiroy@kernel.org>
M: Michal Marek <michal.lkml@markovi.net> M: Michal Marek <michal.lkml@markovi.net>
R: Nick Desaulniers <ndesaulniers@google.com>
L: linux-kbuild@vger.kernel.org L: linux-kbuild@vger.kernel.org
S: Maintained S: Maintained
T: git git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild.git T: git git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild.git

View File

@ -191,10 +191,9 @@ endif
ifneq ($(abs_srctree),$(abs_objtree)) ifneq ($(abs_srctree),$(abs_objtree))
# Look for make include files relative to root of kernel src # Look for make include files relative to root of kernel src
# #
# This does not become effective immediately because MAKEFLAGS is re-parsed # --included-dir is added for backward compatibility, but you should not rely on
# once after the Makefile is read. We need to invoke sub-make. # it. Please add $(srctree)/ prefix to include Makefiles in the source tree.
MAKEFLAGS += --include-dir=$(abs_srctree) MAKEFLAGS += --include-dir=$(abs_srctree)
need-sub-make := 1
endif endif
ifneq ($(filter 3.%,$(MAKE_VERSION)),) ifneq ($(filter 3.%,$(MAKE_VERSION)),)
@ -587,23 +586,10 @@ endif
# Some architectures define CROSS_COMPILE in arch/$(SRCARCH)/Makefile. # Some architectures define CROSS_COMPILE in arch/$(SRCARCH)/Makefile.
# CC_VERSION_TEXT is referenced from Kconfig (so it needs export), # CC_VERSION_TEXT is referenced from Kconfig (so it needs export),
# and from include/config/auto.conf.cmd to detect the compiler upgrade. # and from include/config/auto.conf.cmd to detect the compiler upgrade.
CC_VERSION_TEXT = $(subst $(pound),,$(shell $(CC) --version 2>/dev/null | head -n 1)) CC_VERSION_TEXT = $(subst $(pound),,$(shell LC_ALL=C $(CC) --version 2>/dev/null | head -n 1))
ifneq ($(findstring clang,$(CC_VERSION_TEXT)),) ifneq ($(findstring clang,$(CC_VERSION_TEXT)),)
ifneq ($(CROSS_COMPILE),) include $(srctree)/scripts/Makefile.clang
CLANG_FLAGS += --target=$(notdir $(CROSS_COMPILE:%-=%))
endif
ifeq ($(LLVM_IAS),1)
CLANG_FLAGS += -integrated-as
else
CLANG_FLAGS += -no-integrated-as
GCC_TOOLCHAIN_DIR := $(dir $(shell which $(CROSS_COMPILE)elfedit))
CLANG_FLAGS += --prefix=$(GCC_TOOLCHAIN_DIR)$(notdir $(CROSS_COMPILE))
endif
CLANG_FLAGS += -Werror=unknown-warning-option
KBUILD_CFLAGS += $(CLANG_FLAGS)
KBUILD_AFLAGS += $(CLANG_FLAGS)
export CLANG_FLAGS
endif endif
# Include this also for config targets because some architectures need # Include this also for config targets because some architectures need
@ -688,9 +674,10 @@ endif # KBUILD_EXTMOD
# Defaults to vmlinux, but the arch makefile usually adds further targets # Defaults to vmlinux, but the arch makefile usually adds further targets
all: vmlinux all: vmlinux
CFLAGS_GCOV := -fprofile-arcs -ftest-coverage \ CFLAGS_GCOV := -fprofile-arcs -ftest-coverage
$(call cc-option,-fno-tree-loop-im) \ ifdef CONFIG_CC_IS_GCC
$(call cc-disable-warning,maybe-uninitialized,) CFLAGS_GCOV += -fno-tree-loop-im
endif
export CFLAGS_GCOV export CFLAGS_GCOV
# The arch Makefiles can override CC_FLAGS_FTRACE. We may also append it later. # The arch Makefiles can override CC_FLAGS_FTRACE. We may also append it later.
@ -698,12 +685,14 @@ ifdef CONFIG_FUNCTION_TRACER
CC_FLAGS_FTRACE := -pg CC_FLAGS_FTRACE := -pg
endif endif
RETPOLINE_CFLAGS_GCC := -mindirect-branch=thunk-extern -mindirect-branch-register ifdef CONFIG_CC_IS_GCC
RETPOLINE_VDSO_CFLAGS_GCC := -mindirect-branch=thunk-inline -mindirect-branch-register RETPOLINE_CFLAGS := $(call cc-option,-mindirect-branch=thunk-extern -mindirect-branch-register)
RETPOLINE_CFLAGS_CLANG := -mretpoline-external-thunk RETPOLINE_VDSO_CFLAGS := $(call cc-option,-mindirect-branch=thunk-inline -mindirect-branch-register)
RETPOLINE_VDSO_CFLAGS_CLANG := -mretpoline endif
RETPOLINE_CFLAGS := $(call cc-option,$(RETPOLINE_CFLAGS_GCC),$(call cc-option,$(RETPOLINE_CFLAGS_CLANG))) ifdef CONFIG_CC_IS_CLANG
RETPOLINE_VDSO_CFLAGS := $(call cc-option,$(RETPOLINE_VDSO_CFLAGS_GCC),$(call cc-option,$(RETPOLINE_VDSO_CFLAGS_CLANG))) RETPOLINE_CFLAGS := -mretpoline-external-thunk
RETPOLINE_VDSO_CFLAGS := -mretpoline
endif
export RETPOLINE_CFLAGS export RETPOLINE_CFLAGS
export RETPOLINE_VDSO_CFLAGS export RETPOLINE_VDSO_CFLAGS
@ -756,7 +745,7 @@ include/config/auto.conf:
endif # may-sync-config endif # may-sync-config
endif # need-config endif # need-config
KBUILD_CFLAGS += $(call cc-option,-fno-delete-null-pointer-checks,) KBUILD_CFLAGS += -fno-delete-null-pointer-checks
KBUILD_CFLAGS += $(call cc-disable-warning,frame-address,) KBUILD_CFLAGS += $(call cc-disable-warning,frame-address,)
KBUILD_CFLAGS += $(call cc-disable-warning, format-truncation) KBUILD_CFLAGS += $(call cc-disable-warning, format-truncation)
KBUILD_CFLAGS += $(call cc-disable-warning, format-overflow) KBUILD_CFLAGS += $(call cc-disable-warning, format-overflow)
@ -771,17 +760,19 @@ KBUILD_CFLAGS += -Os
endif endif
# Tell gcc to never replace conditional load with a non-conditional one # Tell gcc to never replace conditional load with a non-conditional one
ifdef CONFIG_CC_IS_GCC
# gcc-10 renamed --param=allow-store-data-races=0 to
# -fno-allow-store-data-races.
KBUILD_CFLAGS += $(call cc-option,--param=allow-store-data-races=0) KBUILD_CFLAGS += $(call cc-option,--param=allow-store-data-races=0)
KBUILD_CFLAGS += $(call cc-option,-fno-allow-store-data-races) KBUILD_CFLAGS += $(call cc-option,-fno-allow-store-data-races)
endif
ifdef CONFIG_READABLE_ASM ifdef CONFIG_READABLE_ASM
# Disable optimizations that make assembler listings hard to read. # Disable optimizations that make assembler listings hard to read.
# reorder blocks reorders the control in the function # reorder blocks reorders the control in the function
# ipa clone creates specialized cloned functions # ipa clone creates specialized cloned functions
# partial inlining inlines only parts of functions # partial inlining inlines only parts of functions
KBUILD_CFLAGS += $(call cc-option,-fno-reorder-blocks,) \ KBUILD_CFLAGS += -fno-reorder-blocks -fno-ipa-cp-clone -fno-partial-inlining
$(call cc-option,-fno-ipa-cp-clone,) \
$(call cc-option,-fno-partial-inlining)
endif endif
ifneq ($(CONFIG_FRAME_WARN),0) ifneq ($(CONFIG_FRAME_WARN),0)
@ -796,7 +787,7 @@ KBUILD_CFLAGS += $(stackp-flags-y)
ifdef CONFIG_CC_IS_CLANG ifdef CONFIG_CC_IS_CLANG
KBUILD_CPPFLAGS += -Qunused-arguments KBUILD_CPPFLAGS += -Qunused-arguments
KBUILD_CFLAGS += -Wno-format-invalid-specifier # The kernel builds with '-std=gnu89' so use of GNU extensions is acceptable.
KBUILD_CFLAGS += -Wno-gnu KBUILD_CFLAGS += -Wno-gnu
# CLANG uses a _MergedGlobals as optimization, but this breaks modpost, as the # CLANG uses a _MergedGlobals as optimization, but this breaks modpost, as the
# source of a reference will be _MergedGlobals and not on of the whitelisted names. # source of a reference will be _MergedGlobals and not on of the whitelisted names.
@ -813,8 +804,8 @@ endif
# These warnings generated too much noise in a regular build. # These warnings generated too much noise in a regular build.
# Use make W=1 to enable them (see scripts/Makefile.extrawarn) # Use make W=1 to enable them (see scripts/Makefile.extrawarn)
KBUILD_CFLAGS += $(call cc-disable-warning, unused-but-set-variable) KBUILD_CFLAGS += $(call cc-disable-warning, unused-but-set-variable)
KBUILD_CFLAGS += $(call cc-disable-warning, unused-const-variable) KBUILD_CFLAGS += $(call cc-disable-warning, unused-const-variable)
ifdef CONFIG_FRAME_POINTER ifdef CONFIG_FRAME_POINTER
KBUILD_CFLAGS += -fno-omit-frame-pointer -fno-optimize-sibling-calls KBUILD_CFLAGS += -fno-omit-frame-pointer -fno-optimize-sibling-calls
else else
@ -867,7 +858,7 @@ else
DEBUG_CFLAGS += -g DEBUG_CFLAGS += -g
endif endif
ifneq ($(LLVM_IAS),1) ifndef CONFIG_AS_IS_LLVM
KBUILD_AFLAGS += -Wa,-gdwarf-2 KBUILD_AFLAGS += -Wa,-gdwarf-2
endif endif
@ -878,8 +869,10 @@ DEBUG_CFLAGS += -gdwarf-$(dwarf-version-y)
endif endif
ifdef CONFIG_DEBUG_INFO_REDUCED ifdef CONFIG_DEBUG_INFO_REDUCED
DEBUG_CFLAGS += $(call cc-option, -femit-struct-debug-baseonly) \ DEBUG_CFLAGS += -fno-var-tracking
$(call cc-option,-fno-var-tracking) ifdef CONFIG_CC_IS_GCC
DEBUG_CFLAGS += -femit-struct-debug-baseonly
endif
endif endif
ifdef CONFIG_DEBUG_INFO_COMPRESSED ifdef CONFIG_DEBUG_INFO_COMPRESSED
@ -913,6 +906,7 @@ ifdef CONFIG_FTRACE_MCOUNT_USE_RECORDMCOUNT
endif endif
endif endif
ifdef CONFIG_HAVE_FENTRY ifdef CONFIG_HAVE_FENTRY
# s390-linux-gnu-gcc did not support -mfentry until gcc-9.
ifeq ($(call cc-option-yn, -mfentry),y) ifeq ($(call cc-option-yn, -mfentry),y)
CC_FLAGS_FTRACE += -mfentry CC_FLAGS_FTRACE += -mfentry
CC_FLAGS_USING += -DCC_USING_FENTRY CC_FLAGS_USING += -DCC_USING_FENTRY
@ -925,7 +919,7 @@ endif
# We trigger additional mismatches with less inlining # We trigger additional mismatches with less inlining
ifdef CONFIG_DEBUG_SECTION_MISMATCH ifdef CONFIG_DEBUG_SECTION_MISMATCH
KBUILD_CFLAGS += $(call cc-option, -fno-inline-functions-called-once) KBUILD_CFLAGS += -fno-inline-functions-called-once
endif endif
ifdef CONFIG_LD_DEAD_CODE_DATA_ELIMINATION ifdef CONFIG_LD_DEAD_CODE_DATA_ELIMINATION
@ -1004,14 +998,16 @@ KBUILD_CFLAGS += $(call cc-disable-warning, stringop-truncation)
# We'll want to enable this eventually, but it's not going away for 5.7 at least # We'll want to enable this eventually, but it's not going away for 5.7 at least
KBUILD_CFLAGS += $(call cc-disable-warning, zero-length-bounds) KBUILD_CFLAGS += $(call cc-disable-warning, zero-length-bounds)
KBUILD_CFLAGS += $(call cc-disable-warning, array-bounds) KBUILD_CFLAGS += -Wno-array-bounds
KBUILD_CFLAGS += $(call cc-disable-warning, stringop-overflow) KBUILD_CFLAGS += $(call cc-disable-warning, stringop-overflow)
# Another good warning that we'll want to enable eventually # Another good warning that we'll want to enable eventually
KBUILD_CFLAGS += $(call cc-disable-warning, restrict) KBUILD_CFLAGS += $(call cc-disable-warning, restrict)
# Enabled with W=2, disabled by default as noisy # Enabled with W=2, disabled by default as noisy
KBUILD_CFLAGS += $(call cc-disable-warning, maybe-uninitialized) ifdef CONFIG_CC_IS_GCC
KBUILD_CFLAGS += -Wno-maybe-uninitialized
endif
# disable invalid "can't wrap" optimizations for signed / pointers # disable invalid "can't wrap" optimizations for signed / pointers
KBUILD_CFLAGS += -fno-strict-overflow KBUILD_CFLAGS += -fno-strict-overflow
@ -1020,7 +1016,9 @@ KBUILD_CFLAGS += -fno-strict-overflow
KBUILD_CFLAGS += -fno-stack-check KBUILD_CFLAGS += -fno-stack-check
# conserve stack if available # conserve stack if available
KBUILD_CFLAGS += $(call cc-option,-fconserve-stack) ifdef CONFIG_CC_IS_GCC
KBUILD_CFLAGS += -fconserve-stack
endif
# Prohibit date/time macros, which would make the build non-deterministic # Prohibit date/time macros, which would make the build non-deterministic
KBUILD_CFLAGS += -Werror=date-time KBUILD_CFLAGS += -Werror=date-time
@ -1750,6 +1748,16 @@ clean-dirs := $(KBUILD_EXTMOD)
clean: rm-files := $(KBUILD_EXTMOD)/Module.symvers $(KBUILD_EXTMOD)/modules.nsdeps \ clean: rm-files := $(KBUILD_EXTMOD)/Module.symvers $(KBUILD_EXTMOD)/modules.nsdeps \
$(KBUILD_EXTMOD)/compile_commands.json $(KBUILD_EXTMOD)/.thinlto-cache $(KBUILD_EXTMOD)/compile_commands.json $(KBUILD_EXTMOD)/.thinlto-cache
PHONY += prepare
# now expand this into a simple variable to reduce the cost of shell evaluations
prepare: CC_VERSION_TEXT := $(CC_VERSION_TEXT)
prepare:
@if [ "$(CC_VERSION_TEXT)" != $(CONFIG_CC_VERSION_TEXT) ]; then \
echo >&2 "warning: the compiler differs from the one used to build the kernel"; \
echo >&2 " The kernel was built by: "$(CONFIG_CC_VERSION_TEXT); \
echo >&2 " You are using: $(CC_VERSION_TEXT)"; \
fi
PHONY += help PHONY += help
help: help:
@echo ' Building external modules.' @echo ' Building external modules.'
@ -1761,7 +1769,7 @@ help:
@echo '' @echo ''
# no-op for external module builds # no-op for external module builds
PHONY += prepare modules_prepare PHONY += modules_prepare
endif # KBUILD_EXTMOD endif # KBUILD_EXTMOD

View File

@ -18,8 +18,7 @@ ifeq ($(CONFIG_ARC_TUNE_MCPU),"")
cflags-y += $(tune-mcpu-def-y) cflags-y += $(tune-mcpu-def-y)
else else
tune-mcpu := $(shell echo $(CONFIG_ARC_TUNE_MCPU)) tune-mcpu := $(shell echo $(CONFIG_ARC_TUNE_MCPU))
tune-mcpu-ok := $(call cc-option-yn, $(tune-mcpu)) ifneq ($(call cc-option,$(tune-mcpu)),)
ifeq ($(tune-mcpu-ok),y)
cflags-y += $(tune-mcpu) cflags-y += $(tune-mcpu)
else else
# The flag provided by 'CONFIG_ARC_TUNE_MCPU' option isn't known by this compiler # The flag provided by 'CONFIG_ARC_TUNE_MCPU' option isn't known by this compiler

View File

@ -5,8 +5,6 @@
* Copyright (C) 1996-2000 Russell King - Converted to ARM. * Copyright (C) 1996-2000 Russell King - Converted to ARM.
* Original Copyright (C) 1995 Linus Torvalds * Original Copyright (C) 1995 Linus Torvalds
*/ */
#include <stdarg.h>
#include <linux/export.h> #include <linux/export.h>
#include <linux/sched.h> #include <linux/sched.h>
#include <linux/sched/debug.h> #include <linux/sched/debug.h>

View File

@ -10,8 +10,6 @@
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details. * GNU General Public License for more details.
*/ */
#include <stdarg.h>
#include <linux/smp.h> #include <linux/smp.h>
#include <linux/io.h> #include <linux/io.h>
#include <linux/ioport.h> #include <linux/ioport.h>

View File

@ -6,9 +6,6 @@
* Copyright (C) 1996-2000 Russell King - Converted to ARM. * Copyright (C) 1996-2000 Russell King - Converted to ARM.
* Copyright (C) 2012 ARM Ltd. * Copyright (C) 2012 ARM Ltd.
*/ */
#include <stdarg.h>
#include <linux/compat.h> #include <linux/compat.h>
#include <linux/efi.h> #include <linux/efi.h>
#include <linux/elf.h> #include <linux/elf.h>

View File

@ -1 +1,3 @@
# SPDX-License-Identifier: GPL-2.0-only # SPDX-License-Identifier: GPL-2.0-only
obj-y += kernel/ mm/
obj-$(CONFIG_IA64_SGI_UV) += uv/

View File

@ -47,8 +47,6 @@ KBUILD_CFLAGS += $(cflags-y)
head-y := arch/ia64/kernel/head.o head-y := arch/ia64/kernel/head.o
libs-y += arch/ia64/lib/ libs-y += arch/ia64/lib/
core-y += arch/ia64/kernel/ arch/ia64/mm/
core-$(CONFIG_IA64_SGI_UV) += arch/ia64/uv/
drivers-y += arch/ia64/pci/ arch/ia64/hp/common/ drivers-y += arch/ia64/pci/ arch/ia64/hp/common/

View File

@ -254,7 +254,7 @@ endif
# #
# Board-dependent options and extra files # Board-dependent options and extra files
# #
include arch/mips/Kbuild.platforms include $(srctree)/arch/mips/Kbuild.platforms
ifdef CONFIG_PHYSICAL_START ifdef CONFIG_PHYSICAL_START
load-y = $(CONFIG_PHYSICAL_START) load-y = $(CONFIG_PHYSICAL_START)

View File

@ -14,8 +14,6 @@
*/ */
#define __KERNEL_SYSCALLS__ #define __KERNEL_SYSCALLS__
#include <stdarg.h>
#include <linux/errno.h> #include <linux/errno.h>
#include <linux/sched.h> #include <linux/sched.h>
#include <linux/sched/debug.h> #include <linux/sched/debug.h>

View File

@ -51,7 +51,7 @@
* prumpf 991016 * prumpf 991016
*/ */
#include <stdarg.h> #include <linux/stdarg.h>
#include <linux/delay.h> #include <linux/delay.h>
#include <linux/init.h> #include <linux/init.h>

View File

@ -17,9 +17,6 @@
* Copyright (C) 2001-2014 Helge Deller <deller@gmx.de> * Copyright (C) 2001-2014 Helge Deller <deller@gmx.de>
* Copyright (C) 2002 Randolph Chung <tausq with parisc-linux.org> * Copyright (C) 2002 Randolph Chung <tausq with parisc-linux.org>
*/ */
#include <stdarg.h>
#include <linux/elf.h> #include <linux/elf.h>
#include <linux/errno.h> #include <linux/errno.h>
#include <linux/kernel.h> #include <linux/kernel.h>

View File

@ -11,7 +11,6 @@
#undef DEBUG #undef DEBUG
#include <stdarg.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/string.h> #include <linux/string.h>
#include <linux/init.h> #include <linux/init.h>

View File

@ -14,7 +14,7 @@
/* we cannot use FORTIFY as it brings in new symbols */ /* we cannot use FORTIFY as it brings in new symbols */
#define __NO_FORTIFY #define __NO_FORTIFY
#include <stdarg.h> #include <linux/stdarg.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/string.h> #include <linux/string.h>
#include <linux/init.h> #include <linux/init.h>

View File

@ -7,7 +7,7 @@
* Copyright (C) 2001 IBM. * Copyright (C) 2001 IBM.
*/ */
#include <stdarg.h> #include <linux/stdarg.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/types.h> #include <linux/types.h>
#include <linux/spinlock.h> #include <linux/spinlock.h>

View File

@ -5,7 +5,7 @@
* c 2001 PPC 64 Team, IBM Corp * c 2001 PPC 64 Team, IBM Corp
*/ */
#include <stdarg.h> #include <linux/stdarg.h>
#include <linux/types.h> #include <linux/types.h>
#include <linux/sched.h> #include <linux/sched.h>
#include <linux/console.h> #include <linux/console.h>

View File

@ -41,7 +41,7 @@ endif
ifeq ($(CONFIG_LD_IS_LLD),y) ifeq ($(CONFIG_LD_IS_LLD),y)
KBUILD_CFLAGS += -mno-relax KBUILD_CFLAGS += -mno-relax
KBUILD_AFLAGS += -mno-relax KBUILD_AFLAGS += -mno-relax
ifneq ($(LLVM_IAS),1) ifndef CONFIG_AS_IS_LLVM
KBUILD_CFLAGS += -Wa,-mno-relax KBUILD_CFLAGS += -Wa,-mno-relax
KBUILD_AFLAGS += -Wa,-mno-relax KBUILD_AFLAGS += -Wa,-mno-relax
endif endif

View File

@ -70,7 +70,7 @@ cflags-y += -Wa,-I$(srctree)/arch/$(ARCH)/include
# #
cflags-$(CONFIG_FRAME_POINTER) += -fno-optimize-sibling-calls cflags-$(CONFIG_FRAME_POINTER) += -fno-optimize-sibling-calls
ifeq ($(call cc-option-yn,-mpacked-stack -mbackchain -msoft-float),y) ifneq ($(call cc-option,-mpacked-stack -mbackchain -msoft-float),)
cflags-$(CONFIG_PACK_STACK) += -mpacked-stack -D__PACK_STACK cflags-$(CONFIG_PACK_STACK) += -mpacked-stack -D__PACK_STACK
aflags-$(CONFIG_PACK_STACK) += -D__PACK_STACK aflags-$(CONFIG_PACK_STACK) += -D__PACK_STACK
endif endif
@ -78,22 +78,22 @@ endif
KBUILD_AFLAGS_DECOMPRESSOR += $(aflags-y) KBUILD_AFLAGS_DECOMPRESSOR += $(aflags-y)
KBUILD_CFLAGS_DECOMPRESSOR += $(cflags-y) KBUILD_CFLAGS_DECOMPRESSOR += $(cflags-y)
ifeq ($(call cc-option-yn,-mstack-size=8192 -mstack-guard=128),y) ifneq ($(call cc-option,-mstack-size=8192 -mstack-guard=128),)
cflags-$(CONFIG_CHECK_STACK) += -mstack-size=$(STACK_SIZE) cflags-$(CONFIG_CHECK_STACK) += -mstack-size=$(STACK_SIZE)
ifneq ($(call cc-option-yn,-mstack-size=8192),y) ifeq ($(call cc-option,-mstack-size=8192),)
cflags-$(CONFIG_CHECK_STACK) += -mstack-guard=$(CONFIG_STACK_GUARD) cflags-$(CONFIG_CHECK_STACK) += -mstack-guard=$(CONFIG_STACK_GUARD)
endif endif
endif endif
ifdef CONFIG_WARN_DYNAMIC_STACK ifdef CONFIG_WARN_DYNAMIC_STACK
ifeq ($(call cc-option-yn,-mwarn-dynamicstack),y) ifneq ($(call cc-option,-mwarn-dynamicstack),)
KBUILD_CFLAGS += -mwarn-dynamicstack KBUILD_CFLAGS += -mwarn-dynamicstack
KBUILD_CFLAGS_DECOMPRESSOR += -mwarn-dynamicstack KBUILD_CFLAGS_DECOMPRESSOR += -mwarn-dynamicstack
endif endif
endif endif
ifdef CONFIG_EXPOLINE ifdef CONFIG_EXPOLINE
ifeq ($(call cc-option-yn,$(CC_FLAGS_MARCH) -mindirect-branch=thunk),y) ifneq ($(call cc-option,$(CC_FLAGS_MARCH) -mindirect-branch=thunk),)
CC_FLAGS_EXPOLINE := -mindirect-branch=thunk CC_FLAGS_EXPOLINE := -mindirect-branch=thunk
CC_FLAGS_EXPOLINE += -mfunction-return=thunk CC_FLAGS_EXPOLINE += -mfunction-return=thunk
CC_FLAGS_EXPOLINE += -mindirect-branch-table CC_FLAGS_EXPOLINE += -mindirect-branch-table
@ -104,10 +104,10 @@ ifdef CONFIG_EXPOLINE
endif endif
ifdef CONFIG_FUNCTION_TRACER ifdef CONFIG_FUNCTION_TRACER
ifeq ($(call cc-option-yn,-mfentry -mnop-mcount),n) ifeq ($(call cc-option,-mfentry -mnop-mcount),)
# make use of hotpatch feature if the compiler supports it # make use of hotpatch feature if the compiler supports it
cc_hotpatch := -mhotpatch=0,3 cc_hotpatch := -mhotpatch=0,3
ifeq ($(call cc-option-yn,$(cc_hotpatch)),y) ifneq ($(call cc-option,$(cc_hotpatch)),)
CC_FLAGS_FTRACE := $(cc_hotpatch) CC_FLAGS_FTRACE := $(cc_hotpatch)
KBUILD_AFLAGS += -DCC_USING_HOTPATCH KBUILD_AFLAGS += -DCC_USING_HOTPATCH
KBUILD_CFLAGS += -DCC_USING_HOTPATCH KBUILD_CFLAGS += -DCC_USING_HOTPATCH

View File

@ -1,5 +1,6 @@
// SPDX-License-Identifier: GPL-2.0 // SPDX-License-Identifier: GPL-2.0
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/stdarg.h>
#include <linux/string.h> #include <linux/string.h>
#include <linux/ctype.h> #include <linux/ctype.h>
#include <asm/stacktrace.h> #include <asm/stacktrace.h>
@ -8,7 +9,6 @@
#include <asm/setup.h> #include <asm/setup.h>
#include <asm/sclp.h> #include <asm/sclp.h>
#include <asm/uv.h> #include <asm/uv.h>
#include <stdarg.h>
#include "boot.h" #include "boot.h"
const char hex_asc[] = "0123456789abcdef"; const char hex_asc[] = "0123456789abcdef";

View File

@ -1,56 +0,0 @@
#!/bin/sh
#
# arch/sh/boot/install.sh
#
# This file is subject to the terms and conditions of the GNU General Public
# License. See the file "COPYING" in the main directory of this archive
# for more details.
#
# Copyright (C) 1995 by Linus Torvalds
#
# Adapted from code in arch/i386/boot/Makefile by H. Peter Anvin
# Adapted from code in arch/i386/boot/install.sh by Russell King
# Adapted from code in arch/arm/boot/install.sh by Stuart Menefy
#
# "make install" script for sh architecture
#
# Arguments:
# $1 - kernel version
# $2 - kernel image file
# $3 - kernel map file
# $4 - default install path (blank if root directory)
#
# User may have a custom install script
if [ -x /sbin/${INSTALLKERNEL} ]; then
exec /sbin/${INSTALLKERNEL} "$@"
fi
if [ "$2" = "zImage" ]; then
# Compressed install
echo "Installing compressed kernel"
if [ -f $4/vmlinuz-$1 ]; then
mv $4/vmlinuz-$1 $4/vmlinuz.old
fi
if [ -f $4/System.map-$1 ]; then
mv $4/System.map-$1 $4/System.old
fi
cat $2 > $4/vmlinuz-$1
cp $3 $4/System.map-$1
else
# Normal install
echo "Installing normal kernel"
if [ -f $4/vmlinux-$1 ]; then
mv $4/vmlinux-$1 $4/vmlinux.old
fi
if [ -f $4/System.map ]; then
mv $4/System.map $4/System.old
fi
cat $2 > $4/vmlinux-$1
cp $3 $4/System.map
fi

View File

@ -72,7 +72,8 @@ image zImage uImage tftpboot.img vmlinux.aout: vmlinux
$(Q)$(MAKE) $(build)=$(boot) $(boot)/$@ $(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
install: install:
$(Q)$(MAKE) $(build)=$(boot) $@ sh $(srctree)/$(boot)/install.sh $(KERNELRELEASE) $(KBUILD_IMAGE) \
System.map "$(INSTALL_PATH)"
archclean: archclean:
$(Q)$(MAKE) $(clean)=$(boot) $(Q)$(MAKE) $(clean)=$(boot)

View File

@ -70,7 +70,3 @@ $(obj)/image: vmlinux FORCE
$(obj)/tftpboot.img: $(obj)/image $(obj)/piggyback System.map $(ROOT_IMG) FORCE $(obj)/tftpboot.img: $(obj)/image $(obj)/piggyback System.map $(ROOT_IMG) FORCE
$(call if_changed,elftoaout) $(call if_changed,elftoaout)
$(call if_changed,piggy) $(call if_changed,piggy)
install:
sh $(srctree)/$(src)/install.sh $(KERNELRELEASE) $(obj)/zImage \
System.map "$(INSTALL_PATH)"

View File

@ -8,9 +8,6 @@
/* /*
* This file handles the architecture-dependent parts of process handling.. * This file handles the architecture-dependent parts of process handling..
*/ */
#include <stdarg.h>
#include <linux/elfcore.h> #include <linux/elfcore.h>
#include <linux/errno.h> #include <linux/errno.h>
#include <linux/module.h> #include <linux/module.h>

View File

@ -9,9 +9,6 @@
/* /*
* This file handles the architecture-dependent parts of process handling.. * This file handles the architecture-dependent parts of process handling..
*/ */
#include <stdarg.h>
#include <linux/errno.h> #include <linux/errno.h>
#include <linux/export.h> #include <linux/export.h>
#include <linux/sched.h> #include <linux/sched.h>

View File

@ -41,8 +41,8 @@ endif
HOST_DIR := arch/$(HEADER_ARCH) HOST_DIR := arch/$(HEADER_ARCH)
include $(ARCH_DIR)/Makefile-skas include $(srctree)/$(ARCH_DIR)/Makefile-skas
include $(HOST_DIR)/Makefile.um include $(srctree)/$(HOST_DIR)/Makefile.um
core-y += $(HOST_DIR)/um/ core-y += $(HOST_DIR)/um/
@ -76,7 +76,7 @@ USER_CFLAGS = $(patsubst $(KERNEL_DEFINES),,$(patsubst -I%,,$(KBUILD_CFLAGS))) \
-idirafter $(objtree)/include -D__KERNEL__ -D__UM_HOST__ -idirafter $(objtree)/include -D__KERNEL__ -D__UM_HOST__
#This will adjust *FLAGS accordingly to the platform. #This will adjust *FLAGS accordingly to the platform.
include $(ARCH_DIR)/Makefile-os-$(OS) include $(srctree)/$(ARCH_DIR)/Makefile-os-$(OS)
KBUILD_CPPFLAGS += -I$(srctree)/$(HOST_DIR)/include \ KBUILD_CPPFLAGS += -I$(srctree)/$(HOST_DIR)/include \
-I$(srctree)/$(HOST_DIR)/include/uapi \ -I$(srctree)/$(HOST_DIR)/include/uapi \

View File

@ -3,6 +3,7 @@
* Copyright (C) 2020 Intel Corporation * Copyright (C) 2020 Intel Corporation
* Author: Johannes Berg <johannes@sipsolutions.net> * Author: Johannes Berg <johannes@sipsolutions.net>
*/ */
#include <stdbool.h>
#include <os.h> #include <os.h>
#include <errno.h> #include <errno.h>
#include <sched.h> #include <sched.h>

View File

@ -3,6 +3,7 @@
* Copyright (C) 2001 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com) * Copyright (C) 2001 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com)
*/ */
#include <stdbool.h>
#include <stdio.h> #include <stdio.h>
#include <unistd.h> #include <unistd.h>
#include <stdarg.h> #include <stdarg.h>

View File

@ -7,7 +7,6 @@
#define __IRQ_USER_H__ #define __IRQ_USER_H__
#include <sysdep/ptrace.h> #include <sysdep/ptrace.h>
#include <stdbool.h>
enum um_irq_type { enum um_irq_type {
IRQ_READ, IRQ_READ,

View File

@ -8,7 +8,6 @@
#ifndef __OS_H__ #ifndef __OS_H__
#define __OS_H__ #define __OS_H__
#include <stdarg.h>
#include <irq_user.h> #include <irq_user.h>
#include <longjmp.h> #include <longjmp.h>
#include <mm_id.h> #include <mm_id.h>

View File

@ -67,7 +67,7 @@ int signals_enabled;
#ifdef UML_CONFIG_UML_TIME_TRAVEL_SUPPORT #ifdef UML_CONFIG_UML_TIME_TRAVEL_SUPPORT
static int signals_blocked; static int signals_blocked;
#else #else
#define signals_blocked false #define signals_blocked 0
#endif #endif
static unsigned int signals_pending; static unsigned int signals_pending;
static unsigned int signals_active = 0; static unsigned int signals_active = 0;

View File

@ -3,6 +3,7 @@
* Copyright (C) 2000 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com) * Copyright (C) 2000 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com)
*/ */
#include <stdarg.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <unistd.h> #include <unistd.h>

View File

@ -73,7 +73,7 @@ ifeq ($(CONFIG_X86_32),y)
KBUILD_CFLAGS += $(cc_stack_align4) KBUILD_CFLAGS += $(cc_stack_align4)
# CPU-specific tuning. Anything which can be shared with UML should go here. # CPU-specific tuning. Anything which can be shared with UML should go here.
include arch/x86/Makefile_32.cpu include $(srctree)/arch/x86/Makefile_32.cpu
KBUILD_CFLAGS += $(cflags-y) KBUILD_CFLAGS += $(cflags-y)
# temporary until string.h is fixed # temporary until string.h is fixed

View File

@ -2,13 +2,7 @@
# CPU tuning section - shared with UML. # CPU tuning section - shared with UML.
# Must change only cflags-y (or [yn]), not CFLAGS! That makes a difference for UML. # Must change only cflags-y (or [yn]), not CFLAGS! That makes a difference for UML.
#-mtune exists since gcc 3.4
HAS_MTUNE := $(call cc-option-yn, -mtune=i386)
ifeq ($(HAS_MTUNE),y)
tune = $(call cc-option,-mtune=$(1),$(2)) tune = $(call cc-option,-mtune=$(1),$(2))
else
tune = $(call cc-option,-mcpu=$(1),$(2))
endif
cflags-$(CONFIG_M486SX) += -march=i486 cflags-$(CONFIG_M486SX) += -march=i486
cflags-$(CONFIG_M486) += -march=i486 cflags-$(CONFIG_M486) += -march=i486

View File

@ -18,7 +18,7 @@
#ifndef __ASSEMBLY__ #ifndef __ASSEMBLY__
#include <stdarg.h> #include <linux/stdarg.h>
#include <linux/types.h> #include <linux/types.h>
#include <linux/edd.h> #include <linux/edd.h>
#include <asm/setup.h> #include <asm/setup.h>

View File

@ -131,7 +131,7 @@ $(obj)/%-x32.o: $(obj)/%.o FORCE
targets += vdsox32.lds $(vobjx32s-y) targets += vdsox32.lds $(vobjx32s-y)
$(obj)/%.so: OBJCOPYFLAGS := -S --remove-section __ex_table $(obj)/%.so: OBJCOPYFLAGS := -S --remove-section __ex_table
$(obj)/%.so: $(obj)/%.so.dbg $(obj)/%.so: $(obj)/%.so.dbg FORCE
$(call if_changed,objcopy) $(call if_changed,objcopy)
$(obj)/vdsox32.so.dbg: $(obj)/vdsox32.lds $(vobjx32s) FORCE $(obj)/vdsox32.so.dbg: $(obj)/vdsox32.lds $(vobjx32s) FORCE

View File

@ -8,7 +8,6 @@
#define pr_fmt(fmt) "xen-blkback: " fmt #define pr_fmt(fmt) "xen-blkback: " fmt
#include <stdarg.h>
#include <linux/module.h> #include <linux/module.h>
#include <linux/kthread.h> #include <linux/kthread.h>
#include <xen/events.h> #include <xen/events.h>

View File

@ -7,7 +7,7 @@
* Copyright 2011 Intel Corporation; author Matt Fleming * Copyright 2011 Intel Corporation; author Matt Fleming
*/ */
#include <stdarg.h> #include <linux/stdarg.h>
#include <linux/ctype.h> #include <linux/ctype.h>
#include <linux/efi.h> #include <linux/efi.h>

View File

@ -10,7 +10,7 @@
* Oh, it's a waste of space, but oh-so-yummy for debugging. * Oh, it's a waste of space, but oh-so-yummy for debugging.
*/ */
#include <stdarg.h> #include <linux/stdarg.h>
#include <linux/compiler.h> #include <linux/compiler.h>
#include <linux/ctype.h> #include <linux/ctype.h>

View File

@ -28,9 +28,9 @@
*/ */
#include <linux/delay.h> #include <linux/delay.h>
#include <linux/stdarg.h>
#include "dm_services.h" #include "dm_services.h"
#include <stdarg.h>
#include "dc.h" #include "dc.h"
#include "dc_dmub_srv.h" #include "dc_dmub_srv.h"

View File

@ -39,7 +39,6 @@
#include <linux/types.h> #include <linux/types.h>
#include <linux/string.h> #include <linux/string.h>
#include <linux/delay.h> #include <linux/delay.h>
#include <stdarg.h>
#include "atomfirmware.h" #include "atomfirmware.h"

View File

@ -25,7 +25,7 @@
#define DEBUG /* for pr_debug() */ #define DEBUG /* for pr_debug() */
#include <stdarg.h> #include <linux/stdarg.h>
#include <linux/io.h> #include <linux/io.h>
#include <linux/moduleparam.h> #include <linux/moduleparam.h>

View File

@ -24,7 +24,6 @@
#include <linux/pm_runtime.h> #include <linux/pm_runtime.h>
#include <linux/kthread.h> #include <linux/kthread.h>
#include <linux/devcoredump.h> #include <linux/devcoredump.h>
#include <stdarg.h>
#include "msm_kms.h" #include "msm_kms.h"
#define MSM_DISP_SNAPSHOT_MAX_BLKS 10 #define MSM_DISP_SNAPSHOT_MAX_BLKS 10

View File

@ -379,7 +379,7 @@ static char *pnames[] =
/*2f */ "Useruserdata" /*2f */ "Useruserdata"
}; };
#include <stdarg.h> #include <linux/stdarg.h>
/*-------------------------------------------------------*/ /*-------------------------------------------------------*/
static _cdebbuf *bufprint(_cdebbuf *cdb, char *fmt, ...) static _cdebbuf *bufprint(_cdebbuf *cdb, char *fmt, ...)

View File

@ -2,7 +2,6 @@
/* /*
* Driver for the ADB controller in the Mac I/O (Hydra) chip. * Driver for the ADB controller in the Mac I/O (Hydra) chip.
*/ */
#include <stdarg.h>
#include <linux/types.h> #include <linux/types.h>
#include <linux/errno.h> #include <linux/errno.h>
#include <linux/kernel.h> #include <linux/kernel.h>

View File

@ -9,7 +9,7 @@
* *
* Copyright (C) 1996 Paul Mackerras. * Copyright (C) 1996 Paul Mackerras.
*/ */
#include <stdarg.h> #include <linux/stdarg.h>
#include <linux/types.h> #include <linux/types.h>
#include <linux/errno.h> #include <linux/errno.h>
#include <linux/kernel.h> #include <linux/kernel.h>

View File

@ -23,8 +23,6 @@
* Apple's "ADB Analyzer" bus sniffer is invaluable: * Apple's "ADB Analyzer" bus sniffer is invaluable:
* ftp://ftp.apple.com/developer/Tool_Chest/Devices_-_Hardware/Apple_Desktop_Bus/ * ftp://ftp.apple.com/developer/Tool_Chest/Devices_-_Hardware/Apple_Desktop_Bus/
*/ */
#include <stdarg.h>
#include <linux/types.h> #include <linux/types.h>
#include <linux/errno.h> #include <linux/errno.h>
#include <linux/kernel.h> #include <linux/kernel.h>

View File

@ -18,7 +18,7 @@
* a sleep or a freq. switch * a sleep or a freq. switch
* *
*/ */
#include <stdarg.h> #include <linux/stdarg.h>
#include <linux/mutex.h> #include <linux/mutex.h>
#include <linux/types.h> #include <linux/types.h>
#include <linux/errno.h> #include <linux/errno.h>

View File

@ -79,7 +79,6 @@
#undef HERMES_DEBUG #undef HERMES_DEBUG
#ifdef HERMES_DEBUG #ifdef HERMES_DEBUG
#include <stdarg.h>
#define DEBUG(lvl, stuff...) if ((lvl) <= HERMES_DEBUG) DMSG(stuff) #define DEBUG(lvl, stuff...) if ((lvl) <= HERMES_DEBUG) DMSG(stuff)

View File

@ -7,7 +7,6 @@
#define IOSM_IPC_IMEM_H #define IOSM_IPC_IMEM_H
#include <linux/skbuff.h> #include <linux/skbuff.h>
#include <stdbool.h>
#include "iosm_ipc_mmio.h" #include "iosm_ipc_mmio.h"
#include "iosm_ipc_pcie.h" #include "iosm_ipc_pcie.h"

View File

@ -5,7 +5,6 @@
#define ASPEED_PINMUX_H #define ASPEED_PINMUX_H
#include <linux/regmap.h> #include <linux/regmap.h>
#include <stdbool.h>
/* /*
* The ASPEED SoCs provide typically more than 200 pins for GPIO and other * The ASPEED SoCs provide typically more than 200 pins for GPIO and other

View File

@ -10,7 +10,6 @@
/*************************************************************************** /***************************************************************************
* OS specific includes * OS specific includes
*/ */
#include <stdarg.h>
#include <linux/module.h> #include <linux/module.h>
#include <linux/debugfs.h> #include <linux/debugfs.h>
#include <linux/firmware.h> #include <linux/firmware.h>

View File

@ -16,8 +16,6 @@
#ifndef __ISP_LOCAL_H_INCLUDED__ #ifndef __ISP_LOCAL_H_INCLUDED__
#define __ISP_LOCAL_H_INCLUDED__ #define __ISP_LOCAL_H_INCLUDED__
#include <stdbool.h>
#include "isp_global.h" #include "isp_global.h"
#include <isp2400_support.h> #include <isp2400_support.h>

View File

@ -16,7 +16,7 @@
#ifndef __PRINT_SUPPORT_H_INCLUDED__ #ifndef __PRINT_SUPPORT_H_INCLUDED__
#define __PRINT_SUPPORT_H_INCLUDED__ #define __PRINT_SUPPORT_H_INCLUDED__
#include <stdarg.h> #include <linux/stdarg.h>
extern int (*sh_css_printf)(const char *fmt, va_list args); extern int (*sh_css_printf)(const char *fmt, va_list args);
/* depends on host supplied print function in ia_css_init() */ /* depends on host supplied print function in ia_css_init() */

View File

@ -17,7 +17,7 @@
#define __IA_CSS_ENV_H #define __IA_CSS_ENV_H
#include <type_support.h> #include <type_support.h>
#include <stdarg.h> /* va_list */ #include <linux/stdarg.h> /* va_list */
#include "ia_css_types.h" #include "ia_css_types.h"
#include "ia_css_acc_types.h" #include "ia_css_acc_types.h"

View File

@ -19,7 +19,7 @@
/*! \file */ /*! \file */
#include <type_support.h> #include <type_support.h>
#include <stdarg.h> #include <linux/stdarg.h>
#include "ia_css_types.h" #include "ia_css_types.h"
#include "ia_css_binary.h" #include "ia_css_binary.h"
#include "ia_css_frame_public.h" #include "ia_css_frame_public.h"

View File

@ -20,7 +20,7 @@
#include <math_support.h> #include <math_support.h>
#include <type_support.h> #include <type_support.h>
#include <platform_support.h> #include <platform_support.h>
#include <stdarg.h> #include <linux/stdarg.h>
#if !defined(ISP2401) #if !defined(ISP2401)
#include "input_formatter.h" #include "input_formatter.h"

View File

@ -33,8 +33,6 @@
#define pr_fmt(fmt) "xen-pvscsi: " fmt #define pr_fmt(fmt) "xen-pvscsi: " fmt
#include <stdarg.h>
#include <linux/module.h> #include <linux/module.h>
#include <linux/utsname.h> #include <linux/utsname.h>
#include <linux/interrupt.h> #include <linux/interrupt.h>

View File

@ -14,7 +14,7 @@
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#ifdef __KERNEL__ #ifdef __KERNEL__
#include <stdarg.h> #include <linux/stdarg.h>
#include <linux/string.h> #include <linux/string.h>
#include <linux/spinlock.h> #include <linux/spinlock.h>
#include <linux/kernel.h> #include <linux/kernel.h>

View File

@ -8,7 +8,7 @@
#include <linux/string.h> #include <linux/string.h>
#include <linux/buffer_head.h> #include <linux/buffer_head.h>
#include <stdarg.h> #include <linux/stdarg.h>
static char error_buf[1024]; static char error_buf[1024];
static char fmt_buf[1024]; static char fmt_buf[1024];

View File

@ -70,7 +70,7 @@
#include <linux/module.h> #include <linux/module.h>
#include <linux/bitops.h> #include <linux/bitops.h>
#include <stdarg.h> #include <linux/stdarg.h>
#include <linux/uaccess.h> #include <linux/uaccess.h>

View File

@ -22,7 +22,7 @@ typedef __builtin_va_list va_list;
#define va_arg(v, l) __builtin_va_arg(v, l) #define va_arg(v, l) __builtin_va_arg(v, l)
#define va_copy(d, s) __builtin_va_copy(d, s) #define va_copy(d, s) __builtin_va_copy(d, s)
#else #else
#include <stdarg.h> #include <linux/stdarg.h>
#endif #endif
#endif #endif

View File

@ -5,8 +5,6 @@
#ifndef __LINUX_FILTER_H__ #ifndef __LINUX_FILTER_H__
#define __LINUX_FILTER_H__ #define __LINUX_FILTER_H__
#include <stdarg.h>
#include <linux/atomic.h> #include <linux/atomic.h>
#include <linux/refcount.h> #include <linux/refcount.h>
#include <linux/compat.h> #include <linux/compat.h>

View File

@ -2,7 +2,7 @@
#ifndef _LINUX_KERNEL_H #ifndef _LINUX_KERNEL_H
#define _LINUX_KERNEL_H #define _LINUX_KERNEL_H
#include <stdarg.h> #include <linux/stdarg.h>
#include <linux/align.h> #include <linux/align.h>
#include <linux/limits.h> #include <linux/limits.h>
#include <linux/linkage.h> #include <linux/linkage.h>

View File

@ -18,7 +18,6 @@
#ifndef mISDNIF_H #ifndef mISDNIF_H
#define mISDNIF_H #define mISDNIF_H
#include <stdarg.h>
#include <linux/types.h> #include <linux/types.h>
#include <linux/errno.h> #include <linux/errno.h>
#include <linux/socket.h> #include <linux/socket.h>

View File

@ -2,7 +2,7 @@
#ifndef __KERNEL_PRINTK__ #ifndef __KERNEL_PRINTK__
#define __KERNEL_PRINTK__ #define __KERNEL_PRINTK__
#include <stdarg.h> #include <linux/stdarg.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/kern_levels.h> #include <linux/kern_levels.h>
#include <linux/linkage.h> #include <linux/linkage.h>

11
include/linux/stdarg.h Normal file
View File

@ -0,0 +1,11 @@
// SPDX-License-Identifier: GPL-2.0-or-later
#ifndef _LINUX_STDARG_H
#define _LINUX_STDARG_H
typedef __builtin_va_list va_list;
#define va_start(v, l) __builtin_va_start(v, l)
#define va_end(v) __builtin_va_end(v)
#define va_arg(v, T) __builtin_va_arg(v, T)
#define va_copy(d, s) __builtin_va_copy(d, s)
#endif

View File

@ -6,7 +6,7 @@
#include <linux/types.h> /* for size_t */ #include <linux/types.h> /* for size_t */
#include <linux/stddef.h> /* for NULL */ #include <linux/stddef.h> /* for NULL */
#include <linux/errno.h> /* for E2BIG */ #include <linux/errno.h> /* for E2BIG */
#include <stdarg.h> #include <linux/stdarg.h>
#include <uapi/linux/string.h> #include <uapi/linux/string.h>
extern char *strndup_user(const char __user *, long); extern char *strndup_user(const char __user *, long);

View File

@ -10,7 +10,6 @@
* 03/02/13 added new 2.5 kallsyms <xavier.bru@bull.net> * 03/02/13 added new 2.5 kallsyms <xavier.bru@bull.net>
*/ */
#include <stdarg.h>
#include <linux/types.h> #include <linux/types.h>
#include <linux/sched.h> #include <linux/sched.h>
#include <linux/mm.h> #include <linux/mm.h>

View File

@ -365,6 +365,7 @@ config STRIP_ASM_SYMS
config READABLE_ASM config READABLE_ASM
bool "Generate readable assembler code" bool "Generate readable assembler code"
depends on DEBUG_KERNEL depends on DEBUG_KERNEL
depends on CC_IS_GCC
help help
Disable some compiler optimizations that tend to generate human unreadable Disable some compiler optimizations that tend to generate human unreadable
assembler output. This may make the kernel slightly slower, but it helps assembler output. This may make the kernel slightly slower, but it helps
@ -383,6 +384,7 @@ config HEADERS_INSTALL
config DEBUG_SECTION_MISMATCH config DEBUG_SECTION_MISMATCH
bool "Enable full Section mismatch analysis" bool "Enable full Section mismatch analysis"
depends on CC_IS_GCC
help help
The section mismatch analysis checks if there are illegal The section mismatch analysis checks if there are illegal
references from one section to another section. references from one section to another section.

View File

@ -5,8 +5,6 @@
* CONFIG_DEBUG_INFO_REDUCED. Please do not add actual code. However, * CONFIG_DEBUG_INFO_REDUCED. Please do not add actual code. However,
* adding appropriate #includes is fine. * adding appropriate #includes is fine.
*/ */
#include <stdarg.h>
#include <linux/cred.h> #include <linux/cred.h>
#include <linux/crypto.h> #include <linux/crypto.h>
#include <linux/dcache.h> #include <linux/dcache.h>
@ -22,6 +20,7 @@
#include <linux/net.h> #include <linux/net.h>
#include <linux/sched.h> #include <linux/sched.h>
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/stdarg.h>
#include <linux/types.h> #include <linux/types.h>
#include <net/addrconf.h> #include <net/addrconf.h>
#include <net/sock.h> #include <net/sock.h>

View File

@ -5,7 +5,7 @@
* Copyright (C) 1991, 1992 Linus Torvalds * Copyright (C) 1991, 1992 Linus Torvalds
*/ */
#include <stdarg.h> #include <linux/stdarg.h>
#include <linux/export.h> #include <linux/export.h>
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/types.h> #include <linux/types.h>

View File

@ -11,7 +11,7 @@
#include <linux/spinlock.h> #include <linux/spinlock.h>
#include <linux/types.h> #include <linux/types.h>
#include <stdarg.h> #include <linux/stdarg.h>
struct string_stream_fragment { struct string_stream_fragment {
struct kunit *test; struct kunit *test;

View File

@ -17,7 +17,7 @@
* - scnprintf and vscnprintf * - scnprintf and vscnprintf
*/ */
#include <stdarg.h> #include <linux/stdarg.h>
#include <linux/build_bug.h> #include <linux/build_bug.h>
#include <linux/clk.h> #include <linux/clk.h>
#include <linux/clk-provider.h> #include <linux/clk-provider.h>

View File

@ -5,7 +5,7 @@
* Copyright (C) 2020, Google LLC. * Copyright (C) 2020, Google LLC.
*/ */
#include <stdarg.h> #include <linux/stdarg.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/lockdep.h> #include <linux/lockdep.h>

View File

@ -7,7 +7,7 @@
#include "log.h" #include "log.h"
#include "main.h" #include "main.h"
#include <stdarg.h> #include <linux/stdarg.h>
#include "trace.h" #include "trace.h"

View File

@ -57,6 +57,7 @@ kecho := $($(quiet)kecho)
# - If the content differ the new file is used # - If the content differ the new file is used
# - If they are equal no change, and no timestamp update # - If they are equal no change, and no timestamp update
define filechk define filechk
$(check-FORCE)
$(Q)set -e; \ $(Q)set -e; \
mkdir -p $(dir $@); \ mkdir -p $(dir $@); \
trap "rm -f $(dot-target).tmp" EXIT; \ trap "rm -f $(dot-target).tmp" EXIT; \
@ -130,13 +131,19 @@ make-cmd = $(call escsq,$(subst $(pound),$$(pound),$(subst $$,$$$$,$(cmd_$(1))))
# PHONY targets skipped in both cases. # PHONY targets skipped in both cases.
newer-prereqs = $(filter-out $(PHONY),$?) newer-prereqs = $(filter-out $(PHONY),$?)
# It is a typical mistake to forget the FORCE prerequisite. Check it here so
# no more breakage will slip in.
check-FORCE = $(if $(filter FORCE, $^),,$(warning FORCE prerequisite is missing))
if-changed-cond = $(newer-prereqs)$(cmd-check)$(check-FORCE)
# Execute command if command has changed or prerequisite(s) are updated. # Execute command if command has changed or prerequisite(s) are updated.
if_changed = $(if $(newer-prereqs)$(cmd-check), \ if_changed = $(if $(if-changed-cond), \
$(cmd); \ $(cmd); \
printf '%s\n' 'cmd_$@ := $(make-cmd)' > $(dot-target).cmd, @:) printf '%s\n' 'cmd_$@ := $(make-cmd)' > $(dot-target).cmd, @:)
# Execute the command and also postprocess generated .d dependencies file. # Execute the command and also postprocess generated .d dependencies file.
if_changed_dep = $(if $(newer-prereqs)$(cmd-check),$(cmd_and_fixdep),@:) if_changed_dep = $(if $(if-changed-cond),$(cmd_and_fixdep),@:)
cmd_and_fixdep = \ cmd_and_fixdep = \
$(cmd); \ $(cmd); \
@ -146,7 +153,7 @@ cmd_and_fixdep = \
# Usage: $(call if_changed_rule,foo) # Usage: $(call if_changed_rule,foo)
# Will check if $(cmd_foo) or any of the prerequisites changed, # Will check if $(cmd_foo) or any of the prerequisites changed,
# and if so will execute $(rule_foo). # and if so will execute $(rule_foo).
if_changed_rule = $(if $(newer-prereqs)$(cmd-check),$(rule_$(1)),@:) if_changed_rule = $(if $(if-changed-cond),$(rule_$(1)),@:)
### ###
# why - tell why a target got built # why - tell why a target got built

View File

@ -88,6 +88,10 @@ endif
targets-for-modules := $(patsubst %.o, %.mod, $(filter %.o, $(obj-m))) targets-for-modules := $(patsubst %.o, %.mod, $(filter %.o, $(obj-m)))
ifdef CONFIG_LTO_CLANG
targets-for-modules += $(patsubst %.o, %.lto.o, $(filter %.o, $(obj-m)))
endif
ifdef need-modorder ifdef need-modorder
targets-for-modules += $(obj)/modules.order targets-for-modules += $(obj)/modules.order
endif endif
@ -173,6 +177,8 @@ cmd_modversions_c = \
if $(NM) $@ 2>/dev/null | grep -q __ksymtab; then \ if $(NM) $@ 2>/dev/null | grep -q __ksymtab; then \
$(call cmd_gensymtypes_c,$(KBUILD_SYMTYPES),$(@:.o=.symtypes)) \ $(call cmd_gensymtypes_c,$(KBUILD_SYMTYPES),$(@:.o=.symtypes)) \
> $@.symversions; \ > $@.symversions; \
else \
rm -f $@.symversions; \
fi; fi;
else else
cmd_modversions_c = \ cmd_modversions_c = \
@ -271,12 +277,33 @@ $(obj)/%.o: $(src)/%.c $(recordmcount_source) $$(objtool_dep) FORCE
$(call if_changed_rule,cc_o_c) $(call if_changed_rule,cc_o_c)
$(call cmd,force_checksrc) $(call cmd,force_checksrc)
ifdef CONFIG_LTO_CLANG
# Module .o files may contain LLVM bitcode, compile them into native code
# before ELF processing
quiet_cmd_cc_lto_link_modules = LTO [M] $@
cmd_cc_lto_link_modules = \
$(LD) $(ld_flags) -r -o $@ \
$(shell [ -s $(@:.lto.o=.o.symversions) ] && \
echo -T $(@:.lto.o=.o.symversions)) \
--whole-archive $(filter-out FORCE,$^)
ifdef CONFIG_STACK_VALIDATION
# objtool was skipped for LLVM bitcode, run it now that we have compiled
# modules into native code
cmd_cc_lto_link_modules += ; \
$(objtree)/tools/objtool/objtool $(objtool_args) --module $@
endif
$(obj)/%.lto.o: $(obj)/%.o FORCE
$(call if_changed,cc_lto_link_modules)
endif
cmd_mod = { \ cmd_mod = { \
echo $(if $($*-objs)$($*-y)$($*-m), $(addprefix $(obj)/, $($*-objs) $($*-y) $($*-m)), $(@:.mod=.o)); \ echo $(if $($*-objs)$($*-y)$($*-m), $(addprefix $(obj)/, $($*-objs) $($*-y) $($*-m)), $(@:.mod=.o)); \
$(undefined_syms) echo; \ $(undefined_syms) echo; \
} > $@ } > $@
$(obj)/%.mod: $(obj)/%.o FORCE $(obj)/%.mod: $(obj)/%$(mod-prelink-ext).o FORCE
$(call if_changed,mod) $(call if_changed,mod)
quiet_cmd_cc_lst_c = MKLST $@ quiet_cmd_cc_lst_c = MKLST $@
@ -381,7 +408,6 @@ $(subdir-builtin): $(obj)/%/built-in.a: $(obj)/% ;
$(subdir-modorder): $(obj)/%/modules.order: $(obj)/% ; $(subdir-modorder): $(obj)/%/modules.order: $(obj)/% ;
# combine symversions for later processing # combine symversions for later processing
quiet_cmd_update_lto_symversions = SYMVER $@
ifeq ($(CONFIG_LTO_CLANG) $(CONFIG_MODVERSIONS),y y) ifeq ($(CONFIG_LTO_CLANG) $(CONFIG_MODVERSIONS),y y)
cmd_update_lto_symversions = \ cmd_update_lto_symversions = \
rm -f $@.symversions \ rm -f $@.symversions \

35
scripts/Makefile.clang Normal file
View File

@ -0,0 +1,35 @@
# Individual arch/{arch}/Makefiles should use -EL/-EB to set intended
# endianness and -m32/-m64 to set word size based on Kconfigs instead of
# relying on the target triple.
CLANG_TARGET_FLAGS_arm := arm-linux-gnueabi
CLANG_TARGET_FLAGS_arm64 := aarch64-linux-gnu
CLANG_TARGET_FLAGS_hexagon := hexagon-linux-musl
CLANG_TARGET_FLAGS_m68k := m68k-linux-gnu
CLANG_TARGET_FLAGS_mips := mipsel-linux-gnu
CLANG_TARGET_FLAGS_powerpc := powerpc64le-linux-gnu
CLANG_TARGET_FLAGS_riscv := riscv64-linux-gnu
CLANG_TARGET_FLAGS_s390 := s390x-linux-gnu
CLANG_TARGET_FLAGS_x86 := x86_64-linux-gnu
CLANG_TARGET_FLAGS := $(CLANG_TARGET_FLAGS_$(SRCARCH))
ifeq ($(CROSS_COMPILE),)
ifeq ($(CLANG_TARGET_FLAGS),)
$(error Specify CROSS_COMPILE or add '--target=' option to scripts/Makefile.clang)
else
CLANG_FLAGS += --target=$(CLANG_TARGET_FLAGS)
endif # CLANG_TARGET_FLAGS
else
CLANG_FLAGS += --target=$(notdir $(CROSS_COMPILE:%-=%))
endif # CROSS_COMPILE
ifeq ($(LLVM_IAS),0)
CLANG_FLAGS += -fno-integrated-as
GCC_TOOLCHAIN_DIR := $(dir $(shell which $(CROSS_COMPILE)elfedit))
CLANG_FLAGS += --prefix=$(GCC_TOOLCHAIN_DIR)$(notdir $(CROSS_COMPILE))
else
CLANG_FLAGS += -fintegrated-as
endif
CLANG_FLAGS += -Werror=unknown-warning-option
KBUILD_CFLAGS += $(CLANG_FLAGS)
KBUILD_AFLAGS += $(CLANG_FLAGS)
export CLANG_FLAGS

View File

@ -225,17 +225,23 @@ dtc_cpp_flags = -Wp,-MMD,$(depfile).pre.tmp -nostdinc \
$(addprefix -I,$(DTC_INCLUDE)) \ $(addprefix -I,$(DTC_INCLUDE)) \
-undef -D__DTS__ -undef -D__DTS__
ifeq ($(CONFIG_LTO_CLANG),y)
# With CONFIG_LTO_CLANG, .o files in modules might be LLVM bitcode, so we
# need to run LTO to compile them into native code (.lto.o) before further
# processing.
mod-prelink-ext := .lto
endif
# Objtool arguments are also needed for modfinal with LTO, so we define # Objtool arguments are also needed for modfinal with LTO, so we define
# then here to avoid duplication. # then here to avoid duplication.
objtool_args = \ objtool_args = \
$(if $(CONFIG_UNWINDER_ORC),orc generate,check) \ $(if $(CONFIG_UNWINDER_ORC),orc generate,check) \
$(if $(part-of-module), --module,) \ $(if $(part-of-module), --module) \
$(if $(CONFIG_FRAME_POINTER),, --no-fp) \ $(if $(CONFIG_FRAME_POINTER),, --no-fp) \
$(if $(or $(CONFIG_GCOV_KERNEL),$(CONFIG_LTO_CLANG)), \ $(if $(CONFIG_GCOV_KERNEL)$(CONFIG_LTO_CLANG), --no-unreachable)\
--no-unreachable,) \ $(if $(CONFIG_RETPOLINE), --retpoline) \
$(if $(CONFIG_RETPOLINE), --retpoline,) \ $(if $(CONFIG_X86_SMAP), --uaccess) \
$(if $(CONFIG_X86_SMAP), --uaccess,) \ $(if $(CONFIG_FTRACE_MCOUNT_USE_OBJTOOL), --mcount)
$(if $(CONFIG_FTRACE_MCOUNT_USE_OBJTOOL), --mcount,)
# Useful for describing the dependency of composite objects # Useful for describing the dependency of composite objects
# Usage: # Usage:

View File

@ -9,7 +9,7 @@ __modfinal:
include include/config/auto.conf include include/config/auto.conf
include $(srctree)/scripts/Kbuild.include include $(srctree)/scripts/Kbuild.include
# for c_flags and objtool_args # for c_flags and mod-prelink-ext
include $(srctree)/scripts/Makefile.lib include $(srctree)/scripts/Makefile.lib
# find all modules listed in modules.order # find all modules listed in modules.order
@ -30,23 +30,6 @@ quiet_cmd_cc_o_c = CC [M] $@
ARCH_POSTLINK := $(wildcard $(srctree)/arch/$(SRCARCH)/Makefile.postlink) ARCH_POSTLINK := $(wildcard $(srctree)/arch/$(SRCARCH)/Makefile.postlink)
ifdef CONFIG_LTO_CLANG
# With CONFIG_LTO_CLANG, reuse the object file we compiled for modpost to
# avoid a second slow LTO link
prelink-ext := .lto
# ELF processing was skipped earlier because we didn't have native code,
# so let's now process the prelinked binary before we link the module.
ifdef CONFIG_STACK_VALIDATION
cmd_ld_ko_o += \
$(objtree)/tools/objtool/objtool $(objtool_args) \
$(@:.ko=$(prelink-ext).o);
endif # CONFIG_STACK_VALIDATION
endif # CONFIG_LTO_CLANG
quiet_cmd_ld_ko_o = LD [M] $@ quiet_cmd_ld_ko_o = LD [M] $@
cmd_ld_ko_o += \ cmd_ld_ko_o += \
$(LD) -r $(KBUILD_LDFLAGS) \ $(LD) -r $(KBUILD_LDFLAGS) \
@ -72,7 +55,7 @@ if_changed_except = $(if $(call newer_prereqs_except,$(2))$(cmd-check), \
# Re-generate module BTFs if either module's .ko or vmlinux changed # Re-generate module BTFs if either module's .ko or vmlinux changed
$(modules): %.ko: %$(prelink-ext).o %.mod.o scripts/module.lds $(if $(KBUILD_BUILTIN),vmlinux) FORCE $(modules): %.ko: %$(mod-prelink-ext).o %.mod.o scripts/module.lds $(if $(KBUILD_BUILTIN),vmlinux) FORCE
+$(call if_changed_except,ld_ko_o,vmlinux) +$(call if_changed_except,ld_ko_o,vmlinux)
ifdef CONFIG_DEBUG_INFO_BTF_MODULES ifdef CONFIG_DEBUG_INFO_BTF_MODULES
+$(if $(newer-prereqs),$(call cmd,btf_ko)) +$(if $(newer-prereqs),$(call cmd,btf_ko))

View File

@ -41,7 +41,7 @@ __modpost:
include include/config/auto.conf include include/config/auto.conf
include $(srctree)/scripts/Kbuild.include include $(srctree)/scripts/Kbuild.include
# for ld_flags # for mod-prelink-ext
include $(srctree)/scripts/Makefile.lib include $(srctree)/scripts/Makefile.lib
MODPOST = scripts/mod/modpost \ MODPOST = scripts/mod/modpost \
@ -118,22 +118,6 @@ $(input-symdump):
@echo >&2 ' Modules may not have dependencies or modversions.' @echo >&2 ' Modules may not have dependencies or modversions.'
@echo >&2 ' You may get many unresolved symbol warnings.' @echo >&2 ' You may get many unresolved symbol warnings.'
ifdef CONFIG_LTO_CLANG
# With CONFIG_LTO_CLANG, .o files might be LLVM bitcode, so we need to run
# LTO to compile them into native code before running modpost
prelink-ext := .lto
quiet_cmd_cc_lto_link_modules = LTO [M] $@
cmd_cc_lto_link_modules = \
$(LD) $(ld_flags) -r -o $@ \
$(shell [ -s $(@:.lto.o=.o.symversions) ] && \
echo -T $(@:.lto.o=.o.symversions)) \
--whole-archive $^
%.lto.o: %.o
$(call if_changed,cc_lto_link_modules)
endif
modules := $(sort $(shell cat $(MODORDER))) modules := $(sort $(shell cat $(MODORDER)))
# KBUILD_MODPOST_WARN can be set to avoid error out in case of undefined symbols # KBUILD_MODPOST_WARN can be set to avoid error out in case of undefined symbols
@ -144,9 +128,9 @@ endif
# Read out modules.order to pass in modpost. # Read out modules.order to pass in modpost.
# Otherwise, allmodconfig would fail with "Argument list too long". # Otherwise, allmodconfig would fail with "Argument list too long".
quiet_cmd_modpost = MODPOST $@ quiet_cmd_modpost = MODPOST $@
cmd_modpost = sed 's/\.ko$$/$(prelink-ext)\.o/' $< | $(MODPOST) -T - cmd_modpost = sed 's/\.ko$$/$(mod-prelink-ext)\.o/' $< | $(MODPOST) -T -
$(output-symdump): $(MODORDER) $(input-symdump) $(modules:.ko=$(prelink-ext).o) FORCE $(output-symdump): $(MODORDER) $(input-symdump) $(modules:.ko=$(mod-prelink-ext).o) FORCE
$(call if_changed,modpost) $(call if_changed,modpost)
targets += $(output-symdump) targets += $(output-symdump)

View File

@ -42,10 +42,10 @@ $CONFIG_SHELL $srctree/scripts/gen_autoksyms.sh "$new_ksyms_file"
changed=$( changed=$(
count=0 count=0
sort "$cur_ksyms_file" "$new_ksyms_file" | uniq -u | sort "$cur_ksyms_file" "$new_ksyms_file" | uniq -u |
sed -n 's/^#define __KSYM_\(.*\) 1/\1/p' | tr "A-Z_" "a-z/" | sed -n 's/^#define __KSYM_\(.*\) 1/\1/p' |
while read sympath; do while read sympath; do
if [ -z "$sympath" ]; then continue; fi if [ -z "$sympath" ]; then continue; fi
depfile="include/ksym/${sympath}.h" depfile="include/ksym/${sympath}"
mkdir -p "$(dirname "$depfile")" mkdir -p "$(dirname "$depfile")"
touch "$depfile" touch "$depfile"
# Filesystems with coarse time precision may create timestamps # Filesystems with coarse time precision may create timestamps

View File

@ -21,14 +21,14 @@ get_canonical_version()
echo $((10000 * $1 + 100 * ${2:-0} + ${3:-0})) echo $((10000 * $1 + 100 * ${2:-0} + ${3:-0}))
} }
# Clang fails to handle -Wa,--version unless -no-integrated-as is given. # Clang fails to handle -Wa,--version unless -fno-integrated-as is given.
# We check -(f)integrated-as, expecting it is explicitly passed in for the # We check -fintegrated-as, expecting it is explicitly passed in for the
# integrated assembler case. # integrated assembler case.
check_integrated_as() check_integrated_as()
{ {
while [ $# -gt 0 ]; do while [ $# -gt 0 ]; do
if [ "$1" = -integrated-as -o "$1" = -fintegrated-as ]; then if [ "$1" = -fintegrated-as ]; then
# For the intergrated assembler, we do not check the # For the integrated assembler, we do not check the
# version here. It is the same as the clang version, and # version here. It is the same as the clang version, and
# it has been already checked by scripts/cc-version.sh. # it has been already checked by scripts/cc-version.sh.
echo LLVM 0 echo LLVM 0

0
scripts/checkdeclares.pl Normal file → Executable file
View File

View File

@ -329,7 +329,7 @@ def check_symbols_helper(pool, ignore):
if REGEX_FILE_KCONFIG.match(gitfile): if REGEX_FILE_KCONFIG.match(gitfile):
kconfig_files.append(gitfile) kconfig_files.append(gitfile)
else: else:
if ignore and not re.match(ignore, gitfile): if ignore and re.match(ignore, gitfile):
continue continue
# add source files that do not match the ignore pattern # add source files that do not match the ignore pattern
source_files.append(gitfile) source_files.append(gitfile)

View File

@ -18,7 +18,7 @@ _DEFAULT_OUTPUT = 'compile_commands.json'
_DEFAULT_LOG_LEVEL = 'WARNING' _DEFAULT_LOG_LEVEL = 'WARNING'
_FILENAME_PATTERN = r'^\..*\.cmd$' _FILENAME_PATTERN = r'^\..*\.cmd$'
_LINE_PATTERN = r'^cmd_[^ ]*\.o := (.* )([^ ]*\.c)$' _LINE_PATTERN = r'^cmd_[^ ]*\.o := (.* )([^ ]*\.c) *(;|$)'
_VALID_LOG_LEVELS = ['DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL'] _VALID_LOG_LEVELS = ['DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL']
# The tools/ directory adopts a different build system, and produces .cmd # The tools/ directory adopts a different build system, and produces .cmd
# files in a different format. Do not support it. # files in a different format. Do not support it.

0
scripts/gcc-plugins/gen-random-seed.sh Normal file → Executable file
View File

View File

@ -26,18 +26,6 @@ if [ -n "$CONFIG_MODVERSIONS" ]; then
needed_symbols="$needed_symbols module_layout" needed_symbols="$needed_symbols module_layout"
fi fi
# With CONFIG_LTO_CLANG, LLVM bitcode has not yet been compiled into a binary
# when the .mod files are generated, which means they don't yet contain
# references to certain symbols that will be present in the final binaries.
if [ -n "$CONFIG_LTO_CLANG" ]; then
# intrinsic functions
needed_symbols="$needed_symbols memcpy memmove memset"
# ftrace
needed_symbols="$needed_symbols _mcount"
# stack protector symbols
needed_symbols="$needed_symbols __stack_chk_fail __stack_chk_guard"
fi
ksym_wl= ksym_wl=
if [ -n "$CONFIG_UNUSED_KSYMS_WHITELIST" ]; then if [ -n "$CONFIG_UNUSED_KSYMS_WHITELIST" ]; then
# Use 'eval' to expand the whitelist path and check if it is relative # Use 'eval' to expand the whitelist path and check if it is relative

View File

@ -4,7 +4,13 @@
set -e set -e
# List of exported symbols # List of exported symbols
ksyms=$($NM $1 | sed -n 's/.*__ksym_marker_\(.*\)/\1/p' | tr A-Z a-z) #
# If the object has no symbol, $NM warns 'no symbols'.
# Suppress the stderr.
# TODO:
# Use -q instead of 2>/dev/null when we upgrade the minimum version of
# binutils to 2.37, llvm to 13.0.0.
ksyms=$($NM $1 2>/dev/null | sed -n 's/.*__ksym_marker_\(.*\)/\1/p')
if [ -z "$ksyms" ]; then if [ -z "$ksyms" ]; then
exit 0 exit 0
@ -15,8 +21,7 @@ echo "ksymdeps_$1 := \\"
for s in $ksyms for s in $ksyms
do do
echo $s | sed -e 's:^_*: $(wildcard include/ksym/:' \ printf ' $(wildcard include/ksym/%s) \\\n' "$s"
-e 's:__*:/:g' -e 's/$/.h) \\/'
done done
echo echo

View File

@ -28,6 +28,7 @@ usage() {
echo " -r list redundant entries when merging fragments" echo " -r list redundant entries when merging fragments"
echo " -y make builtin have precedence over modules" echo " -y make builtin have precedence over modules"
echo " -O dir to put generated output files. Consider setting \$KCONFIG_CONFIG instead." echo " -O dir to put generated output files. Consider setting \$KCONFIG_CONFIG instead."
echo " -s strict mode. Fail if the fragment redefines any value."
echo echo
echo "Used prefix: '$CONFIG_PREFIX'. You can redefine it with \$CONFIG_ environment variable." echo "Used prefix: '$CONFIG_PREFIX'. You can redefine it with \$CONFIG_ environment variable."
} }
@ -37,6 +38,7 @@ ALLTARGET=alldefconfig
WARNREDUN=false WARNREDUN=false
BUILTIN=false BUILTIN=false
OUTPUT=. OUTPUT=.
STRICT=false
CONFIG_PREFIX=${CONFIG_-CONFIG_} CONFIG_PREFIX=${CONFIG_-CONFIG_}
while true; do while true; do
@ -75,6 +77,11 @@ while true; do
shift 2 shift 2
continue continue
;; ;;
"-s")
STRICT=true
shift
continue
;;
*) *)
break break
;; ;;
@ -141,6 +148,9 @@ for ORIG_MERGE_FILE in $MERGE_LIST ; do
echo Previous value: $PREV_VAL echo Previous value: $PREV_VAL
echo New value: $NEW_VAL echo New value: $NEW_VAL
echo echo
if [ "$STRICT" = "true" ]; then
STRICT_MODE_VIOLATED=true
fi
elif [ "$WARNREDUN" = "true" ]; then elif [ "$WARNREDUN" = "true" ]; then
echo Value of $CFG is redundant by fragment $ORIG_MERGE_FILE: echo Value of $CFG is redundant by fragment $ORIG_MERGE_FILE:
fi fi
@ -153,6 +163,11 @@ for ORIG_MERGE_FILE in $MERGE_LIST ; do
cat $MERGE_FILE >> $TMP_FILE cat $MERGE_FILE >> $TMP_FILE
done done
if [ "$STRICT_MODE_VIOLATED" = "true" ]; then
echo "The fragment redefined a value and strict mode had been passed."
exit 1
fi
if [ "$RUNMAKE" = "false" ]; then if [ "$RUNMAKE" = "false" ]; then
cp -T -- "$TMP_FILE" "$KCONFIG_CONFIG" cp -T -- "$TMP_FILE" "$KCONFIG_CONFIG"
echo "#" echo "#"

View File

@ -149,67 +149,54 @@ objtool_link()
# ${2}, ${3}, ... - optional extra .o files # ${2}, ${3}, ... - optional extra .o files
vmlinux_link() vmlinux_link()
{ {
local lds="${objtree}/${KBUILD_LDS}"
local output=${1} local output=${1}
local objects local objs
local strip_debug local libs
local map_option local ld
local ldflags
local ldlibs
info LD ${output} info LD ${output}
# skip output file argument # skip output file argument
shift shift
if [ -n "${CONFIG_LTO_CLANG}" ]; then
# Use vmlinux.o instead of performing the slow LTO link again.
objs=vmlinux.o
libs=
else
objs="${KBUILD_VMLINUX_OBJS}"
libs="${KBUILD_VMLINUX_LIBS}"
fi
if [ "${SRCARCH}" = "um" ]; then
wl=-Wl,
ld="${CC}"
ldflags="${CFLAGS_vmlinux}"
ldlibs="-lutil -lrt -lpthread"
else
wl=
ld="${LD}"
ldflags="${KBUILD_LDFLAGS} ${LDFLAGS_vmlinux}"
ldlibs=
fi
ldflags="${ldflags} ${wl}--script=${objtree}/${KBUILD_LDS}"
# The kallsyms linking does not need debug symbols included. # The kallsyms linking does not need debug symbols included.
if [ "$output" != "${output#.tmp_vmlinux.kallsyms}" ] ; then if [ "$output" != "${output#.tmp_vmlinux.kallsyms}" ] ; then
strip_debug=-Wl,--strip-debug ldflags="${ldflags} ${wl}--strip-debug"
fi fi
if [ -n "${CONFIG_VMLINUX_MAP}" ]; then if [ -n "${CONFIG_VMLINUX_MAP}" ]; then
map_option="-Map=${output}.map" ldflags="${ldflags} ${wl}-Map=${output}.map"
fi fi
if [ "${SRCARCH}" != "um" ]; then ${ld} ${ldflags} -o ${output} \
if [ -n "${CONFIG_LTO_CLANG}" ]; then ${wl}--whole-archive ${objs} ${wl}--no-whole-archive \
# Use vmlinux.o instead of performing the slow LTO ${wl}--start-group ${libs} ${wl}--end-group \
# link again. $@ ${ldlibs}
objects="--whole-archive \
vmlinux.o \
--no-whole-archive \
${@}"
else
objects="--whole-archive \
${KBUILD_VMLINUX_OBJS} \
--no-whole-archive \
--start-group \
${KBUILD_VMLINUX_LIBS} \
--end-group \
${@}"
fi
${LD} ${KBUILD_LDFLAGS} ${LDFLAGS_vmlinux} \
${strip_debug#-Wl,} \
-o ${output} \
${map_option} \
-T ${lds} ${objects}
else
objects="-Wl,--whole-archive \
${KBUILD_VMLINUX_OBJS} \
-Wl,--no-whole-archive \
-Wl,--start-group \
${KBUILD_VMLINUX_LIBS} \
-Wl,--end-group \
${@}"
${CC} ${CFLAGS_vmlinux} \
${strip_debug} \
-o ${output} \
${map_option:+-Wl,${map_option}} \
-Wl,-T,${lds} \
${objects} \
-lutil -lrt -lpthread
rm -f linux
fi
} }
# generate .BTF typeinfo from DWARF debuginfo # generate .BTF typeinfo from DWARF debuginfo

View File

@ -17,6 +17,7 @@
#include <ctype.h> #include <ctype.h>
#include <string.h> #include <string.h>
#include <limits.h> #include <limits.h>
#include <stdbool.h>
#include <errno.h> #include <errno.h>
#include "modpost.h" #include "modpost.h"
#include "../../include/linux/license.h" #include "../../include/linux/license.h"
@ -89,6 +90,14 @@ modpost_log(enum loglevel loglevel, const char *fmt, ...)
error_occurred = true; error_occurred = true;
} }
static inline bool strends(const char *str, const char *postfix)
{
if (strlen(str) < strlen(postfix))
return false;
return strcmp(str + strlen(str) - strlen(postfix), postfix) == 0;
}
void *do_nofail(void *ptr, const char *expr) void *do_nofail(void *ptr, const char *expr)
{ {
if (!ptr) if (!ptr)
@ -2060,7 +2069,7 @@ static void read_symbols(const char *modname)
if (!mod->is_vmlinux) { if (!mod->is_vmlinux) {
version = get_modinfo(&info, "version"); version = get_modinfo(&info, "version");
if (version || all_versions) if (version || all_versions)
get_src_version(modname, mod->srcversion, get_src_version(mod->name, mod->srcversion,
sizeof(mod->srcversion) - 1); sizeof(mod->srcversion) - 1);
} }

View File

@ -2,7 +2,6 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <stdarg.h> #include <stdarg.h>
#include <stdbool.h>
#include <string.h> #include <string.h>
#include <sys/types.h> #include <sys/types.h>
#include <sys/stat.h> #include <sys/stat.h>
@ -178,14 +177,6 @@ static inline unsigned int get_secindex(const struct elf_info *info,
return info->symtab_shndx_start[sym - info->symtab_start]; return info->symtab_shndx_start[sym - info->symtab_start];
} }
static inline bool strends(const char *str, const char *postfix)
{
if (strlen(str) < strlen(postfix))
return false;
return strcmp(str + strlen(str) - strlen(postfix), postfix) == 0;
}
/* file2alias.c */ /* file2alias.c */
extern unsigned int cross_build; extern unsigned int cross_build;
void handle_moddevtable(struct module *mod, struct elf_info *info, void handle_moddevtable(struct module *mod, struct elf_info *info,

View File

@ -391,14 +391,9 @@ void get_src_version(const char *modname, char sum[], unsigned sumlen)
struct md4_ctx md; struct md4_ctx md;
char *fname; char *fname;
char filelist[PATH_MAX + 1]; char filelist[PATH_MAX + 1];
int postfix_len = 1;
if (strends(modname, ".lto.o"))
postfix_len = 5;
/* objects for a module are listed in the first line of *.mod file. */ /* objects for a module are listed in the first line of *.mod file. */
snprintf(filelist, sizeof(filelist), "%.*smod", snprintf(filelist, sizeof(filelist), "%s.mod", modname);
(int)strlen(modname) - postfix_len, modname);
buf = read_text_file(filelist); buf = read_text_file(filelist);

0
scripts/syscallnr.sh Normal file → Executable file
View File

0
scripts/xen-hypercalls.sh Normal file → Executable file
View File

View File

@ -4,16 +4,6 @@
# #
obj-$(CONFIG_KEYS) += keys/ obj-$(CONFIG_KEYS) += keys/
subdir-$(CONFIG_SECURITY_SELINUX) += selinux
subdir-$(CONFIG_SECURITY_SMACK) += smack
subdir-$(CONFIG_SECURITY_TOMOYO) += tomoyo
subdir-$(CONFIG_SECURITY_APPARMOR) += apparmor
subdir-$(CONFIG_SECURITY_YAMA) += yama
subdir-$(CONFIG_SECURITY_LOADPIN) += loadpin
subdir-$(CONFIG_SECURITY_SAFESETID) += safesetid
subdir-$(CONFIG_SECURITY_LOCKDOWN_LSM) += lockdown
subdir-$(CONFIG_BPF_LSM) += bpf
subdir-$(CONFIG_SECURITY_LANDLOCK) += landlock
# always enable default capabilities # always enable default capabilities
obj-y += commoncap.o obj-y += commoncap.o
@ -36,5 +26,4 @@ obj-$(CONFIG_BPF_LSM) += bpf/
obj-$(CONFIG_SECURITY_LANDLOCK) += landlock/ obj-$(CONFIG_SECURITY_LANDLOCK) += landlock/
# Object integrity file lists # Object integrity file lists
subdir-$(CONFIG_INTEGRITY) += integrity
obj-$(CONFIG_INTEGRITY) += integrity/ obj-$(CONFIG_INTEGRITY) += integrity/

View File

@ -6,7 +6,6 @@
*/ */
#ifndef __SND_AOA_CODEC_ONYX_H #ifndef __SND_AOA_CODEC_ONYX_H
#define __SND_AOA_CODEC_ONYX_H #define __SND_AOA_CODEC_ONYX_H
#include <stddef.h>
#include <linux/i2c.h> #include <linux/i2c.h>
#include <asm/pmac_low_i2c.h> #include <asm/pmac_low_i2c.h>
#include <asm/prom.h> #include <asm/prom.h>

View File

@ -58,7 +58,6 @@
* and up to the hardware designer to not wire * and up to the hardware designer to not wire
* them up in some weird unusable way. * them up in some weird unusable way.
*/ */
#include <stddef.h>
#include <linux/i2c.h> #include <linux/i2c.h>
#include <asm/pmac_low_i2c.h> #include <asm/pmac_low_i2c.h>
#include <asm/prom.h> #include <asm/prom.h>

Some files were not shown because too many files have changed in this diff Show More