public inbox for gdb@sourceware.org
 help / color / mirror / Atom feed
From: Mark Kettenis <kettenis@chello.nl>
To: ac131313@redhat.com
Cc: gdb@sources.redhat.com
Subject: Re: Unwinding dummy frames on the i386
Date: Sat, 08 Mar 2003 17:32:00 -0000	[thread overview]
Message-ID: <200303081732.h28HW0ZX000460@elgar.kettenis.dyndns.org> (raw)
In-Reply-To: <3E6A0A28.9000304@redhat.com> (message from Andrew Cagney on Sat, 08 Mar 2003 10:20:08 -0500)

   Date: Sat, 08 Mar 2003 10:20:08 -0500
   From: Andrew Cagney <ac131313@redhat.com>

   >    Date: Fri, 07 Mar 2003 17:13:24 -0500
   >    From: Andrew Cagney <ac131313@redhat.com>
   > 
   >    > For now I've worked around this by having my own do-nothing
   >    > i386_save_dummy_frame_tos(), and having i386_unwind_dummy_id() return
   >    > contents of the (saved) frame pointer register for the frame's base.
   >    > Is there a better way to solve this?
   > 
   >    Can i386_save_dummy_frame_tos() save the `frame pointer register' that 
   >    the unwind_dummy_id() method later returns?
   > 
   > If reading the current value of FP_REGNUM from current_regcache is OK
   > the answer is yes.

   Yes.  Just add a comment to gdbarch.sh saying that tos's successor needs 
   to be explicitly parameterized with the new regcache (along with 
   anything else that might prove useful - old regcache, struct_addr, bp 
   addr :-).

Will do.

   > Hmm, in that case it's probably an even better
   > idea to actually set the frame pointer register to the top-of-stack in
   > i386_save_dummy_frame_tos().  That way, we won't have a problem when
   > there are several frameless function calls in a row.  Is writing into
   > current_regcache acceptable?

   Shouldn't the push arguments code have already adjusted the FP?

Not necessarily.  It's the job of the called function to set up the FP
(if it needs one or otherwise chooses to do so, e.g. for the benefit
of a debugger).  The called function doesn't care what the value of
the FP is.  The only reason I'm trying to set up a FP is for us to be
able to find the right dummy frame upon unwinding.  Therefore I'd like
to restrict fiddling with the FP to save_dummy_frame_tos().

   Anyway, regardless, you want to add frame_align() to the i386 
   architecture vector.  It forces a non-empty correctly aligned dummy 
   frame (thus eliminating the frameless dummy frame problem) (but read the 
   comments that go with the call).

Probably, yes.  The System V ABI says that the stack should be word
aligned.  It doesn't help though, since it only fiddles with the SP.
And on the i386 the frames are already non-empty since the return
address gets pushed on the stack before a function call.

Mark

      reply	other threads:[~2003-03-08 17:32 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-03-07 20:59 Mark Kettenis
2003-03-07 22:13 ` Andrew Cagney
2003-03-08 11:42   ` Mark Kettenis
2003-03-08 15:20     ` Andrew Cagney
2003-03-08 17:32       ` Mark Kettenis [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200303081732.h28HW0ZX000460@elgar.kettenis.dyndns.org \
    --to=kettenis@chello.nl \
    --cc=ac131313@redhat.com \
    --cc=gdb@sources.redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).