-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
ubsan: move cc-option tests into Kconfig
Instead of doing if/endif blocks with cc-option calls in the UBSAN Makefile, move all the tests into Kconfig and use the Makefile to collect the results. Link: https://lkml.kernel.org/r/20201203004437.389959-3-keescook@chromium.org Link: https://lore.kernel.org/lkml/CAHk-=wjPasyJrDuwDnpHJS2TuQfExwe=px-SzLeN8GFMAQJPmQ@mail.gmail.com/ Signed-off-by: Kees Cook <keescook@chromium.org> Suggested-by: Linus Torvalds <torvalds@linux-foundation.org> Reviewed-by: Nathan Chancellor <natechancellor@gmail.com> Tested-by: Nathan Chancellor <natechancellor@gmail.com> Cc: Andrey Ryabinin <aryabinin@virtuozzo.com> Cc: Ard Biesheuvel <ardb@kernel.org> Cc: Arnd Bergmann <arnd@arndb.de> Cc: Dmitry Vyukov <dvyukov@google.com> Cc: George Popescu <georgepope@android.com> Cc: Herbert Xu <herbert@gondor.apana.org.au> Cc: Marco Elver <elver@google.com> Cc: Masahiro Yamada <masahiroy@kernel.org> Cc: Michal Marek <michal.lkml@markovi.net> Cc: Nick Desaulniers <ndesaulniers@google.com> Cc: Peter Oberparleiter <oberpar@linux.ibm.com> Cc: Randy Dunlap <rdunlap@infradead.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
- Loading branch information
Kees Cook
authored and
Linus Torvalds
committed
Dec 16, 2020
1 parent
d8a7f62
commit cdf8a76
Showing
2 changed files
with
73 additions
and
33 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,33 +1,18 @@ | ||
# SPDX-License-Identifier: GPL-2.0 | ||
|
||
export CFLAGS_UBSAN := | ||
# Enable available and selected UBSAN features. | ||
ubsan-cflags-$(CONFIG_UBSAN_ALIGNMENT) += -fsanitize=alignment | ||
ubsan-cflags-$(CONFIG_UBSAN_ONLY_BOUNDS) += -fsanitize=bounds | ||
ubsan-cflags-$(CONFIG_UBSAN_ARRAY_BOUNDS) += -fsanitize=array-bounds | ||
ubsan-cflags-$(CONFIG_UBSAN_LOCAL_BOUNDS) += -fsanitize=local-bounds | ||
ubsan-cflags-$(CONFIG_UBSAN_SHIFT) += -fsanitize=shift | ||
ubsan-cflags-$(CONFIG_UBSAN_DIV_ZERO) += -fsanitize=integer-divide-by-zero | ||
ubsan-cflags-$(CONFIG_UBSAN_UNREACHABLE) += -fsanitize=unreachable | ||
ubsan-cflags-$(CONFIG_UBSAN_SIGNED_OVERFLOW) += -fsanitize=signed-integer-overflow | ||
ubsan-cflags-$(CONFIG_UBSAN_UNSIGNED_OVERFLOW) += -fsanitize=unsigned-integer-overflow | ||
ubsan-cflags-$(CONFIG_UBSAN_OBJECT_SIZE) += -fsanitize=object-size | ||
ubsan-cflags-$(CONFIG_UBSAN_BOOL) += -fsanitize=bool | ||
ubsan-cflags-$(CONFIG_UBSAN_ENUM) += -fsanitize=enum | ||
ubsan-cflags-$(CONFIG_UBSAN_TRAP) += -fsanitize-undefined-trap-on-error | ||
|
||
ifdef CONFIG_UBSAN_ALIGNMENT | ||
CFLAGS_UBSAN += $(call cc-option, -fsanitize=alignment) | ||
endif | ||
|
||
ifdef CONFIG_UBSAN_BOUNDS | ||
ifdef CONFIG_CC_IS_CLANG | ||
CFLAGS_UBSAN += -fsanitize=array-bounds | ||
else | ||
CFLAGS_UBSAN += $(call cc-option, -fsanitize=bounds) | ||
endif | ||
endif | ||
|
||
ifdef CONFIG_UBSAN_LOCAL_BOUNDS | ||
CFLAGS_UBSAN += -fsanitize=local-bounds | ||
endif | ||
|
||
ifdef CONFIG_UBSAN_MISC | ||
CFLAGS_UBSAN += $(call cc-option, -fsanitize=shift) | ||
CFLAGS_UBSAN += $(call cc-option, -fsanitize=integer-divide-by-zero) | ||
CFLAGS_UBSAN += $(call cc-option, -fsanitize=unreachable) | ||
CFLAGS_UBSAN += $(call cc-option, -fsanitize=signed-integer-overflow) | ||
CFLAGS_UBSAN += $(call cc-option, -fsanitize=object-size) | ||
CFLAGS_UBSAN += $(call cc-option, -fsanitize=bool) | ||
CFLAGS_UBSAN += $(call cc-option, -fsanitize=enum) | ||
endif | ||
|
||
ifdef CONFIG_UBSAN_TRAP | ||
CFLAGS_UBSAN += $(call cc-option, -fsanitize-undefined-trap-on-error) | ||
endif | ||
export CFLAGS_UBSAN := $(ubsan-cflags-y) |