Re: [PATCH] Make `obsolete params' work correctly if MODULE_SYMBOL_PRE

Kai Henningsen
2003-01-13T19:50:16Z

rusty@rustcorp.com.au (Rusty Russell) wrote on 11.01.03 in <20030111224007$7807@gated-at.bofh.it>:

> In message <Pine.LNX.4.44.0301102134150.9532-100000@home.transmeta.com> you
> wri te:
> >
> > On Sat, 11 Jan 2003, Rusty Russell wrote:
> > >
> > > Just in case someone names a variable over 2000 chars, and uses it as
> > > an old-style module parameter?
> >
> > No. Just because variable-sized arrays aren't C, and generate crappy code.
> >
> > > for (i = 0; i < num; i++) {
> > > + char sym_name[strlen(obsparm[i].name)
> > > + + sizeof(MODULE_SYMBOL_PREFIX)];
> >
> > It's still there.
>
> OK, *please* explain to me in little words so I can understand.

Do "char sym_name[CONSTANT];". What's so hard to understand about that?

> Variable-sized arrays are C, as of C99. They've been a GNU extension
> forever.

Actually, the gcc thing and the C99 thing are significantly different, and
neither is a sub- or superset of the other. In fact, gcc's C99-conformance
page (http://gcc.gnu.org/c99status.html) still lists VLAs as "broken".

See here for at least some explanation:
http://gcc.gnu.org/ml/gcc/2002-10/msg00470.html

> While gcc 2.95.4 generates fairly horrible code, gcc 3.0 does better
> (the two compilers I have on my laptop).
>
> Both generate correct code.

For the GNU extension, maybe.

MfG Kai