This is the mail archive of the gdb@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: Debugging big-endian ARM target from little-endian host



-----Original Message-----
From: Simon Marchi <simon.marchi@polymtl.ca> 
Sent: Thursday, February 28, 2019 6:02 AM
To: Jeff Wandling <JWandling@blueorigin.com>
Cc: gdb@sourceware.org
Subject: Re: Debugging big-endian ARM target from little-endian host

<simon>
Do "set debug remote 1" and then "continue" so that you hit your breakpoint.  Towards the end of the debug output, you should see a vCont;c packet, with a "stop reply" packet (assuming JLink supports the vCont packet, and you use the all-stop mode).  Here's an example with
x86-64:

Sending packet: $vCont;c:p209a.-1#da...Packet received: 
T05swbreak:;06:10ddffffff7f0000;07:10ddffffff7f0000;10:0c46555555550000;thread:p209a.209a;core:0;

In the response, you can see a few pairs of register number/register values.  Since you know the PC you expect your program to stop at, it should be fairly easy to spot the PC register.  The value should be in big endian, in your case.  In my case, 10:0c46555555550000 corresponds to the PC value in little endian:

(gdb) p $pc
$1 = (void (*)()) 0x55555555460c <main+4>

If you have trouble interpreting the debug remote output, pastebin it and send the link.
</simon>

Results:

https://gist.github.com/jwandblue/e1ede3f41a4e7effa7e80d5066c96724

The interesting result was the JLinkGDBServer doesn't emit the "vCont" packet unless I am misreading the result.

I'm boxed into a corner since I have a SEGGER JLink dongol and so choosing to use JLinkGDBServer is not arbitrary.





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