# SPDX-License-Identifier: GPL-2.0-only
menu "GCOV-based kernel profiling"

config GCOV_KERNEL
	bool "Enable gcov-based kernel profiling"
	depends on DEBUG_FS
	select CONSTRUCTORS if !UML
	default n
	---help---
	This option enables gcov-based code profiling (e.g. for code coverage
	measurements).

	If unsure, say N.

	Additionally specify CONFIG_GCOV_PROFILE_ALL=y to get profiling data
	for the entire kernel. To enable profiling for specific files or
	directories, add a line similar to the following to the respective
	Makefile:

	For a single file (e.g. main.o):
	        GCOV_PROFILE_main.o := y

	For all files in one directory:
	        GCOV_PROFILE := y

	To exclude files from being profiled even when CONFIG_GCOV_PROFILE_ALL
	is specified, use:

	        GCOV_PROFILE_main.o := n
	and:
	        GCOV_PROFILE := n

	Note that the debugfs filesystem has to be mounted to access
	profiling data.

config ARCH_HAS_GCOV_PROFILE_ALL
	def_bool n

config GCOV_PROFILE_ALL
	bool "Profile entire Kernel"
	depends on !COMPILE_TEST
	depends on GCOV_KERNEL
	depends on ARCH_HAS_GCOV_PROFILE_ALL
	default n
	---help---
	This options activates profiling for the entire kernel.

	If unsure, say N.

	Note that a kernel compiled with profiling flags will be significantly
	larger and run slower. Also be sure to exclude files from profiling
	which are not linked to the kernel image to prevent linker errors.

choice
	prompt "Specify GCOV format"
	depends on GCOV_KERNEL
	depends on CC_IS_GCC
	---help---
	The gcov format is usually determined by the GCC version, and the
	default is chosen according to your GCC version. However, there are
	exceptions where format changes are integrated in lower-version GCCs.
	In such a case, change this option to adjust the format used in the
	kernel accordingly.

config GCOV_FORMAT_3_4
	bool "GCC 3.4 format"
	depends on GCC_VERSION < 40700
	---help---
	Select this option to use the format defined by GCC 3.4.

config GCOV_FORMAT_4_7
	bool "GCC 4.7 format"
	---help---
	Select this option to use the format defined by GCC 4.7.

endchoice

endmenu
