From: Christopher Bainbridge <cb0128@my.bristol.ac.uk>
To: "Maciej W. Rozycki" <macro@codesourcery.com>
Cc: gdb@sourceware.org
Subject: Re: [help] Issues with 'g' packet and MIPS - gdb interprets the packet reply wrong
Date: Wed, 22 Oct 2014 10:31:00 -0000 [thread overview]
Message-ID: <54478792.3050009@my.bristol.ac.uk> (raw)
In-Reply-To: <alpine.DEB.1.10.1410212110290.7896@tp.orcam.me.uk>
Many thanks!
It turns out that I mistook the M14000 to be the same as the M14k...
which, annoyingly, they aren't.
So doing:
set architecture mips:isa32r2
has solved my problem.
Thanks a lot!
Chris
On 21/10/14 21:34, Maciej W. Rozycki wrote:
> Hi Christopher,
>
>> I am trying to implement a remote stub for a MIPS cpu (using GDB version 7.8).
>> When GDB asks for the general registers using the 'g' packet, I reply with:
>>
>> 00000000000000000d01000000000000fffdffff00000000000000000080c0bf30000000f0fec0bf000000002e0000000000000000000000000000008080808000000000000000000000000000000000000000000000000000000000000000000000000000000000000001800000000000000000e8fec0bf00000000702ec0bf0000000000000000000000000000000000000000702ec0bf
>>
>> As each register is 32 bits (represented by 8 hex characters), this should be
>> all the registers up to and including the PC.
> What makes you assume the registers are 32 bits each?
>
>> However, GDB prints this out:
>>
>> info reg
>> zero at v0 v1 a0 a1 a2 a3
>> R0 00000000 0000010d fffffdff 00000000 00000030 00000000 00000000 00000000
>> t0 t1 t2 t3 t4 t5 t6 t7
>> R8 00000000 00000000 00000000 00000000 00000000 80010000 00000000 00000000
>> s0 s1 s2 s3 s4 s5 s6 s7
>> Sending packet: $p13#d4...Ack
>> Packet received: 00000000
>> Sending packet: $p14#d5...Ack
>> Packet received: 00000000
>> Sending packet: $p15#d6...Ack
>> Packet received: 00000000
>> Sending packet: $p16#d7...Ack
>> Packet received: 00000000
>> Sending packet: $p17#d8...Ack
>> Packet received: 00000000
>> R16 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
>> t8 t9 k0 k1 gp sp s8 ra
>> Sending packet: $p18#d9...Ack
>> Packet received: 00000000
>> Sending packet: $p19#da...Ack
>> Packet received: 00000000
>> Sending packet: $p1a#02...Ack
>> Packet received: 00000180
>> Sending packet: $p1b#03...Ack
>>
>> etc
>>
>> This looks to be that it is determining the size of each register incorrectly,
>> and is thus asking for more registers using the 'p' packet.
>>
>> Is this a bug on my end or in GDB?
>> I use the command
>>
>> set processor mips:14000
>>
>> beforehand, as this is the processor we're using.
> You mean:
>
> (gdb) set architecture mips:14000
>
> I presume, right?
>
> The R14000 is a 64-bit processor so its registers are 64-bit and will be
> treated as such by default by GDB. You may be able to limit the width of
> registers expected by selecting a 32-bit processor instead or by selecting
> a 32-bit ABI such as `o32'. The latter can be done with:
>
> (gdb) set mips abi o32
>
> or by selecting a file to debug that has been built for that ABI.
>
> Please note that this is a grey area though, with a bare-metal stub you
> should be really exchanging registers with GDB in their native sizes and
> letting GDB truncate and extend them as required depending on the ABI used
> by the program being debugged. GDB is already capable of doing that,
> however in order to make use of that capability both the stub and GDB
> would have to support XML register descriptions which is something that
> owing to the vast number of CP0 register set variants in the MIPS
> architecture has never been implemented. So in fact you may be hitting
> problems regardless of the ABI selection noted above.
>
> You can always determine the widths of registers GDB expects with the:
>
> (gdb) maintenance print registers
>
> command -- see the `Type' column on the right for the internal type used
> and note that the registers exchanged with a remote stub are those in the
> low half of indices (`Nr' == `Rel'), the so called "raw registers".
>
> HTH,
>
> Maciej
prev parent reply other threads:[~2014-10-22 10:31 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-10-21 11:15 Christopher Bainbridge
2014-10-21 20:34 ` Maciej W. Rozycki
2014-10-22 10:31 ` Christopher Bainbridge [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=54478792.3050009@my.bristol.ac.uk \
--to=cb0128@my.bristol.ac.uk \
--cc=gdb@sourceware.org \
--cc=macro@codesourcery.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox