Messages in this thread | ![/](/images/icornerl.gif) | | Date | Fri, 8 Aug 2003 19:47:36 +0200 | From | Adrian Bunk <> | Subject | Re: 2.6 bug: kconfig implementation doesn't match the spec |
| |
On Fri, Aug 08, 2003 at 05:16:09PM +0200, Roman Zippel wrote: > Hi, > > On Fri, 8 Aug 2003, Adrian Bunk wrote: > > > An example: > > > > config FOO > > tristate > > default m > > > > config BAR > > tristate > > default y if !FOO > > default n > > > > > > According to the kconfig spec BAR should be y, but the implementation in > > 2.6.0-mm5 sets BAR to n. > > You probably forgot to set MODULES, tristate behaves like bool in this > case and FOO becomes 'y' and '!FOO' is 'n'.
No, this is with CONFIG_MODULES=y.
Let me give another example where the kconfig implementation is completely broken (BTW: again with CONFIG_MODULES=y):
According to your language definition, m && !m evaluates to "m" (it sounds a bit strange but follows directly from rules (5) and (7) together with the interpretation of "m" as 1 as explained in the section "Menu dependencies" of Documentation/kbuild/kconfig-language.txt).
Let's take the following Kconfig snippet:
config MOD tristate default m
config TEST8 tristate default MOD && !MOD
config TEST9 tristate default m && !m
With the explations above it's obvious both TEST8 and TEST9 should be "m", but the current 2.6 kconfig implementation says:
# CONFIG_TEST8 is not set CONFIG_TEST9=y
That's not only different from the expected result directly derived from the language definition, it also gives two completely different results for the same expression!
> bye, Roman
cu Adrian
--
"Is there not promise of rain?" Ling Tan asked suddenly out of the darkness. There had been need of rain for many days. "Only a promise," Lao Er said. Pearl S. Buck - Dragon Seed
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| ![\](/images/icornerr.gif) |