This is the mail archive of the
gdb@sources.redhat.com
mailing list for the GDB project.
Re: PC and PSR on 26-bit ARM
> I'm trying to make GDB work happily on NetBSD/arm26, which runs on ancient
> ARM processors, where the PC and PSR share R15. As far as I can tell, the
> code in arm-linux-nat.c, when fetching registers subprocess on a 26-bit
> CPU, puts the PC in registers[PC_REGNUM], and the PC+PSR in
> registers[PS_REGNUM]. When putting registers back into the process, it
> sets R15 (PC+PSR) from registers[PC_REGNUM] and ignores
> registers[PS_REGNUM].
>
> I suppose my question is: is this the intended behaviour? i.e. should I:
> (1) do the same on NetBSD,
> (2) accurately emulate a 32-bit CPU in 26-bit mode (splitting and
> merging PC and PSR at the subprocess interface), or
> (3) present GDB with the real state of the CPU?
>
> I think my preference is for (2), since this saves complexity in the rest
> of GDB.
GDB doesn't really care what happens. It has mechanisms (if only Arm
was multi-arched) to handle cases such as 2.
Do arm26 and arm32 run the same binaries? If they do then you probably
want a consistent interface with carefully documented semantics.
Otherwise, the best rule I know of is ``don't lie'' - present GDB with
the real raw CPU state.
Andrew