[i386/stabs] Arguments of main on gcc >= 4.1

Joel Brobecker brobecker@adacore.com
Mon Dec 3 18:25:00 GMT 2007

> Since gcc 4.1 and later started putting code in the prologue
> to realign the stack pointer, the offset on the
> parameter stabs changed from being relative to the frame pointer
> to being relative to the argument's address.

This is somewhat fuzzy because the stabs format has never been really
well defined like DWARF is, but IMO this is a GCC bug.

> E.g.:
>     int main (int argc, char **argv, char **envp);
> notice the 0, 4, 8:
>           .zero   16
>           .text
>           .stabs  "main:F(0,1)",36,0,10,main
>           .stabs  "argc:p(0,1)",160,0,9,0
>           .stabs  "argv:p(0,16)=*(3,54)",160,0,9,4
>           .stabs  "envp:p(0,16)",160,0,9,8
> .globl main
>           .type   main, @function

Looking at your example above, what would work is if GCC was using
N_LSYM (128) symbols instead of N_PSYM symbols (160).

I would definitely be interested in what others think on this.


More information about the Gdb-patches mailing list