| # SPDX-License-Identifier: GPL-2.0 |
| 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 |
| |
| # -fsanitize=* options makes GCC less smart than usual and |
| # increase number of 'maybe-uninitialized false-positives |
| CFLAGS_UBSAN += $(call cc-option, -Wno-maybe-uninitialized) |