This is the mail archive of the gdb@sourceware.org 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: Frame lost after 'leave' and before 'ret' instruction on i386?


Daniel Jacobowitz wrote:
On Fri, May 16, 2008 at 11:28:20AM -0400, Aleksandar Ristovski wrote:
What happens is, we have restored the stack pointer but gdb is unaware of that fact and tries to unwind using already unwound value...

how is this supposed to work?

Poorly.


The biggest problem, in my opinion, is that GCC emits bogus unwind
info that does not describe epilogues.  I don't know about other
compilers.  So far no one has fixed this in a way that didn't bloat
debug info to an unacceptable size.

When DWARF unwinding is not in use, there's the in_epilogue_p hook.
Prologue analyzers could also detect epilogues using the same
technique.  But this is slow and complicated.


assuming the problem occurs only while single stepping, couldn't we look for 'ret' 'leave' and such and 'figure out' that stack has changed and are now stepping through still the same function but with previous frame?




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