Skip to content
  • Vineet Gupta's avatar
    ARC: Ignore ptrace SETREGSET request for synthetic register "stop_pc" · 5b242828
    Vineet Gupta authored
    
    
    ARCompact TRAP_S insn used for breakpoints, commits before exception is
    taken (updating architectural PC). So ptregs->ret contains next-PC and
    not the breakpoint PC itself. This is different from other restartable
    exceptions such as TLB Miss where ptregs->ret has exact faulting PC.
    gdb needs to know exact-PC hence ARC ptrace GETREGSET provides for
    @stop_pc which returns ptregs->ret vs. EFA depending on the
    situation.
    
    However, writing stop_pc (SETREGSET request), which updates ptregs->ret
    doesn't makes sense stop_pc doesn't always correspond to that reg as
    described above.
    
    This was not an issue so far since user_regs->ret / user_regs->stop_pc
    had same value and both writing to ptregs->ret was OK, needless, but NOT
    broken, hence not observed.
    
    With gdb "jump", they diverge, and user_regs->ret updating ptregs is
    overwritten immediately with stop_pc, which this patch fixes.
    
    Reported-by: default avatarAnton Kolesov <akolesov@synopsys.com>
    Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
    5b242828