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

Richard B. Johnson
2003-01-13T20:49:36Z

On Mon, 13 Jan 2003 Valdis.Kletnieks@vt.edu wrote:

> On Mon, 13 Jan 2003 15:28:45 EST, "Richard B. Johnson" said:
>
> > void foo(int len)
> > {
> > char use[0x100];
> > char bar[len];
> > }
> >
> > In the case of 'use', the compiler subtracts (0x100 * sizeof(char))
> > from the current stack value and uses that as the location for 'use'.
> > In the case of 'bar' the compiler subtracts (len * sizeof(char))
> > from the current stack value and uses that as the location for 'bar'.
>
> One or the other of these is missing a -0x100 for the location...
>
> void foo (int len1, unsigned int len2)
> {
> char bar[0x100];
> char baz[len1];
> char quux[len2];
> char moby[8];
> }
>
> And moby[6] is *where*? ;) Bonus points for getting this right if
> compiled with -fvomit-stack-pointer. <evil grin> ;)
> --

Trivial. The constant stuff gets allocated first, then the dynamic.
You can write the code in any order you want, but the code generation
is as though you did:
char bar [0x100];
char moby[8];
Also, vomit-stack-pointer is "f(v)omit-frame-pointer". It works
the same. No problem except when trying to find local variables
in the debugger (known -g implimentation "feature"). The frame
pointer is BP. The stack is never omitted. You can save a few
instructions if you don't use it.

Cheers,
Dick Johnson
Penguin : Linux version 2.4.18 on an i686 machine (797.90 BogoMips).
Why is the government concerned about the lunatic fringe? Think about it.