| # SPDX-License-Identifier: GPL-2.0 |
| ifdef CONFIG_UBSAN |
| KBUILD_CFLAGS := $(filter-out -Werror=strict-prototypes,$(KBUILD_CFLAGS)) |
| 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=vla-bound) |
| CFLAGS_UBSAN += $(call cc-option, -fsanitize=signed-integer-overflow) |
| CFLAGS_UBSAN += $(call cc-option, -fsanitize=bounds) |
| CFLAGS_UBSAN += $(call cc-option, -fsanitize=object-size) |
| CFLAGS_UBSAN += $(call cc-option, -fsanitize=bool) |
| CFLAGS_UBSAN += $(call cc-option, -fsanitize=enum) |
| |
| ifdef CONFIG_UBSAN_ALIGNMENT |
| CFLAGS_UBSAN += $(call cc-option, -fsanitize=alignment) |
| endif |
| |
| ifdef CONFIG_UBSAN_NULL |
| CFLAGS_UBSAN += $(call cc-option, -fsanitize=null) |
| 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) |
| CFLAGS_UBSAN += $(call cc-option, -D__ANDROID__ -Wno-error) |
| endif |