mirror of https://gitee.com/openkylin/linux.git
Kbuild fixes for v5.12 (2nd)
- avoid 'make image_name' invoking syncconfig - fix a couple of bugs in scripts/dummy-tools. - fix LLD_VENDOR and locale issues in scripts/ld-version.sh - rebuild GCC plugins when the compiler is upgraded - allow LTO to be enabled with KASAN_HW_TAGS - allow LTO to be enabled without LLVM=1 -----BEGIN PGP SIGNATURE----- iQJJBAABCgAzFiEEbmPs18K1szRHjPqEPYsBB53g2wYFAmBMpsMVHG1hc2FoaXJv eUBrZXJuZWwub3JnAAoJED2LAQed4NsGHWUP/0hGz63iICos7wtJwfpkWGzK3JiF +0KdCd+/esD0eA/zmsstSmBsJRWeDMEpTysB0Gki0G+zZyTk43PYHulTo6J0SG5u BjqlmntxaJAYzPNSSuwuIXGoWbH70sqwhww5BQEqxpRd2wzFmc0HlOiQYSE5P9lP hwrKOebRe3XinLhv05RMONZ7sthtGbA/ay5Zhhw+avZ0AcVYB02WXatp+yBF8QtR DkjvkDEmIK/3dTf6jRJq4vIhQpiQNmV/A5BOTTwZOOfxF6JTtwEIGMZBaCM5qYGg KHF1+XGMGijjKncUpeSPxqeAvRDczBUpV5fLERcmRjiPaYQeTJYD6vvSqRKyvDoe b7bAx51UtLxYLwKvGOqW3kJLi9ImhoLz0S5K2BWu/flfrb1olvSwfsxpuPLSKS1K b5xDeW6MDq0PAPW21XNohBP6sFM5ZQNL1hZ2P+fgIjtbKd0PfQAsN/+nnTTo7K3z 3yUR3eLdKO+kcYxZ6YxPtSqMPwxVp31aVwcrt8izyxfLofcVWtIdQOkQTrfm93DE FG3j8yv7TgZduD5E+skRTWs+0bVanH8Tsyr9NIScGa9Fd6bPyaBFtwWC9mluMpOt k6o9s6faqYq3zOgxEOxtU3pVVGUULtMPAve+4C+iwAEDl9hFfqq0rGZIPJukSNvr UZGxoyxmlX36fMUv =wmt8 -----END PGP SIGNATURE----- Merge tag 'kbuild-fixes-v5.12-2' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild Pull Kbuild fixes from Masahiro Yamada: - avoid 'make image_name' invoking syncconfig - fix a couple of bugs in scripts/dummy-tools - fix LLD_VENDOR and locale issues in scripts/ld-version.sh - rebuild GCC plugins when the compiler is upgraded - allow LTO to be enabled with KASAN_HW_TAGS - allow LTO to be enabled without LLVM=1 * tag 'kbuild-fixes-v5.12-2' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild: kbuild: fix ld-version.sh to not be affected by locale kbuild: remove meaningless parameter to $(call if_changed_rule,dtc) kbuild: remove LLVM=1 test from HAS_LTO_CLANG kbuild: remove unneeded -O option to dtc kbuild: dummy-tools: adjust to scripts/cc-version.sh kbuild: Allow LTO to be selected with KASAN_HW_TAGS kbuild: dummy-tools: support MPROFILE_KERNEL checks for ppc kbuild: rebuild GCC plugins when the compiler is upgraded kbuild: Fix ld-version.sh script if LLD was built with LLD_VENDOR kbuild: dummy-tools: fix inverted tests for gcc kbuild: add image_name to no-sync-config-targets
This commit is contained in:
commit
e83bad7f77
4
Makefile
4
Makefile
|
@ -264,7 +264,8 @@ no-dot-config-targets := $(clean-targets) \
|
|||
$(version_h) headers headers_% archheaders archscripts \
|
||||
%asm-generic kernelversion %src-pkg dt_binding_check \
|
||||
outputmakefile
|
||||
no-sync-config-targets := $(no-dot-config-targets) %install kernelrelease
|
||||
no-sync-config-targets := $(no-dot-config-targets) %install kernelrelease \
|
||||
image_name
|
||||
single-targets := %.a %.i %.ko %.lds %.ll %.lst %.mod %.o %.s %.symtypes %/
|
||||
|
||||
config-build :=
|
||||
|
@ -478,6 +479,7 @@ USERINCLUDE := \
|
|||
-I$(objtree)/arch/$(SRCARCH)/include/generated/uapi \
|
||||
-I$(srctree)/include/uapi \
|
||||
-I$(objtree)/include/generated/uapi \
|
||||
-include $(srctree)/include/linux/compiler-version.h \
|
||||
-include $(srctree)/include/linux/kconfig.h
|
||||
|
||||
# Use LINUXINCLUDE when you must reference the include/ directory.
|
||||
|
|
|
@ -632,13 +632,12 @@ config HAS_LTO_CLANG
|
|||
def_bool y
|
||||
# Clang >= 11: https://github.com/ClangBuiltLinux/linux/issues/510
|
||||
depends on CC_IS_CLANG && CLANG_VERSION >= 110000 && LD_IS_LLD
|
||||
depends on $(success,test $(LLVM) -eq 1)
|
||||
depends on $(success,test $(LLVM_IAS) -eq 1)
|
||||
depends on $(success,$(NM) --help | head -n 1 | grep -qi llvm)
|
||||
depends on $(success,$(AR) --help | head -n 1 | grep -qi llvm)
|
||||
depends on ARCH_SUPPORTS_LTO_CLANG
|
||||
depends on !FTRACE_MCOUNT_USE_RECORDMCOUNT
|
||||
depends on !KASAN
|
||||
depends on !KASAN || KASAN_HW_TAGS
|
||||
depends on !GCOV_KERNEL
|
||||
help
|
||||
The compiler and Kconfig options support building with Clang's
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
#ifdef __LINUX_COMPILER_VERSION_H
|
||||
#error "Please do not include <linux/compiler-version.h>. This is done by the build system."
|
||||
#endif
|
||||
#define __LINUX_COMPILER_VERSION_H
|
||||
|
||||
/*
|
||||
* This header exists to force full rebuild when the compiler is upgraded.
|
||||
*
|
||||
* When fixdep scans this, it will find this string "CONFIG_CC_VERSION_TEXT"
|
||||
* and add dependency on include/config/cc/version/text.h, which is touched
|
||||
* by Kconfig when the version string from the compiler changes.
|
||||
*/
|
|
@ -2,8 +2,6 @@
|
|||
#ifndef __LINUX_KCONFIG_H
|
||||
#define __LINUX_KCONFIG_H
|
||||
|
||||
/* CONFIG_CC_VERSION_TEXT (Do not delete this comment. See help in Kconfig) */
|
||||
|
||||
#include <generated/autoconf.h>
|
||||
|
||||
#ifdef CONFIG_CPU_BIG_ENDIAN
|
||||
|
|
|
@ -20,10 +20,10 @@ config CC_VERSION_TEXT
|
|||
When the compiler is updated, Kconfig will be invoked.
|
||||
|
||||
- Ensure full rebuild when the compiler is updated
|
||||
include/linux/kconfig.h contains this option in the comment line so
|
||||
fixdep adds include/config/cc/version/text.h into the auto-generated
|
||||
dependency. When the compiler is updated, syncconfig will touch it
|
||||
and then every file will be rebuilt.
|
||||
include/linux/compiler-version.h contains this option in the comment
|
||||
line so fixdep adds include/config/cc/version/text.h into the
|
||||
auto-generated dependency. When the compiler is updated, syncconfig
|
||||
will touch it and then every file will be rebuilt.
|
||||
|
||||
config CC_IS_GCC
|
||||
def_bool $(success,test "$(cc-name)" = GCC)
|
||||
|
|
|
@ -327,7 +327,7 @@ $(obj)/%.dtb.S: $(obj)/%.dtb FORCE
|
|||
|
||||
quiet_cmd_dtc = DTC $@
|
||||
cmd_dtc = $(HOSTCC) -E $(dtc_cpp_flags) -x assembler-with-cpp -o $(dtc-tmp) $< ; \
|
||||
$(DTC) -O $(patsubst .%,%,$(suffix $@)) -o $@ -b 0 \
|
||||
$(DTC) -o $@ -b 0 \
|
||||
$(addprefix -i,$(dir $<) $(DTC_INCLUDE)) $(DTC_FLAGS) \
|
||||
-d $(depfile).dtc.tmp $(dtc-tmp) ; \
|
||||
cat $(depfile).pre.tmp $(depfile).dtc.tmp > $(depfile)
|
||||
|
@ -352,7 +352,7 @@ define rule_dtc
|
|||
endef
|
||||
|
||||
$(obj)/%.dt.yaml: $(src)/%.dts $(DTC) $(DT_TMP_SCHEMA) FORCE
|
||||
$(call if_changed_rule,dtc,yaml)
|
||||
$(call if_changed_rule,dtc)
|
||||
|
||||
dtc-tmp = $(subst $(comma),_,$(dot-target).dts.tmp)
|
||||
|
||||
|
|
|
@ -57,9 +57,9 @@ if arg_contain --version "$@"; then
|
|||
fi
|
||||
|
||||
if arg_contain -E "$@"; then
|
||||
# For scripts/gcc-version.sh; This emulates GCC 20.0.0
|
||||
# For scripts/cc-version.sh; This emulates GCC 20.0.0
|
||||
if arg_contain - "$@"; then
|
||||
sed 's/^__GNUC__$/20/; s/^__GNUC_MINOR__$/0/; s/^__GNUC_PATCHLEVEL__$/0/'
|
||||
sed -n '/^GCC/{s/__GNUC__/20/; s/__GNUC_MINOR__/0/; s/__GNUC_PATCHLEVEL__/0/; p;}'
|
||||
exit 0
|
||||
else
|
||||
echo "no input files" >&2
|
||||
|
@ -73,6 +73,15 @@ if arg_contain -S "$@"; then
|
|||
echo "%gs"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# For arch/powerpc/tools/gcc-check-mprofile-kernel.sh
|
||||
if arg_contain -m64 "$@" && arg_contain -mlittle-endian "$@" &&
|
||||
arg_contain -mprofile-kernel "$@"; then
|
||||
if ! test -t 0 && ! grep -q notrace; then
|
||||
echo "_mcount"
|
||||
fi
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
|
||||
# To set GCC_PLUGINS
|
||||
|
@ -85,3 +94,8 @@ if arg_contain -print-file-name=plugin "$@"; then
|
|||
echo $plugin_dir
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# inverted return value
|
||||
if arg_contain -D__SIZEOF_INT128__=0 "$@"; then
|
||||
exit 1
|
||||
fi
|
||||
|
|
|
@ -22,6 +22,7 @@ always-y += $(GCC_PLUGIN)
|
|||
GCC_PLUGINS_DIR = $(shell $(CC) -print-file-name=plugin)
|
||||
|
||||
plugin_cxxflags = -Wp,-MMD,$(depfile) $(KBUILD_HOSTCXXFLAGS) -fPIC \
|
||||
-include $(srctree)/include/linux/compiler-version.h \
|
||||
-I $(GCC_PLUGINS_DIR)/include -I $(obj) -std=gnu++11 \
|
||||
-fno-rtti -fno-exceptions -fasynchronous-unwind-tables \
|
||||
-ggdb -Wno-narrowing -Wno-unused-variable \
|
||||
|
|
|
@ -29,7 +29,7 @@ orig_args="$@"
|
|||
# Get the first line of the --version output.
|
||||
IFS='
|
||||
'
|
||||
set -- $("$@" --version)
|
||||
set -- $(LC_ALL=C "$@" --version)
|
||||
|
||||
# Split the line on spaces.
|
||||
IFS=' '
|
||||
|
@ -44,14 +44,20 @@ if [ "$1" = GNU -a "$2" = ld ]; then
|
|||
elif [ "$1" = GNU -a "$2" = gold ]; then
|
||||
echo "gold linker is not supported as it is not capable of linking the kernel proper." >&2
|
||||
exit 1
|
||||
elif [ "$1" = LLD ]; then
|
||||
else
|
||||
while [ $# -gt 1 -a "$1" != "LLD" ]; do
|
||||
shift
|
||||
done
|
||||
|
||||
if [ "$1" = LLD ]; then
|
||||
version=$2
|
||||
min_version=$lld_min_version
|
||||
name=LLD
|
||||
disp_name=LLD
|
||||
else
|
||||
else
|
||||
echo "$orig_args: unknown linker" >&2
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# Some distributions append a package release number, as in 2.34-4.fc32
|
||||
|
|
Loading…
Reference in New Issue