Re: gcc-4.8+ and R10000+

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Joshua,

 I can't help you with the problem, but I can confirm one of your guesses:

> I am guessing at a few things here:
> 
> - Because ll/sc are atomic, gdb doesn't let you step through them, which is
> why the instruction pointer jumps over the 'li' and 'sc' insns.

-- this is exactly the case, GDB tries to be smart enough and when it sees 
an LL or LLD instruction it examines code that follows to find a matching 
SC or SCD instruction and any other exit points from the atomic section 
and sets internal breakpoints correctly to let the code fragment run at 
the full speed even if single stepping.  Otherwise the exception taken at 
each single step would cause the conditional store instruction to always 
fail -- which might not be a big issue if you were knowingly stepping code 
e.g. with `stepi', but would cause big harm in implicit stepping through 
unknown or unrelated code such as when a software watchpoint is active.

 See `deal_with_atomic_sequence' in gdb/mips-tdep.c if curious about the 
details.

  Maciej





[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux