From: Andrew STUBBS <andrew.stubbs@st.com>
To: Mark Kettenis <mark.kettenis@xs4all.nl>
Cc: gdb@sourceware.org
Subject: Re: Breakpoints in delay slots
Date: Fri, 20 Oct 2006 08:42:00 -0000 [thread overview]
Message-ID: <45388BF9.90604@st.com> (raw)
In-Reply-To: <200610191951.k9JJpV7W023082@elgar.sibelius.xs4all.nl>
Mark Kettenis wrote:
> This is because the SH4 can have "data words" in the instruction
> stream isn't it?
No, not if you are saying what I think you are saying, but there can be
data very close to the instructions. It can occur immediately before a
function (I don't know that the compiler does this, but hand written
assembler might), or, due to the small range of offsets available, there
may be a constant pool within the body of the function which the code
branches past.
> As Daniel already mentioned this does sound pretty similar to what
I haven't seen anything from Daniel???? I have found it on the web
archive now though.
> MIPS does. There is however an important difference in that MIPS will
> actually generate a trap on the branch instruction and set a flag in a
> register to indicate that the trap actually occured in the delay slot.
>
> My solution would be to emulate what MIPS does. So in the exception
> handler for the illegal slot exception, check whether you've hit a
> breakpoint. If so report SIGTRAP back to GDB and make sure that if
> you get a continue from GDB, you back up the instruction pointer to
> the branch instruction preceding the delay slot. This will require
> you to implement sh_single_step_through_delay().
How does one fix the problem that GDB doesn't associate the trap with
the breakpoint? Not only will it tell the user there was an unexpected
trap, ignore any conditions or commands, and show the source location as
somewhere else, but it won't take any measures to avoid the breakpoint
on the restart.
Thanks
Andrew
next prev parent reply other threads:[~2006-10-20 8:42 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-10-18 10:59 Andrew STUBBS
2006-10-18 14:04 ` Daniel Jacobowitz
2006-10-18 18:51 ` Michael Snyder
2006-10-19 9:52 ` Andrew STUBBS
2006-10-19 23:20 ` Michael Snyder
2006-10-19 19:51 ` Mark Kettenis
2006-10-20 8:42 ` Andrew STUBBS [this message]
2006-10-22 19:47 ` Mark Kettenis
2006-10-20 8:51 ` Andrew STUBBS
2006-10-20 14:26 ` Daniel Jacobowitz
2006-10-20 21:18 ` Jim Blandy
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=45388BF9.90604@st.com \
--to=andrew.stubbs@st.com \
--cc=gdb@sourceware.org \
--cc=mark.kettenis@xs4all.nl \
/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