All of lore.kernel.org
 help / color / mirror / Atom feed
From: Frank Rowand <frank_rowand@mvista.com>
To: law@redhat.com
Cc: John David Anglin <dave@hiauly1.hia.nrc.ca>,
	Richard Hirst <rhirst@linuxcare.com>,
	parisc-linux@puffin.external.hp.com
Subject: Re: [parisc-linux] Single-stepping
Date: Wed, 15 Nov 2000 13:16:28 -0800	[thread overview]
Message-ID: <3A12FD2C.665AEF89@mvista.com> (raw)
In-Reply-To: 15884.974320259@upchuck

law@redhat.com wrote:
> 
>   In message <200011151949.OAA22929@hiauly1.hia.nrc.ca>you write:
>   > >   I've been helping Alan Modra out with kernel changes to support
>   > > single stepping for gdb.  Paul Bame suggested I bounced our ideas
>   > > off you in case you (or anyone else) had any comments.  I havn't
>   > > actually committed my changes yet.
>   > >
>   > > The basic approach is to use the recovery counter to generate
>   > > a trap every instruction.  The scheme is complicated because a
>   > > suspended process may or may not return to user space via an RFI.
>   >
>   > I really don't know enough to comment on the implementation choice.  Why
>   > did you decide on this approach as opposed to inserting breaks and
>   > enabling the taken branch branch trap (T)?  It would appear that the recove
>   > ry
>   > counter was intended to provide software recovery from hardware faults
>   > in fault tolerant systems.  Possibly, Grant could comment on whether
>   > it is actually useful for this purpose.
> Err, we tried that at the UofU in our mach port to the PA -- there's a problem
> with that scheme, though I don't remember precisely what it was.  I believe
> there were cases where the recovery counter doesn't trigger a trap, possibly
> due to nullified instructions.
> 
> You might look at the UofU BSD code, which I believe used breakpoints and
> branch taken traps instad.
> 
> jeff
> 

I implemented two different single step algorithms for a a _kernel_ debugger
for hp-ux.  The algorithm used could be chosen by a compile switch, because
each method had cases that weren't handled well - for some debugging tasks
one algorithm was superior to the other.  Part of my problem with the
recovery counter was that other services in the hp-ux kernel also used the
recovery counter.

I liked the recovery counter method better than my second method (but had to
deal with collisions with the other kernel services).  My second method was
to insert a breakpoint at the target of the single step.  It's a pain to do
that because of issues with delay slots, branching, and nullification.

I guess the point of all this rambling is to say that the recovery counter has
been successfully used by a debugger for single stepping.

-Frank
-- 
Frank Rowand <frank_rowand@mvista.com>
MontaVista Software, Inc

  reply	other threads:[~2000-11-15 21:14 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2000-11-15 18:48 [parisc-linux] Single-stepping Richard Hirst
2000-11-15 19:49 ` John David Anglin
2000-11-15 20:30   ` law
2000-11-15 21:16     ` Frank Rowand [this message]
2000-11-15 21:47       ` Stan Sieler
2000-11-15 21:08   ` Stan Sieler
2000-11-16 12:09   ` Richard Hirst

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=3A12FD2C.665AEF89@mvista.com \
    --to=frank_rowand@mvista.com \
    --cc=dave@hiauly1.hia.nrc.ca \
    --cc=frowand@mvista.com \
    --cc=law@redhat.com \
    --cc=parisc-linux@puffin.external.hp.com \
    --cc=rhirst@linuxcare.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.