Message ID | 1522128575-5326-17-git-send-email-yamada.masahiro@socionext.com |
---|---|
State | New |
Headers | show |
Series | kconfig: move compiler capability tests to Kconfig | expand |
On Mon, Mar 26, 2018 at 10:29 PM, Masahiro Yamada <yamada.masahiro@socionext.com> wrote: > As Documentation/kbuild/kconfig-language.txt notes, 'select' should be > used with care - it forces a lower limit of another symbol, ignoring > the dependency. In this case, KCOV can select GCC_PLUGINS even if > 'depends on HAVE_GCC_PLUGINS' is unmet. > > 'imply' is modest enough to observe the dependency, and this makes > sense. If you enable KCOV, you will probably want to enable > GCC_PLUGIN_SANCOV, but it should not break the dependency. > > I also remove unneeded code, I just happened to notice. > > Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> Reviewed-by: Kees Cook <keescook@chromium.org> -Kees -- Kees Cook Pixel Security
On Mon, Mar 26, 2018 at 10:29 PM, Masahiro Yamada <yamada.masahiro@socionext.com> wrote: > As Documentation/kbuild/kconfig-language.txt notes, 'select' should be > used with care - it forces a lower limit of another symbol, ignoring > the dependency. In this case, KCOV can select GCC_PLUGINS even if > 'depends on HAVE_GCC_PLUGINS' is unmet. > > 'imply' is modest enough to observe the dependency, and this makes > sense. If you enable KCOV, you will probably want to enable > GCC_PLUGIN_SANCOV, but it should not break the dependency. > > I also remove unneeded code, I just happened to notice. > > Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> > - Drop depends on GCC_VERSION > > --- > > Changes in v2: None > > lib/Kconfig.debug | 7 +++---- > 1 file changed, 3 insertions(+), 4 deletions(-) > > diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug > index 5be22e4..8243c9d 100644 > --- a/lib/Kconfig.debug > +++ b/lib/Kconfig.debug > @@ -743,8 +743,8 @@ config KCOV > bool "Code coverage for fuzzing" > depends on ARCH_HAS_KCOV > select DEBUG_FS > - select GCC_PLUGINS if !COMPILE_TEST > - select GCC_PLUGIN_SANCOV if !COMPILE_TEST > + imply GCC_PLUGINS > + imply GCC_PLUGIN_SANCOV > help > KCOV exposes kernel code coverage information in a form suitable > for coverage-guided fuzzing (randomized testing). Actually, I think this can be improved, as KCOV should depend on either: -fsanitize-coverage=trace-pc support (in gcc 6+, see scripts/Makefile.kcov) or GCC_PLUGIN_SANCOV (which provides the trace-pc support via the plugin for gcc before 6) > @@ -758,7 +758,6 @@ config KCOV > config KCOV_ENABLE_COMPARISONS > bool "Enable comparison operands collection by KCOV" > depends on KCOV > - default n > help > KCOV also exposes operands of every comparison in the instrumented > code along with operand sizes and PCs of the comparison instructions. Similarly, this depends on -fsanitize-coverage=trace-cmp > @@ -768,7 +767,7 @@ config KCOV_ENABLE_COMPARISONS > config KCOV_INSTRUMENT_ALL > bool "Instrument all code by default" > depends on KCOV > - default y if KCOV > + default y > help > If you are doing generic system call fuzzing (like e.g. syzkaller), > then you will want to instrument the whole kernel and you should > -- > 2.7.4 > -Kees -- Kees Cook Pixel Security
diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug index 5be22e4..8243c9d 100644 --- a/lib/Kconfig.debug +++ b/lib/Kconfig.debug @@ -743,8 +743,8 @@ config KCOV bool "Code coverage for fuzzing" depends on ARCH_HAS_KCOV select DEBUG_FS - select GCC_PLUGINS if !COMPILE_TEST - select GCC_PLUGIN_SANCOV if !COMPILE_TEST + imply GCC_PLUGINS + imply GCC_PLUGIN_SANCOV help KCOV exposes kernel code coverage information in a form suitable for coverage-guided fuzzing (randomized testing). @@ -758,7 +758,6 @@ config KCOV config KCOV_ENABLE_COMPARISONS bool "Enable comparison operands collection by KCOV" depends on KCOV - default n help KCOV also exposes operands of every comparison in the instrumented code along with operand sizes and PCs of the comparison instructions. @@ -768,7 +767,7 @@ config KCOV_ENABLE_COMPARISONS config KCOV_INSTRUMENT_ALL bool "Instrument all code by default" depends on KCOV - default y if KCOV + default y help If you are doing generic system call fuzzing (like e.g. syzkaller), then you will want to instrument the whole kernel and you should
As Documentation/kbuild/kconfig-language.txt notes, 'select' should be used with care - it forces a lower limit of another symbol, ignoring the dependency. In this case, KCOV can select GCC_PLUGINS even if 'depends on HAVE_GCC_PLUGINS' is unmet. 'imply' is modest enough to observe the dependency, and this makes sense. If you enable KCOV, you will probably want to enable GCC_PLUGIN_SANCOV, but it should not break the dependency. I also remove unneeded code, I just happened to notice. Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> - Drop depends on GCC_VERSION --- Changes in v2: None lib/Kconfig.debug | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) -- 2.7.4