This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
Re: Function argument no longer in register
- From: Daniel Jacobowitz <drow at false dot org>
- To: Orjan Friberg <orjan dot friberg at axis dot com>
- Cc: gdb-patches at sources dot redhat dot com
- Date: Mon, 29 Mar 2004 09:25:36 -0500
- Subject: Re: Function argument no longer in register
- References: <406830DF.10109@axis.com>
On Mon, Mar 29, 2004 at 04:21:19PM +0200, Orjan Friberg wrote:
> Hi all,
>
> What should happen when a function argument goes out of scope because
> the register used to pass it is now used for something else? I
> encountered the following situation:
>
> foo (char *str)
> {
> ...
> i = bar ();
> ...
> }
>
> The str argument is passed in register r10, which is then overwritten
> with the return value from bar. If I stop somewhere after the call to
> bar and try to "print str", GDB will try to read from the address
> pointed out by r10 (i.e. sends an 'm' packet to the remote stub).
>
> I don't know what kind of problem I'm looking at here. Could it be that
> the debug information is wrong? I'm guessing GDB somehow fails to
> realize that the function argument is out of scope at this point.
Nothing's wrong - eventually, versions of GCC with proper location list
will tell GDB that the variable is out of scope, but no released
version does that. I think 3.5 snapshots will.
--
Daniel Jacobowitz
MontaVista Software Debian GNU/Linux Developer