162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only
262306a36Sopenharmony_ciconfig HAVE_GCC_PLUGINS
362306a36Sopenharmony_ci	bool
462306a36Sopenharmony_ci	help
562306a36Sopenharmony_ci	  An arch should select this symbol if it supports building with
662306a36Sopenharmony_ci	  GCC plugins.
762306a36Sopenharmony_ci
862306a36Sopenharmony_cimenuconfig GCC_PLUGINS
962306a36Sopenharmony_ci	bool "GCC plugins"
1062306a36Sopenharmony_ci	depends on HAVE_GCC_PLUGINS
1162306a36Sopenharmony_ci	depends on CC_IS_GCC
1262306a36Sopenharmony_ci	depends on $(success,test -e $(shell,$(CC) -print-file-name=plugin)/include/plugin-version.h)
1362306a36Sopenharmony_ci	default y
1462306a36Sopenharmony_ci	help
1562306a36Sopenharmony_ci	  GCC plugins are loadable modules that provide extra features to the
1662306a36Sopenharmony_ci	  compiler. They are useful for runtime instrumentation and static analysis.
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ci	  See Documentation/kbuild/gcc-plugins.rst for details.
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ciif GCC_PLUGINS
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ciconfig GCC_PLUGIN_SANCOV
2362306a36Sopenharmony_ci	bool
2462306a36Sopenharmony_ci	# Plugin can be removed once the kernel only supports GCC 6+
2562306a36Sopenharmony_ci	depends on !CC_HAS_SANCOV_TRACE_PC
2662306a36Sopenharmony_ci	help
2762306a36Sopenharmony_ci	  This plugin inserts a __sanitizer_cov_trace_pc() call at the start of
2862306a36Sopenharmony_ci	  basic blocks. It supports all gcc versions with plugin support (from
2962306a36Sopenharmony_ci	  gcc-4.5 on). It is based on the commit "Add fuzzing coverage support"
3062306a36Sopenharmony_ci	  by Dmitry Vyukov <dvyukov@google.com>.
3162306a36Sopenharmony_ci
3262306a36Sopenharmony_ciconfig GCC_PLUGIN_LATENT_ENTROPY
3362306a36Sopenharmony_ci	bool "Generate some entropy during boot and runtime"
3462306a36Sopenharmony_ci	help
3562306a36Sopenharmony_ci	  By saying Y here the kernel will instrument some kernel code to
3662306a36Sopenharmony_ci	  extract some entropy from both original and artificially created
3762306a36Sopenharmony_ci	  program state.  This will help especially embedded systems where
3862306a36Sopenharmony_ci	  there is little 'natural' source of entropy normally.  The cost
3962306a36Sopenharmony_ci	  is some slowdown of the boot process (about 0.5%) and fork and
4062306a36Sopenharmony_ci	  irq processing.
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ci	  Note that entropy extracted this way is not cryptographically
4362306a36Sopenharmony_ci	  secure!
4462306a36Sopenharmony_ci
4562306a36Sopenharmony_ci	  This plugin was ported from grsecurity/PaX. More information at:
4662306a36Sopenharmony_ci	   * https://grsecurity.net/
4762306a36Sopenharmony_ci	   * https://pax.grsecurity.net/
4862306a36Sopenharmony_ci
4962306a36Sopenharmony_ciconfig GCC_PLUGIN_ARM_SSP_PER_TASK
5062306a36Sopenharmony_ci	bool
5162306a36Sopenharmony_ci	depends on GCC_PLUGINS && ARM
5262306a36Sopenharmony_ci
5362306a36Sopenharmony_ciendif
54