Re: ARM register pages

Shaun Jackman
2005-06-09T16:46:40Z

On 6/8/05, Daniel Jacobowitz <drow@false.org> wrote:
> On Wed, Jun 08, 2005 at 03:00:46PM -0700, Shaun Jackman wrote:
> > Is there an "info registers" command that displays the paged registers
> > for each ARM mode, such as $lr_svc and $lr_abt? GDB doesn't recognize
> > these names on the command line for printing/setting. Could this be a
> > wishlist item?
>
> GDB doesn't even know that these registers exist, yet. The normal ARM
> remote protocol doesn't transfer them, either.

By the "normal ARM remote protocol" do you mean RDP/RDI, or the GDB
remote protocol for ARM? Does the latter know about these registers?
I'm using a BDI2000 JTAG device which speaks the GDB remote protocol
over Ethernet.

> > A "data abort" ARM exception sets the $cpsr to 0x17, the program
> > counter to 0x10, and the $lr_abt to the previous value of the program
> > counter. The backtrace command doesn't work now because (I'm guessing)
> > GDB sees $lr_abt and $sp_abt instead of the $lr_usr and $sp_usr that
> > contain the useful backtrace information. How can I get a useful
> > backtrace after a data abort exception?
>
> GDB doesn't want to do this by default, usually, because they are
> likely to be in different executable images. If they aren't, assuming
> that your abort handler saves the banked lr to the stack, you can
> write DWARF-2 information to describe where it lives.

My data abort handler currently looks like:
abt: b abt
When everything freezes I interrupt the debugger to look at what's
happened. I'd like to get a backtrace of the user mode from this
state.

Cheers,
Shaun