1# SPDX-License-Identifier: GPL-2.0
2#
3# Makefile for KernelMemorySanitizer (KMSAN).
4#
5#
6obj-y := core.o instrumentation.o init.o hooks.o report.o shadow.o
7
8KMSAN_SANITIZE := n
9KCOV_INSTRUMENT := n
10UBSAN_SANITIZE := n
11
12# Disable instrumentation of KMSAN runtime with other tools.
13CC_FLAGS_KMSAN_RUNTIME := -fno-stack-protector
14CC_FLAGS_KMSAN_RUNTIME += $(call cc-option,-fno-conserve-stack)
15CC_FLAGS_KMSAN_RUNTIME += -DDISABLE_BRANCH_PROFILING
16
17# Disable ftrace to avoid recursion.
18CFLAGS_REMOVE_core.o = $(CC_FLAGS_FTRACE)
19CFLAGS_REMOVE_hooks.o = $(CC_FLAGS_FTRACE)
20CFLAGS_REMOVE_init.o = $(CC_FLAGS_FTRACE)
21CFLAGS_REMOVE_instrumentation.o = $(CC_FLAGS_FTRACE)
22CFLAGS_REMOVE_report.o = $(CC_FLAGS_FTRACE)
23CFLAGS_REMOVE_shadow.o = $(CC_FLAGS_FTRACE)
24
25CFLAGS_core.o := $(CC_FLAGS_KMSAN_RUNTIME)
26CFLAGS_hooks.o := $(CC_FLAGS_KMSAN_RUNTIME)
27CFLAGS_init.o := $(CC_FLAGS_KMSAN_RUNTIME)
28CFLAGS_instrumentation.o := $(CC_FLAGS_KMSAN_RUNTIME)
29CFLAGS_report.o := $(CC_FLAGS_KMSAN_RUNTIME)
30CFLAGS_shadow.o := $(CC_FLAGS_KMSAN_RUNTIME)
31
32obj-$(CONFIG_KMSAN_KUNIT_TEST) += kmsan_test.o
33KMSAN_SANITIZE_kmsan_test.o := y
34CFLAGS_kmsan_test.o += $(call cc-disable-warning, uninitialized)
35