Further problem with 2.95.3 debug info :(
Daniel Jacobowitz
drow@mvista.com
Thu Apr 11 19:11:00 GMT 2002
This one isn't as easy as the last stabs fix. Sometimes, apparently, GCC
elides the first line number instead of shifting it later. As a result,
breakpoints on the function now stop in a yet wronger location. Example:
main:
.LBB10:
pushl %ebp
movl %esp,%ebp
subl $2044,%esp
pushl %edi
pushl %esi
pushl %ebx
.stabn 68,0,90,.LM21-main
.LM21:
addl $-12,%esp
pushl $toplevel
call _setjmp
addl $16,%esp
testl %eax,%eax
je .L174
.stabn 68,0,92,.LM22-main
.LM22:
So we break after the first call to setjmp. Which is, the astute observer
notes, inside of an `if'. In this case, it's a not-usually-taken `if' and
we stop at the completely wrong time.
There's no fixing this with the debug info we have, IMO. GCC 3.0 gets the
debug info right and we then handle it correctly. I've no idea what prompts
GCC to do which (although it seems to show up more on PowerPC than on i386,
I've seen it on both).
So, this message is just in case anyone has a brilliant idea for handling
this, or to save people a little time on bug reports. The only thing I can
think of is to let a prologue scanner hit the panic button and say "no, the
prologue really DOES end between lines!".
--
Daniel Jacobowitz Carnegie Mellon University
MontaVista Software Debian GNU/Linux Developer
More information about the Gdb
mailing list