On Sun, Feb 11, 2018 at 6:56 PM, Kees Cook <keescook@xxxxxxxxxxxx> wrote: > Another case I mentioned before that I just want to make sure we don't > reintroduce the problem of getting "stuck" with a bad .config file. > While adding _STRONG support, I discovered the two-phase Kconfig > resolution that happens during the build. If you selected _STRONG with > a strong-capable compiler, everything was fine. If you then tried to > build with an older compiler, you'd get stuck since _STRONG wasn't > support (as detected during the first Kconfig phase) so the > generated/autoconf.h would never get updated with the newly selected > _REGULAR). I moved the Makefile analysis of available stack-protector > options into the second phase (i.e. after all the Kconfig runs), and > that worked to both unstick such configs and provide a clear message > early in the build about what wasn't available. > > If all this detection is getting moved up into Kconfig, I'm worried > we'll end up in this state again. If the answer is "you have to delete > autoconf.h if you change compilers", then that's fine, but it sure > seems unfriendly. :) Did you mean include/config/auto.conf? That's the one that gets included by the Makefiles. If the feature detection is moved into Kconfig, you should only need to rerun the configuration (make menuconfig/oldconfig/olddefconfig) if you change the compiler. That will update .config while taking the new features into account, and then the second phase during 'make' will update include/config/auto.conf from .config. That second Kconfig phase generates include/generated/autoconf.h and include/config/. The include/config/ directory implements dependencies between source files and Kconfig symbols by turning the symbols into (empty) files. When building (during the "second phase"), Kconfig compares .config with include/config/auto.conf to see what changed, and signals the changes to 'make' by touch'ing the files corresponding to the changed symbols. The idea is to avoid having to do a full rebuild whenever the configuration is changed. Check out scripts/basic/fixdep.c as well if you want to understand how it works. Cheers, Ulf -- To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html