From: Jim Wilson <jimw@sifive.com>
To: Sebastian Huber <sebastian.huber@embedded-brains.de>
Cc: gdb-patches@sourceware.org, Andrew Burgess <andrew.burgess@embecosm.com>
Subject: Re: [PATCH] RISC-V: Don't decrement pc after break.
Date: Mon, 23 Jul 2018 15:38:00 -0000 [thread overview]
Message-ID: <CAFyWVab6oUetvAkAMq4u5Dvb1hn2WHJ4GxjtgtNA05XMNRAOfw@mail.gmail.com> (raw)
In-Reply-To: <71103f9b-f83b-7e68-1d56-f30038473936@embedded-brains.de>
On Mon, Jul 23, 2018 at 3:30 AM, Sebastian Huber
<sebastian.huber@embedded-brains.de> wrote:
> Hello Jim,
>
> this patch broke debugging with Qemu (qemu-system-riscv64, Git commit
> 6598f0cdad6acc6674c4f060fa46e537228c2c47). The GDB error message is:
>
> Register 3921 is not available
I don't understand how rtems debugging could have worked without this
patch. 3921 minus 65 in hex is 0xf10 which is the legacy misa. The
legacy misa is checked only if a read of the v1.9.1 misa fails. If
the read of both the v1.9.1 misa and the legacy misa fails, then you
get a confusing error stating that register 3921 is not available.
But the real problem is that both misa reads failed. The ISA spec
says that misa must exist and be readable, although an implementation
is allowed to return 0 when it is read. Gdb uses misa to determine
target features. Gdb does handle the 0 read case by deducing info
from ELF header flags instead of the misa register.
If you have a rtems target support, then it must handle reading the
misa register. If is OK to just return 0. That is what my linux port
does for now. At some point I may try adding a linux kernel patch to
add ptrace support for reading misa. If rtems is running in machine
mode, you can probably read misa directly. Otherwise, you would need
something like a linux ptrace to read it. For embedded targets using
openocd, they can just read misa directly.
The problem with misa is easy to miss, as gdb only tries to read misa
if you execute a command that requires info about the target, such as
trying to use hardware floating point. Actually, one of my other
patches, the one to remove the pc decrement after a break, modified
the code so that we try to read misa when checking to see if
compressed breakpoints could be used. Before it was only checking ELF
headers for this, which wasn't right. This is probably the patch that
exposed the bug in your rtems target support.
Jim
next prev parent reply other threads:[~2018-07-23 15:38 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-07-17 0:12 Jim Wilson
2018-07-17 15:37 ` Andrew Burgess
2018-07-23 10:31 ` Sebastian Huber
2018-07-23 15:38 ` Jim Wilson [this message]
2018-07-23 17:25 ` Sebastian Huber
2018-07-23 23:27 ` Jim Wilson
2018-07-24 6:15 ` Sebastian Huber
2018-07-24 11:41 ` Jim Wilson
2018-07-26 6:30 ` Sebastian Huber
2018-08-03 22:05 ` Palmer Dabbelt
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=CAFyWVab6oUetvAkAMq4u5Dvb1hn2WHJ4GxjtgtNA05XMNRAOfw@mail.gmail.com \
--to=jimw@sifive.com \
--cc=andrew.burgess@embecosm.com \
--cc=gdb-patches@sourceware.org \
--cc=sebastian.huber@embedded-brains.de \
/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