Mirror of the gdb mailing list
 help / color / mirror / Atom feed
From: Mark Kettenis <mark.kettenis@xs4all.nl>
To: nickrob@snap.net.nz
Cc: gdb@sources.redhat.com
Subject: Re: info frame
Date: Mon, 17 Apr 2006 01:33:00 -0000	[thread overview]
Message-ID: <200604162333.k3GNXLeX004661@elgar.sibelius.xs4all.nl> (raw)
In-Reply-To: <17474.53281.404673.189792@farnswood.snap.net.nz> (message from 	Nick Roberts on Mon, 17 Apr 2006 11:15:45 +1200)

> From: Nick Roberts <nickrob@snap.net.nz>
> Date: Mon, 17 Apr 2006 11:15:45 +1200
> 
> 'info frame' says that the frame is at a different address (0xbffff710)
> to $fp (0xbffff708).  This wasn't the case with older versions e.g 5.2.1:
> 
>   nickrob/31  gdb myprog
>   GNU gdb 5.2.1-2mdk (Mandrake Linux)
>   Copyright 2002 Free Software Foundation, Inc.
>   ...
>   (gdb) inf frame
>   Stack level 0, frame at 0xbffff728:
>    eip = 0x80484a9 in main (myprog.c:47); saved eip 0x4006015a
>    called by frame at 0xbffff768
>    source language c.
>    Arglist at 0xbffff728, args: argc=1, argv=0xbffff794
>    Locals at 0xbffff728, Previous frame's sp is 0x0
>    Saved registers:
>     ebp at 0xbffff728, eip at 0xbffff72c
>   (gdb) p $fp
>   $1 = (void *) 0xbffff728
> 
>   nickrob/32 src/gdb/gdb myprog
>   GNU gdb 6.4.50.20060405-cvs
>   Copyright (C) 2006 Free Software Foundation, Inc.
>   ...
>   (gdb) info frame
>   Stack level 0, frame at 0xbffff710:
>    eip = 0x80484a9 in main (myprog.c:47); saved eip 0x4006015a
>    source language c.
>    Arglist at 0xbffff708, args: argc=1, argv=0xbffff774
>    Locals at 0xbffff708, Previous frame's sp is 0xbffff710
>    Saved registers:
>     ebp at 0xbffff708, eip at 0xbffff70c
>   (gdb) p $fp
>   $1 = (void *) 0xbffff708
> 
> Can this be right?

Yes, current GDB uses the convention that the frame address is the
Canonical Frame Address (CFA) as used by the DWARF 2 Call Frame Info
(CFI).  In general the CFA is the value of the stack pointer when the
current function was called.  Since on i386 the "call" instruction
pushes the return address on the stack, and the "standard" prologue:

push %ebp
mov %esp,%ebp

pushes another 32-bit word onto the stack, which gives the offset
0xbffff710 - 0xbffff708 = 8 that you're seeing.

Note that while %ebp is usually used as a frame pointer register, the
architecture doesn't actually force you to do that.  Nowadays
compilers can and will generate frameless functions, and for those,
the value %ebp is meaningless.

Mark


  reply	other threads:[~2006-04-16 23:33 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-04-17  0:37 Nick Roberts
2006-04-17  1:33 ` Mark Kettenis [this message]
2006-04-17  5:54   ` Nick Roberts
2006-04-17  5:57     ` Daniel Jacobowitz
2006-04-17  6:37       ` Nick Roberts
2006-04-17  7:38       ` Eli Zaretskii
2006-04-17  8:41         ` Vladimir Prus
2006-04-17 14:01         ` Daniel Jacobowitz
2006-04-18  8:40           ` Eli Zaretskii
2006-04-17  7:35   ` Eli Zaretskii
2006-04-17  9:05     ` Mark Kettenis
2006-04-17 11:21       ` Eli Zaretskii
2006-04-17 12:16         ` Mark Kettenis

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=200604162333.k3GNXLeX004661@elgar.sibelius.xs4all.nl \
    --to=mark.kettenis@xs4all.nl \
    --cc=gdb@sources.redhat.com \
    --cc=nickrob@snap.net.nz \
    /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