mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-05 19:31:57 -04:00
Add sancov plugin
The sancov gcc plugin inserts a __sanitizer_cov_trace_pc() call at the start of basic blocks. This plugin is a helper plugin for the kcov feature. It supports all gcc versions with plugin support (from gcc-4.5 on). It is based on the gcc commit "Add fuzzing coverage support" by Dmitry Vyukov (https://gcc.gnu.org/viewcvs/gcc?limit_changes=0&view=revision&revision=231296). Signed-off-by: Emese Revfy <re.emese@gmail.com> Acked-by: Kees Cook <keescook@chromium.org> Signed-off-by: Michal Marek <mmarek@suse.com>
This commit is contained in:
parent
0dae776c6b
commit
543c37cb16
7 changed files with 184 additions and 10 deletions
|
|
@ -2,10 +2,26 @@ ifdef CONFIG_GCC_PLUGINS
|
|||
__PLUGINCC := $(call cc-ifversion, -ge, 0408, $(HOSTCXX), $(HOSTCC))
|
||||
PLUGINCC := $(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-plugin.sh "$(__PLUGINCC)" "$(HOSTCXX)" "$(CC)")
|
||||
|
||||
SANCOV_PLUGIN := -fplugin=$(objtree)/scripts/gcc-plugins/sancov_plugin.so
|
||||
|
||||
gcc-plugin-$(CONFIG_GCC_PLUGIN_CYC_COMPLEXITY) += cyc_complexity_plugin.so
|
||||
|
||||
ifdef CONFIG_GCC_PLUGIN_SANCOV
|
||||
ifeq ($(CFLAGS_KCOV),)
|
||||
# It is needed because of the gcc-plugin.sh and gcc version checks.
|
||||
gcc-plugin-$(CONFIG_GCC_PLUGIN_SANCOV) += sancov_plugin.so
|
||||
|
||||
ifneq ($(PLUGINCC),)
|
||||
CFLAGS_KCOV := $(SANCOV_PLUGIN)
|
||||
else
|
||||
$(warning warning: cannot use CONFIG_KCOV: -fsanitize-coverage=trace-pc is not supported by compiler)
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
GCC_PLUGINS_CFLAGS := $(addprefix -fplugin=$(objtree)/scripts/gcc-plugins/, $(gcc-plugin-y))
|
||||
|
||||
export PLUGINCC GCC_PLUGINS_CFLAGS GCC_PLUGIN
|
||||
export PLUGINCC GCC_PLUGINS_CFLAGS GCC_PLUGIN SANCOV_PLUGIN
|
||||
|
||||
ifeq ($(PLUGINCC),)
|
||||
ifneq ($(GCC_PLUGINS_CFLAGS),)
|
||||
|
|
@ -16,6 +32,9 @@ ifdef CONFIG_GCC_PLUGINS
|
|||
$(warning warning: your gcc version does not support plugins, you should upgrade it to gcc 4.5 at least)
|
||||
endif
|
||||
endif
|
||||
else
|
||||
# SANCOV_PLUGIN can be only in CFLAGS_KCOV because avoid duplication.
|
||||
GCC_PLUGINS_CFLAGS := $(filter-out $(SANCOV_PLUGIN), $(GCC_PLUGINS_CFLAGS))
|
||||
endif
|
||||
|
||||
KBUILD_CFLAGS += $(GCC_PLUGINS_CFLAGS)
|
||||
|
|
|
|||
Loading…
Reference in a new issue