This is the mail archive of the gdb@sources.redhat.com 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: Unable to step over (n and ni) on mipsel-linux...


Andrew Cagney wrote:

GNU gdb 6.2_2004-08-19-cvs


from the gdb_6_2-branch yesterday.


../gdbcvs/src/configure --build=i686-pc-linux --host=mipsel-linux --target=mipsel-linux --enable-tui=no

Most of the time when I do next or nexti, gdb is treating it as if I did
step or stepi.

I have tracked the problem down to this portion of code:



Sounds like a bug in the MIPS unwind code. Can you build/test with mainline (the fixes won't be backported).



I will try the mainline soon.

Thanks.

The problem is that, after the step-into the callee, the MIPS unwind code is not correctly unwinding back to the caller's frame-ID. As Theodore notes, this is very compiler dependant.



Currently GDB examines the next instruction to see if it is a branch (or
  jal or jalr..) to see where to place a temporary breakpoint for single
stepping.

Instead of stepping into a function and checking to see if we are in a
different frame (settting a breakpoint at the return address location),
why not set the breakpoint at the return location before making the
function call?

That would mean examining every instruction to determine if it is a call - effectively s/w single step. GDB tries to do avoid doing that so that single-step is faster.


By compiler dependant, do you mean the compiler GDB was built with, or
the one that compiled the target code?

For you mipsel-linux-gcc (the one that compiled the target code).


Andrew



Andrew








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