Date: Tue, 20 Jun 2006 08:30:50 -0700 From: Tim Kientzle <kientzle@freebsd.org> To: "Andrew R. Reiter" <arr@watson.org> Cc: Yar Tikhiy <yar@comp.chem.msu.su>, current@freebsd.org Subject: Re: NULL pointer dereference panic Message-ID: <449814AA.90307@freebsd.org> In-Reply-To: <20060619181929.W40529@fledge.watson.org> References: <20060618192011.GF715@turion.vk2pj.dyndns.org> <20060618152428.A36995@fledge.watson.org> <20060619184540.GJ23729@comp.chem.msu.su> <20060619190822.GE966@turion.vk2pj.dyndns.org> <20060619221550.GM23729@comp.chem.msu.su> <20060619181929.W40529@fledge.watson.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Andrew R. Reiter wrote:
> On Tue, 20 Jun 2006, Yar Tikhiy wrote:
>
> :On Tue, Jun 20, 2006 at 05:08:22AM +1000, Peter Jeremy wrote:
> :> On Mon, 2006-Jun-19 22:45:41 +0400, Yar Tikhiy wrote:
> :> >Peter, what gcc options did you build the kernel with? My question
> :> >is unrelated to the panic, I'd just like to make stack traces look
> :> >sane in common cases :-)
> :>
> :
> :When in basic i386 mode, gcc calls functions in the traditional
> :way. E.g., the "foo(1, 2)" call will look as follows in asm:
> :
> : pushl $2
> : pushl $1
> : call foo
> : addl $8, %esp
> :
> :By merely decoding the addl instruction at the return pointer we
> :can find how many words of arguments the called function takes.
I'm not sure which -O flags enable this, but I've
certainly seen lazy stack cleanups in gcc-generated
code on i386:
pushl $2
pushl $1
call foo
pushl $3
pushl $4
call foo
addl $16, %esp
This optimization would also confuse the stack-tracing
logic you describe.
Tim
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?449814AA.90307>
