[PATCH]: Make Sparc Target Multi-Arch

Jim Blandy jimb@zwingli.cygnus.com
Tue May 2 23:31:00 GMT 2000


> > What if I write the return struct size to the entry point address, 
> > following the trap instruction, and remove it when finished
> > (like the trap instruction)?
> 
> This will not work with nested user calls (breakpoint at called function,
> stop there, call another user function [returning a struct :-)]).
> It might be dangerous as well, as the entry point might just contain
> a jump, and you might clobber code which will be called during the user
> function (unlikely, but possible).

When we push a dummy frame, we could save the contents of the return
size word.  Then, we could restore that when we pop the dummy frame.

This would still lose if we:
- call a function from GDB
- hit a breakpoint while that call is active
- call another function from GDB, which longjmps over the
  dummy frame and causes the first invocation to return

Alternatively, if we're using generic dummy frames, we could put each
breakpoint / return size at a new address.  A synthetic call nested N
deep would store its return breakpoint at ENTRY_POINT + K*N, for the
appropriate value of K.


More information about the Gdb-patches mailing list