^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) # SPDX-License-Identifier: GPL-2.0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) gcc-plugin-$(CONFIG_GCC_PLUGIN_CYC_COMPLEXITY) += cyc_complexity_plugin.so
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) gcc-plugin-$(CONFIG_GCC_PLUGIN_LATENT_ENTROPY) += latent_entropy_plugin.so
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) gcc-plugin-cflags-$(CONFIG_GCC_PLUGIN_LATENT_ENTROPY) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) += -DLATENT_ENTROPY_PLUGIN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) ifdef CONFIG_GCC_PLUGIN_LATENT_ENTROPY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) DISABLE_LATENT_ENTROPY_PLUGIN += -fplugin-arg-latent_entropy_plugin-disable
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) export DISABLE_LATENT_ENTROPY_PLUGIN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) gcc-plugin-$(CONFIG_GCC_PLUGIN_SANCOV) += sancov_plugin.so
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) gcc-plugin-$(CONFIG_GCC_PLUGIN_STRUCTLEAK) += structleak_plugin.so
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) gcc-plugin-cflags-$(CONFIG_GCC_PLUGIN_STRUCTLEAK_VERBOSE) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) += -fplugin-arg-structleak_plugin-verbose
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) gcc-plugin-cflags-$(CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) += -fplugin-arg-structleak_plugin-byref
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) gcc-plugin-cflags-$(CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF_ALL) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) += -fplugin-arg-structleak_plugin-byref-all
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) ifdef CONFIG_GCC_PLUGIN_STRUCTLEAK
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) DISABLE_STRUCTLEAK_PLUGIN += -fplugin-arg-structleak_plugin-disable
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) export DISABLE_STRUCTLEAK_PLUGIN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) gcc-plugin-cflags-$(CONFIG_GCC_PLUGIN_STRUCTLEAK) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) += -DSTRUCTLEAK_PLUGIN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) gcc-plugin-$(CONFIG_GCC_PLUGIN_RANDSTRUCT) += randomize_layout_plugin.so
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) gcc-plugin-cflags-$(CONFIG_GCC_PLUGIN_RANDSTRUCT) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) += -DRANDSTRUCT_PLUGIN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) gcc-plugin-cflags-$(CONFIG_GCC_PLUGIN_RANDSTRUCT_PERFORMANCE) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) += -fplugin-arg-randomize_layout_plugin-performance-mode
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) gcc-plugin-$(CONFIG_GCC_PLUGIN_STACKLEAK) += stackleak_plugin.so
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) gcc-plugin-cflags-$(CONFIG_GCC_PLUGIN_STACKLEAK) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) += -DSTACKLEAK_PLUGIN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) gcc-plugin-cflags-$(CONFIG_GCC_PLUGIN_STACKLEAK) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) += -fplugin-arg-stackleak_plugin-track-min-size=$(CONFIG_STACKLEAK_TRACK_MIN_SIZE)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) gcc-plugin-cflags-$(CONFIG_GCC_PLUGIN_STACKLEAK) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) += -fplugin-arg-stackleak_plugin-arch=$(SRCARCH)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) ifdef CONFIG_GCC_PLUGIN_STACKLEAK
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) DISABLE_STACKLEAK_PLUGIN += -fplugin-arg-stackleak_plugin-disable
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) export DISABLE_STACKLEAK_PLUGIN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) gcc-plugin-$(CONFIG_GCC_PLUGIN_ARM_SSP_PER_TASK) += arm_ssp_per_task_plugin.so
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) ifdef CONFIG_GCC_PLUGIN_ARM_SSP_PER_TASK
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) DISABLE_ARM_SSP_PER_TASK_PLUGIN += -fplugin-arg-arm_ssp_per_task_plugin-disable
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) export DISABLE_ARM_SSP_PER_TASK_PLUGIN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) # All the plugin CFLAGS are collected here in case a build target needs to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) # filter them out of the KBUILD_CFLAGS.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) GCC_PLUGINS_CFLAGS := $(strip $(addprefix -fplugin=$(objtree)/scripts/gcc-plugins/, $(gcc-plugin-y)) $(gcc-plugin-cflags-y))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) # The sancov_plugin.so is included via CFLAGS_KCOV, so it is removed here.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) GCC_PLUGINS_CFLAGS := $(filter-out %/sancov_plugin.so, $(GCC_PLUGINS_CFLAGS))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) export GCC_PLUGINS_CFLAGS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) # Add the flags to the build!
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) KBUILD_CFLAGS += $(GCC_PLUGINS_CFLAGS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) # All enabled GCC plugins are collected here for building below.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) GCC_PLUGIN := $(gcc-plugin-y)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) export GCC_PLUGIN