On Fri, Nov 6, 2009 at 6:34 PM, Dmitri Vorobiev <dmitri.vorobiev@xxxxxxxxx> wrote: > On Fri, Nov 6, 2009 at 6:22 PM, Dmitri Vorobiev > <dmitri.vorobiev@xxxxxxxxx> wrote: >> On Fri, Nov 6, 2009 at 6:08 PM, Atsushi Nemoto <anemo@xxxxxxxxxxxxx> wrote: >>> Recently COMMAND_LINE_SIZE (CL_SIZE) was extended to 4096 from 512. >>> (commit 22242681 "MIPS: Extend COMMAND_LINE_SIZE") >>> >>> This cause warning if something like buf[CL_SIZE] was declared as a >>> local variable, for example in prom_init_cmdline() on some platforms. >>> >>> And since many Makefiles in arch/mips enables -Werror, this cause >>> build failure. >>> >>> How can we avoid this error? >>> >>> - do not use local array? (but dynamic allocation cannot be used in >>> such an early stage. static array?) >> >> Maybe a static array marked with __initdata? > > Also, I just thought that maybe it's possible to use a c99 > variable-length array here? Like this: > > int n = COMMAND_LINE_SIZE; > char buf[n]; > > This way, we don't put yet another variable in the .init.data section, > unlike with the static array solution. > > However, this is totally untested, just a thought... Just tried the variable-length array option, proves to be working: dmvo@cipher:/tmp$ cat c.c f() { char buf[4096]; } dmvo@cipher:/tmp$ cc -c -Wframe-larger-than=1024 c.c c.c: In function ‘f’: c.c:4: warning: the frame size of 4112 bytes is larger than 1024 bytes dmvo@cipher:/tmp$ cat d.c f() { int n = 4096; char buf1[n]; } dmvo@cipher:/tmp$ cc -c -Wframe-larger-than=1024 d.c Dmitri