1 # SPDX-License-Identifier: GPL-2.0 1 # SPDX-License-Identifier: GPL-2.0 >> 2 ifdef CONFIG_UBSAN >> 3 CFLAGS_UBSAN += $(call cc-option, -fsanitize=shift) >> 4 CFLAGS_UBSAN += $(call cc-option, -fsanitize=integer-divide-by-zero) >> 5 CFLAGS_UBSAN += $(call cc-option, -fsanitize=unreachable) >> 6 CFLAGS_UBSAN += $(call cc-option, -fsanitize=vla-bound) >> 7 CFLAGS_UBSAN += $(call cc-option, -fsanitize=signed-integer-overflow) >> 8 CFLAGS_UBSAN += $(call cc-option, -fsanitize=bounds) >> 9 CFLAGS_UBSAN += $(call cc-option, -fsanitize=object-size) >> 10 CFLAGS_UBSAN += $(call cc-option, -fsanitize=returns-nonnull-attribute) >> 11 CFLAGS_UBSAN += $(call cc-option, -fsanitize=bool) >> 12 CFLAGS_UBSAN += $(call cc-option, -fsanitize=enum) 2 13 3 # Enable available and selected UBSAN features !! 14 ifdef CONFIG_UBSAN_ALIGNMENT 4 ubsan-cflags-$(CONFIG_UBSAN_ALIGNMENT) !! 15 CFLAGS_UBSAN += $(call cc-option, -fsanitize=alignment) 5 ubsan-cflags-$(CONFIG_UBSAN_BOUNDS_STRICT) !! 16 endif 6 ubsan-cflags-$(CONFIG_UBSAN_ARRAY_BOUNDS) << 7 ubsan-cflags-$(CONFIG_UBSAN_LOCAL_BOUNDS) << 8 ubsan-cflags-$(CONFIG_UBSAN_SHIFT) << 9 ubsan-cflags-$(CONFIG_UBSAN_DIV_ZERO) << 10 ubsan-cflags-$(CONFIG_UBSAN_UNREACHABLE) << 11 ubsan-cflags-$(CONFIG_UBSAN_BOOL) << 12 ubsan-cflags-$(CONFIG_UBSAN_ENUM) << 13 ubsan-cflags-$(CONFIG_UBSAN_TRAP) << 14 17 15 export CFLAGS_UBSAN := $(ubsan-cflags-y) !! 18 ifdef CONFIG_UBSAN_NULL >> 19 CFLAGS_UBSAN += $(call cc-option, -fsanitize=null) >> 20 endif 16 21 17 ubsan-signed-wrap-cflags-$(CONFIG_UBSAN_SIGNED !! 22 # -fsanitize=* options makes GCC less smart than usual and 18 export CFLAGS_UBSAN_SIGNED_WRAP := $(ubsan-sig !! 23 # increase number of 'maybe-uninitialized false-positives >> 24 CFLAGS_UBSAN += $(call cc-option, -Wno-maybe-uninitialized) >> 25 endif
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.