| 12345678910111213141516171819202122232425262728 |
- # 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)
|