This is the mail archive of the 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: RFA/ARM: Switch mode when setting PC

This patch fixes several failures in virtfunc.exp for arm-sim/-mthumb.  The
problem is that the non-virtual thunk for pDe->vg() is emitted in ARM mode
and called via _call_via_r2.  But the rest of the program is Thumb mode, and
nothing tells the simulator (or target; I haven't tested this on hardware
yet but I expect the same result) to switch to ARM.  So it gets very

This is somewhat suboptimal in that if you want, for some reason, to call
something marked as an ARM function with Thumb mode enabled you will have to
set $ps yourself _after_ setting $pc.  I think it's still a good idea,
though.  OK?

(sorry, but I don't understand that paragraph - doesn't that code set the $ps after setting the $pc?)

The ari contains this yellow card:

write pc
Replace write_pc() with get_frame_base_address or get_frame_id; at present the inferior function call code still uses this when doing a DECR_PC_AFTER_BREAK

the concern is with the way write_pc is being called to perform two different operations:

- decrement the pc just after the target stops
- jump to a specific address
As with an inferior function call or jump.

I think it would be better to have two methods so that it's clear that this case only applies when doing a jump.


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