This is the mail archive of the gdb-patches@sourceware.org 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: RFC: Use the ARM CPSR as a fallback to determine ARM/Thumb


On Mon, 2006-02-20 at 21:49, Daniel Jacobowitz wrote:
> I'm fishing for comments on this change.  In arm_pc_is_thumb, if we can not
> find a symbol covering the supplied PC, we assume ARM mode; it seems that it
> would be strictly more useful to assume the current mode.
> 
> This patch _should not be used_ as is!  Paul Brook cleverly noticed that
> this will mess up breakpoint_from_pc when removing breakpoints, causing us
> to insert 2-byte breakpoints and remove 4-byte ones across a mode switch.
> I'm going to have to mess with the target_remove_breakpoint interface
> to fix that, so I wanted to get opinions on this patch first before I dig
> in.
> 
> This is still a somewhat creepy thing to do.  You can find quotes of me in
> the gdb@ list archives saying that this is "the way to madness".  However,
> I've been debugging some code which jumps to Thumb-mode routines in ROM
> today, and my GDB doesn't yet have symbol information for the ROM code; so
> I'm well down the way to madness without this patch, and it's somewhat
> better with.
> 

I can sympathise... :-)  Also note that for a lot of ARM users,
defaulting to ARM is exactly the wrong choice, since all their code is
Thumb (with the possible exception of some start-up code and other small
trampolines).  I think that guessing based on the current CPSR is a
better guess than just ARM, if you can sort out the 'what we guessed
last time we looked at this address problem...'.

> Maybe there should be a "set" option for the default when no symbol is
> found, allowing the user to throttle this back to ARM-only if that works
> better for them?

I certainly think we need a set option, but it's more complex than that,
since I think it needs probably four states:

arm        - force to ARM mode even if things look otherwise.
thumb      - force to Thumb mode even if things look otherwise.
auto-arm   - Try to work it out, but guess ARM if unknown
auto-thumb - Try to work it out, but guess Thumb if unknown

Another approach would be some augmentation to a memory-region type
command, something like

add code-region [arm|thumb|auto-arm|auto-thumb] <base> [+<extent>|<limit>]

R.


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