| # SPDX-License-Identifier: GPL-2.0 | |
| # Shared with KVM/arm64. | |
| export CFLAGS_UBSAN_TRAP := $(call cc-option,-fsanitize-trap=undefined,-fsanitize-undefined-trap-on-error) | |
| # Enable available and selected UBSAN features. | |
| ubsan-cflags-$(CONFIG_UBSAN_ALIGNMENT) += -fsanitize=alignment | |
| ubsan-cflags-$(CONFIG_UBSAN_BOUNDS_STRICT) += -fsanitize=bounds-strict | |
| 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_BOOL) += -fsanitize=bool | |
| ubsan-cflags-$(CONFIG_UBSAN_ENUM) += -fsanitize=enum | |
| ubsan-cflags-$(CONFIG_UBSAN_TRAP) += $(CFLAGS_UBSAN_TRAP) | |
| export CFLAGS_UBSAN := $(ubsan-cflags-y) | |
| ubsan-integer-wrap-cflags-$(CONFIG_UBSAN_INTEGER_WRAP) += \ | |
| -DINTEGER_WRAP \ | |
| -fsanitize-undefined-ignore-overflow-pattern=all \ | |
| -fsanitize=signed-integer-overflow \ | |
| -fsanitize=unsigned-integer-overflow \ | |
| -fsanitize=implicit-signed-integer-truncation \ | |
| -fsanitize=implicit-unsigned-integer-truncation \ | |
| -fsanitize-ignorelist=$(srctree)/scripts/integer-wrap-ignore.scl | |
| export CFLAGS_UBSAN_INTEGER_WRAP := $(ubsan-integer-wrap-cflags-y) |