This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Function argument no longer in register


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]