这是lib/Kconfig.debug里对这个选项的描述:
The section mismatch analysis checks if there are illegal
references from one section to another section.
During linktime or runtime, some sections are dropped;
any use of code/data previously in these sections would
most likely result in an oops.
In the code, functions and variables are annotated with
__init, __devinit, etc. (see the full list in include/linux/init.h),
which results in the code/data being placed in specific sections.
The section mismatch analysis is always performed after a full
kernel build, and enabling this option causes the following
additional steps to occur:
- Add the option -fno-inline-functions-called-once to gcc commands.
When inlining a function annotated with __init in a non-init
function, we would lose the section information and thus
the analysis would not catch the illegal reference.
This option tells gcc to inline less (but it does result in
a larger kernel).
- Run the section mismatch analysis for each module/built-in.o file.
When we run the section mismatch analysis on vmlinux.o, we
lose valueble information about where the mismatch was
introduced.
Running the analysis for each module/built-in.o file
tells where the mismatch happens much closer to the
source. The drawback is that the same mismatch is
reported at least twice.
- Enable verbose reporting from modpost in order to help resolve
the section mismatches that are reported.
也就是说,打开这个选项之后会在编译过程中检查所有的module/built-in.o, 这可能就是你感觉编译时间变长的原因。
事实上,除非你遇到问题,一般情况下不需要使用这个选项。