mirror of
https://github.com/rd-stuffs/msm-4.14.git
synced 2025-02-20 11:45:48 +08:00
commit 1cf5f151d25fcca94689efd91afa0253621fb33a upstream.
-Wunaligned-access is a new warning in clang that is default enabled for
arm and arm64 under certain circumstances within the clang frontend (see
LLVM commit below). On v5.17-rc2, an ARCH=arm allmodconfig build shows
1284 total/70 unique instances of this warning (most of the instances
are in header files), which is quite noisy.
To keep a normal build green through CONFIG_WERROR, only show this
warning with W=1, which will allow automated build systems to catch new
instances of the warning so that the total number can be driven down to
zero eventually since catching unaligned accesses at compile time would
be generally useful.
Cc: stable@vger.kernel.org
Link: 35737df4dc
Link: https://github.com/ClangBuiltLinux/linux/issues/1569
Link: https://github.com/ClangBuiltLinux/linux/issues/1576
Signed-off-by: Nathan Chancellor <nathan@kernel.org>
Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
[nathan: Fix conflict due to lack of afe956c577b2d]
Signed-off-by: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
79 lines
2.8 KiB
Makefile
79 lines
2.8 KiB
Makefile
# SPDX-License-Identifier: GPL-2.0
|
|
# ==========================================================================
|
|
#
|
|
# make W=... settings
|
|
#
|
|
# W=1 - warnings that may be relevant and does not occur too often
|
|
# W=2 - warnings that occur quite often but may still be relevant
|
|
# W=3 - the more obscure warnings, can most likely be ignored
|
|
#
|
|
# $(call cc-option, -W...) handles gcc -W.. options which
|
|
# are not supported by all versions of the compiler
|
|
# ==========================================================================
|
|
|
|
KBUILD_CFLAGS += $(call cc-disable-warning, packed-not-aligned)
|
|
|
|
ifeq ("$(origin W)", "command line")
|
|
export KBUILD_ENABLE_EXTRA_GCC_CHECKS := $(W)
|
|
endif
|
|
|
|
ifdef KBUILD_ENABLE_EXTRA_GCC_CHECKS
|
|
warning- := $(empty)
|
|
|
|
warning-1 := -Wextra -Wunused -Wno-unused-parameter
|
|
warning-1 += -Wmissing-declarations
|
|
warning-1 += -Wmissing-format-attribute
|
|
warning-1 += $(call cc-option, -Wmissing-prototypes)
|
|
warning-1 += -Wold-style-definition
|
|
warning-1 += $(call cc-option, -Wmissing-include-dirs)
|
|
warning-1 += $(call cc-option, -Wunused-but-set-variable)
|
|
warning-1 += $(call cc-option, -Wunused-const-variable)
|
|
warning-1 += $(call cc-option, -Wpacked-not-aligned)
|
|
warning-1 += $(call cc-disable-warning, missing-field-initializers)
|
|
warning-1 += $(call cc-disable-warning, sign-compare)
|
|
|
|
warning-2 := -Waggregate-return
|
|
warning-2 += -Wcast-align
|
|
warning-2 += -Wdisabled-optimization
|
|
warning-2 += -Wnested-externs
|
|
warning-2 += -Wshadow
|
|
warning-2 += $(call cc-option, -Wlogical-op)
|
|
warning-2 += $(call cc-option, -Wmissing-field-initializers)
|
|
warning-2 += $(call cc-option, -Wsign-compare)
|
|
warning-2 += $(call cc-option, -Wmaybe-uninitialized)
|
|
warning-2 += $(call cc-option, -Wunused-macros)
|
|
|
|
warning-3 := -Wbad-function-cast
|
|
warning-3 += -Wcast-qual
|
|
warning-3 += -Wconversion
|
|
warning-3 += -Wpacked
|
|
warning-3 += -Wpadded
|
|
warning-3 += -Wpointer-arith
|
|
warning-3 += -Wredundant-decls
|
|
warning-3 += -Wswitch-default
|
|
warning-3 += $(call cc-option, -Wpacked-bitfield-compat)
|
|
warning-3 += $(call cc-option, -Wvla)
|
|
|
|
warning := $(warning-$(findstring 1, $(KBUILD_ENABLE_EXTRA_GCC_CHECKS)))
|
|
warning += $(warning-$(findstring 2, $(KBUILD_ENABLE_EXTRA_GCC_CHECKS)))
|
|
warning += $(warning-$(findstring 3, $(KBUILD_ENABLE_EXTRA_GCC_CHECKS)))
|
|
|
|
ifeq ("$(strip $(warning))","")
|
|
$(error W=$(KBUILD_ENABLE_EXTRA_GCC_CHECKS) is unknown)
|
|
endif
|
|
|
|
KBUILD_CFLAGS += $(warning)
|
|
else
|
|
|
|
ifeq ($(cc-name),clang)
|
|
KBUILD_CFLAGS += $(call cc-disable-warning, initializer-overrides)
|
|
KBUILD_CFLAGS += $(call cc-disable-warning, unused-value)
|
|
KBUILD_CFLAGS += $(call cc-disable-warning, format)
|
|
KBUILD_CFLAGS += $(call cc-disable-warning, sign-compare)
|
|
KBUILD_CFLAGS += $(call cc-disable-warning, format-zero-length)
|
|
KBUILD_CFLAGS += $(call cc-disable-warning, uninitialized)
|
|
KBUILD_CFLAGS += $(call cc-disable-warning, pointer-to-enum-cast)
|
|
KBUILD_CFLAGS += $(call cc-disable-warning, unaligned-access)
|
|
endif
|
|
endif
|