From e85ac12443da72d79dbf7c55c12e4b16b8923d87 Mon Sep 17 00:00:00 2001 From: "Yann E. MORIN" Date: Mon, 20 May 2013 23:17:34 +0200 Subject: kconfig/conf: accept a base-16 seed for randconfig Signed-off-by: "Yann E. MORIN" --- scripts/kconfig/conf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'scripts/kconfig/conf.c') diff --git a/scripts/kconfig/conf.c b/scripts/kconfig/conf.c index bde5b95..94521c7 100644 --- a/scripts/kconfig/conf.c +++ b/scripts/kconfig/conf.c @@ -527,7 +527,7 @@ int main(int ac, char **av) seed_env = getenv("KCONFIG_SEED"); if( seed_env && *seed_env ) { char *endp; - int tmp = (int)strtol(seed_env, &endp, 10); + int tmp = (int)strtol(seed_env, &endp, 0); if (*endp == '\0') { seed = tmp; } -- cgit v1.1 From a5f6d795f5941e97e757b643a6482968a66c6150 Mon Sep 17 00:00:00 2001 From: "Yann E. MORIN" Date: Mon, 20 May 2013 23:09:03 +0200 Subject: kconfig/conf: print the seed used to initialise the RNG for randconfig ... so the user has a chance to reproduce a test-case. Signed-off-by: "Yann E. MORIN" --- scripts/kconfig/conf.c | 1 + 1 file changed, 1 insertion(+) (limited to 'scripts/kconfig/conf.c') diff --git a/scripts/kconfig/conf.c b/scripts/kconfig/conf.c index 94521c7..38616c1 100644 --- a/scripts/kconfig/conf.c +++ b/scripts/kconfig/conf.c @@ -532,6 +532,7 @@ int main(int ac, char **av) seed = tmp; } } + fprintf( stderr, "KCONFIG_SEED=0x%X\n", seed ); srand(seed); break; } -- cgit v1.1 From 3b9a19e08960e5cdad5253998637653e592a3c29 Mon Sep 17 00:00:00 2001 From: "Yann E. MORIN" Date: Sun, 28 Apr 2013 22:36:38 +0200 Subject: kconfig: loop as long as we changed some symbols in randconfig Because of choice-in-a-choice constructs, it can happen that not all symbols are assigned a value during randconfig, leading in rare cases to this situation: ---8<--- choice-in-choice.in choice bool "A/B/C" config A bool "A" config B bool "B" if B choice bool "E/F" config E bool "E" config F bool "F" endchoice endif # B config C bool "C" endchoice ---8<--- $ ./scripts/kconfig/conf --randconfig choice-in-choice.in [--SNIP--] $ ./scripts/kconfig/conf --silentoldconfig choice-in-choice.in 2. B (B) 3. C (C) choice[1-3]: 2 E/F > 1. E (E) (NEW) 2. F (F) (NEW) choice[1-2]: aborted! Console input/output is redirected. Run 'make oldconfig' to update configuration. Fix this by looping in randconfig for as long as some symbol gets assigned a value. Note: this was spotted with the USB EHCI Debug Device Gadget (USB_G_DBGP), which uses this choice-in-a-choice construct, and exhibits this problem. The example above is just a stripped-down minimalist test-case. Signed-off-by: "Yann E. MORIN" --- scripts/kconfig/conf.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'scripts/kconfig/conf.c') diff --git a/scripts/kconfig/conf.c b/scripts/kconfig/conf.c index 38616c1..d19944f 100644 --- a/scripts/kconfig/conf.c +++ b/scripts/kconfig/conf.c @@ -654,7 +654,8 @@ int main(int ac, char **av) conf_set_all_new_symbols(def_default); break; case randconfig: - conf_set_all_new_symbols(def_random); + /* Really nothing to do in this loop */ + while (conf_set_all_new_symbols(def_random)) ; break; case defconfig: conf_set_all_new_symbols(def_default); -- cgit v1.1