This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: RFC: Use the ARM CPSR as a fallback to determine ARM/Thumb
- From: Richard Earnshaw <rearnsha at arm dot com>
- To: Daniel Jacobowitz <drow at false dot org>
- Cc: gdb-patches at sourceware dot org, Shaun Jackman <sjackman at gmail dot com>
- Date: Tue, 21 Feb 2006 11:05:13 +0000
- Subject: Re: RFC: Use the ARM CPSR as a fallback to determine ARM/Thumb
- References: <20060220214918.GA28798@nevyn.them.org>
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.