This is the mail archive of the
mailing list for the GDB project.
Re: Problem setting registers if stack point or frame pointer is 0
- From: Daniel Jacobowitz <drow at false dot org>
- To: Antony KING <antony dot king at st dot com>
- Cc: gdb at sourceware dot org
- Date: Thu, 3 Apr 2008 17:47:52 -0400
- Subject: Re: Problem setting registers if stack point or frame pointer is 0
- References: <47F54DAD.email@example.com>
On Thu, Apr 03, 2008 at 10:35:41PM +0100, Antony KING wrote:
> I have a problem trying to set a CPU register (using the GDB convenience
> variable mechanism) if the stack pointer (SP) or frame pointer (FP) CPU
> registers are 0. For example on an SH-4 device, where the FP register is
> R14 and the SP register is R15, I see the following error from GDB
This is an unfortunate design problem in GDB. You've found the right
comment, but in fact the comment lies.
/* ZERO denotes the null frame, let the caller decide what to do
about it. Should it instead return get_current_frame()? */
It doesn't denote just the null frame (nothing running). It also
denotes the last frame (can not unwind past here, outermost). We've
really got to get rid of that ambiguity.
I use a terrible hack in find_frame_by_id in our tools, since I
still haven't found time to return to this problem :-(