.. | .. |
---|
1 | 1 | # SPDX-License-Identifier: GPL-2.0 |
---|
2 | | -ifdef CONFIG_UBSAN |
---|
3 | | - CFLAGS_UBSAN += $(call cc-option, -fsanitize=shift) |
---|
4 | | - CFLAGS_UBSAN += $(call cc-option, -fsanitize=integer-divide-by-zero) |
---|
5 | | - CFLAGS_UBSAN += $(call cc-option, -fsanitize=unreachable) |
---|
6 | | - CFLAGS_UBSAN += $(call cc-option, -fsanitize=vla-bound) |
---|
7 | | - CFLAGS_UBSAN += $(call cc-option, -fsanitize=signed-integer-overflow) |
---|
8 | | - CFLAGS_UBSAN += $(call cc-option, -fsanitize=bounds) |
---|
9 | | - CFLAGS_UBSAN += $(call cc-option, -fsanitize=object-size) |
---|
10 | | - CFLAGS_UBSAN += $(call cc-option, -fsanitize=bool) |
---|
11 | | - CFLAGS_UBSAN += $(call cc-option, -fsanitize=enum) |
---|
12 | 2 | |
---|
13 | | -ifdef CONFIG_UBSAN_ALIGNMENT |
---|
14 | | - CFLAGS_UBSAN += $(call cc-option, -fsanitize=alignment) |
---|
15 | | -endif |
---|
| 3 | +# Enable available and selected UBSAN features. |
---|
| 4 | +ubsan-cflags-$(CONFIG_UBSAN_ALIGNMENT) += -fsanitize=alignment |
---|
| 5 | +ubsan-cflags-$(CONFIG_UBSAN_ONLY_BOUNDS) += -fsanitize=bounds |
---|
| 6 | +ubsan-cflags-$(CONFIG_UBSAN_ARRAY_BOUNDS) += -fsanitize=array-bounds |
---|
| 7 | +ubsan-cflags-$(CONFIG_UBSAN_LOCAL_BOUNDS) += -fsanitize=local-bounds |
---|
| 8 | +ubsan-cflags-$(CONFIG_UBSAN_SHIFT) += -fsanitize=shift |
---|
| 9 | +ubsan-cflags-$(CONFIG_UBSAN_DIV_ZERO) += -fsanitize=integer-divide-by-zero |
---|
| 10 | +ubsan-cflags-$(CONFIG_UBSAN_UNREACHABLE) += -fsanitize=unreachable |
---|
| 11 | +ubsan-cflags-$(CONFIG_UBSAN_BOOL) += -fsanitize=bool |
---|
| 12 | +ubsan-cflags-$(CONFIG_UBSAN_ENUM) += -fsanitize=enum |
---|
| 13 | +ubsan-cflags-$(CONFIG_UBSAN_TRAP) += -fsanitize-undefined-trap-on-error |
---|
16 | 14 | |
---|
17 | | - # -fsanitize=* options makes GCC less smart than usual and |
---|
18 | | - # increase number of 'maybe-uninitialized false-positives |
---|
19 | | - CFLAGS_UBSAN += $(call cc-option, -Wno-maybe-uninitialized) |
---|
20 | | -endif |
---|
| 15 | +export CFLAGS_UBSAN := $(ubsan-cflags-y) |
---|