Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 30 Jul 2009 16:50:22 -0700
From:      Oleksandr Tymoshenko <gonzo@freebsd.org>
To:        Neelkanth Natu <neelnatu@yahoo.com>
Cc:        freebsd-mips@freebsd.org
Subject:   Re: Diffs to fix ddb backtrace
Message-ID:  <4A7231BE.3090703@freebsd.org>
In-Reply-To: <681122.20462.qm@web34407.mail.mud.yahoo.com>
References:  <681122.20462.qm@web34407.mail.mud.yahoo.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Neelkanth Natu wrote:
> Hi,
> 
> This diff fixes a problem I encountered with ddb backtrace.
> 	
> The problem with looking for just 'j ra' instruction to find out the
> end of the previous function is that gcc does not emit that
> instruction for functions that are not supposed to return (for e.g.
> boot() or panic()). This is especially bad because the backtrace
> generated by calling panic() is unusable because boot() is right
> above panic() in the object file.
> 	
> This change looks for start of a function by looking for an instruction
> of the form: addiu sp,sp,-<frame_size>
> 	
> It so happens that gcc emits this as the first instruction for all
> functions that use the stack. We keep the 'j ra' method around for
> functions that don't use the stack.

     Thanks! This is something I've always wanted to do but never did 
:) commited to projects/mips



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4A7231BE.3090703>