Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Mark Salter <msalter@redhat.com>
To: eliz@is.elta.co.il
Cc: kettenis@science.uva.nl, msnyder@cygnus.com,
	gdb-patches@sources.redhat.com
Subject: Re: [PATCH]: Make Linux use the new unified x86 watchpoint support
Date: Wed, 28 Mar 2001 08:06:00 -0000	[thread overview]
Message-ID: <200103281607.f2SG7hW11519@deneb.localdomain> (raw)
In-Reply-To: <Pine.SUN.3.91.1010328153541.6388B-100000@is>

>>>>> Eli Zaretskii writes:

> On Wed, 28 Mar 2001, Mark Salter wrote:

>> > Sorry, I don't understand: why does reading a watched region generate
>> > an error?  At least in the x86 implementation, watchpoints are set to
>> > be task-local, so reading the data from GDB, which is another process,
>> > should not produce any errors.  Am I missing something?
>> 
>> I'm using a remote target which has global hw watchpoints and no OS.
>> The remote target still has the watchpoints installed when gdb tries
>> to read the area being watched. I don't know. Maybe the target stub
>> should take it upon itself to remove the watchpoints before telling
>> gdb it stopped?

> Is there any reason that you can't define HAVE_NONSTEPPABLE_WATCHPOINT 
> (or some of its other brethren; see infrun.c) and get GDB to DTRT for 
> your target?

Hmm. So, what are the meanings of HAVE_NONSTEPPABLE_WATCHPOINT and
HAVE_STEPPABLE_WATCHPOINT? It seems if you have one, you don't have
the other, but infrun.c doesn't see it that way. The thing is that
the hw watchpoints on this architecture will not trap until the insn
which triggers the watchpoint finishes execution. That is, the PC 
reported to GDB is for the insn just past the insn which triggered
the watchpoint.

Anyway, if I don't define either, and debug this app:

  int foo = 3;

  main()
  {
     printf("%d\n", foo);
  }

I get this:

  (gdb) rwatch foo
  Hardware read watchpoint 1: foo
  (gdb) c
  Continuing.
  Error evaluating expression for watchpoint 1
  Cannot access memory at address 0xa0028000
  Watchpoint 1 deleted.
  0xa0020028 in main () at wtest.c:6
  (gdb) 

Note that gdb stopped at the line that referenced the watched variable.
The only problem is the error message.

If I define HAVE_NONSTEPPABLE_WATCHPOINT, I get:

  (gdb) c
  Continuing.
  Hardware read watchpoint 1: foo

  Value = 3
  0xa0020c4c in printf () at ....
  (gdb)

Note that gdb stopped inside printf. This seems suboptimal but at least
there's not error.

I didn't try HAVE_CONTINUABLE_WATCHPOINT or HAVE_STEPPABLE_WATCHPOINT because
I can't step or continue past insns that trigger watchpoints.

--Mark


  reply	other threads:[~2001-03-28  8:06 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-03-21 18:47 Mark Kettenis
2001-03-26 18:14 ` Michael Snyder
2001-03-27  0:46   ` Mark Kettenis
2001-03-27  8:45     ` Michael Snyder
2001-04-17 17:26     ` Michael Snyder
2001-04-17 23:58       ` Mark Kettenis
2001-03-26 18:35 ` Michael Snyder
2001-03-26 22:57   ` Eli Zaretskii
2001-03-27  1:13     ` Mark Kettenis
2001-03-27  1:31       ` Eli Zaretskii
2001-03-27  2:09         ` Mark Kettenis
2001-03-27  2:20           ` Eli Zaretskii
2001-03-27 10:58             ` Mark Salter
2001-03-28  1:19               ` Eli Zaretskii
2001-03-28  5:10                 ` Mark Salter
2001-03-28  5:39                   ` Eli Zaretskii
2001-03-28  8:06                     ` Mark Salter [this message]
2001-03-29 12:06                       ` Eli Zaretskii
2001-03-29 12:03                         ` Mark Salter
2001-03-27  8:55         ` Michael Snyder
2001-03-27  9:46           ` Eli Zaretskii
2001-03-27  9:55             ` Fernando Nasser
2001-03-27 11:59               ` Michael Snyder
2001-03-27 12:04                 ` Fernando Nasser
2001-03-27 11:58             ` Michael Snyder
2001-03-28  1:31               ` Eli Zaretskii
2001-03-28  2:03               ` Mark Kettenis
2001-03-27  8:52       ` Michael Snyder
2001-03-27 15:51         ` Mark Kettenis
2001-03-27 10:03       ` Andrew Cagney
2001-03-27  8:48     ` Michael Snyder
2001-03-27  9:43       ` Eli Zaretskii
2001-03-27 11:57         ` Michael Snyder
2001-03-28  1:30           ` Eli Zaretskii
2001-03-28 11:53             ` Michael Snyder
2001-03-29 12:06               ` Eli Zaretskii
     [not found] <Pine.SUN.3.91.1010329160617.4915G-100000@is>
2001-03-29 18:15 ` Mark Salter

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=200103281607.f2SG7hW11519@deneb.localdomain \
    --to=msalter@redhat.com \
    --cc=eliz@is.elta.co.il \
    --cc=gdb-patches@sources.redhat.com \
    --cc=kettenis@science.uva.nl \
    --cc=msnyder@cygnus.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