| b.liu | e958203 | 2025-04-17 19:18:16 +0800 | [diff] [blame] | 1 | # SPDX-License-Identifier: GPL-2.0-only | 
|  | 2 | menu "GCOV-based kernel profiling" | 
|  | 3 |  | 
|  | 4 | config GCOV_KERNEL | 
|  | 5 | bool "Enable gcov-based kernel profiling" | 
|  | 6 | depends on DEBUG_FS | 
|  | 7 | select CONSTRUCTORS if !UML | 
|  | 8 | default n | 
|  | 9 | ---help--- | 
|  | 10 | This option enables gcov-based code profiling (e.g. for code coverage | 
|  | 11 | measurements). | 
|  | 12 |  | 
|  | 13 | If unsure, say N. | 
|  | 14 |  | 
|  | 15 | Additionally specify CONFIG_GCOV_PROFILE_ALL=y to get profiling data | 
|  | 16 | for the entire kernel. To enable profiling for specific files or | 
|  | 17 | directories, add a line similar to the following to the respective | 
|  | 18 | Makefile: | 
|  | 19 |  | 
|  | 20 | For a single file (e.g. main.o): | 
|  | 21 | GCOV_PROFILE_main.o := y | 
|  | 22 |  | 
|  | 23 | For all files in one directory: | 
|  | 24 | GCOV_PROFILE := y | 
|  | 25 |  | 
|  | 26 | To exclude files from being profiled even when CONFIG_GCOV_PROFILE_ALL | 
|  | 27 | is specified, use: | 
|  | 28 |  | 
|  | 29 | GCOV_PROFILE_main.o := n | 
|  | 30 | and: | 
|  | 31 | GCOV_PROFILE := n | 
|  | 32 |  | 
|  | 33 | Note that the debugfs filesystem has to be mounted to access | 
|  | 34 | profiling data. | 
|  | 35 |  | 
|  | 36 | config ARCH_HAS_GCOV_PROFILE_ALL | 
|  | 37 | def_bool n | 
|  | 38 |  | 
|  | 39 | config GCOV_PROFILE_ALL | 
|  | 40 | bool "Profile entire Kernel" | 
|  | 41 | depends on !COMPILE_TEST | 
|  | 42 | depends on GCOV_KERNEL | 
|  | 43 | depends on ARCH_HAS_GCOV_PROFILE_ALL | 
|  | 44 | default n | 
|  | 45 | ---help--- | 
|  | 46 | This options activates profiling for the entire kernel. | 
|  | 47 |  | 
|  | 48 | If unsure, say N. | 
|  | 49 |  | 
|  | 50 | Note that a kernel compiled with profiling flags will be significantly | 
|  | 51 | larger and run slower. Also be sure to exclude files from profiling | 
|  | 52 | which are not linked to the kernel image to prevent linker errors. | 
|  | 53 |  | 
|  | 54 | choice | 
|  | 55 | prompt "Specify GCOV format" | 
|  | 56 | depends on GCOV_KERNEL | 
|  | 57 | depends on CC_IS_GCC | 
|  | 58 | ---help--- | 
|  | 59 | The gcov format is usually determined by the GCC version, and the | 
|  | 60 | default is chosen according to your GCC version. However, there are | 
|  | 61 | exceptions where format changes are integrated in lower-version GCCs. | 
|  | 62 | In such a case, change this option to adjust the format used in the | 
|  | 63 | kernel accordingly. | 
|  | 64 |  | 
|  | 65 | config GCOV_FORMAT_3_4 | 
|  | 66 | bool "GCC 3.4 format" | 
|  | 67 | depends on GCC_VERSION < 40700 | 
|  | 68 | ---help--- | 
|  | 69 | Select this option to use the format defined by GCC 3.4. | 
|  | 70 |  | 
|  | 71 | config GCOV_FORMAT_4_7 | 
|  | 72 | bool "GCC 4.7 format" | 
|  | 73 | ---help--- | 
|  | 74 | Select this option to use the format defined by GCC 4.7. | 
|  | 75 |  | 
|  | 76 | endchoice | 
|  | 77 |  | 
|  | 78 | endmenu |