Makefile.ubsan 1.3 KB

12345678910111213141516171819202122232425262728
  1. # SPDX-License-Identifier: GPL-2.0
  2. # Shared with KVM/arm64.
  3. export CFLAGS_UBSAN_TRAP := $(call cc-option,-fsanitize-trap=undefined,-fsanitize-undefined-trap-on-error)
  4. # Enable available and selected UBSAN features.
  5. ubsan-cflags-$(CONFIG_UBSAN_ALIGNMENT) += -fsanitize=alignment
  6. ubsan-cflags-$(CONFIG_UBSAN_BOUNDS_STRICT) += -fsanitize=bounds-strict
  7. ubsan-cflags-$(CONFIG_UBSAN_ARRAY_BOUNDS) += -fsanitize=array-bounds
  8. ubsan-cflags-$(CONFIG_UBSAN_LOCAL_BOUNDS) += -fsanitize=local-bounds
  9. ubsan-cflags-$(CONFIG_UBSAN_SHIFT) += -fsanitize=shift
  10. ubsan-cflags-$(CONFIG_UBSAN_DIV_ZERO) += -fsanitize=integer-divide-by-zero
  11. ubsan-cflags-$(CONFIG_UBSAN_UNREACHABLE) += -fsanitize=unreachable
  12. ubsan-cflags-$(CONFIG_UBSAN_BOOL) += -fsanitize=bool
  13. ubsan-cflags-$(CONFIG_UBSAN_ENUM) += -fsanitize=enum
  14. ubsan-cflags-$(CONFIG_UBSAN_TRAP) += $(CFLAGS_UBSAN_TRAP)
  15. export CFLAGS_UBSAN := $(ubsan-cflags-y)
  16. ubsan-integer-wrap-cflags-$(CONFIG_UBSAN_INTEGER_WRAP) += \
  17. -DINTEGER_WRAP \
  18. -fsanitize-undefined-ignore-overflow-pattern=all \
  19. -fsanitize=signed-integer-overflow \
  20. -fsanitize=unsigned-integer-overflow \
  21. -fsanitize=implicit-signed-integer-truncation \
  22. -fsanitize=implicit-unsigned-integer-truncation \
  23. -fsanitize-ignorelist=$(srctree)/scripts/integer-wrap-ignore.scl
  24. export CFLAGS_UBSAN_INTEGER_WRAP := $(ubsan-integer-wrap-cflags-y)