"Will Deacon" <will.dea...@arm.com> wrote on 02/11/2011 10:13:01 AM:
> I don't have a pandaboard, so I'd be interested to see if the code
> works there. I developed it using ARM boards, so the versatile express
> is a known good target.

I've now got it working reliably on on Versatile Express, after fixing
a couple of bugs on the GDB side (both in the HW-watchpoint patch, and
in common GDB code).  The testsuite now passes with no regressions when
enabling HW watchpoints, except for two tests that require more than one
single watchpoint to be supported.

This raises another couple of issues/questions, however:

- In testing on Versatile Express, I noticed what appears to be SMP
  related bugs in handling regular software breakpoints: occasionally,
  software breakpoints simply are not hit and execution continues as if
  the underlying code had not been changed at all.  This symptom
  completely goes away if GDB and the debugged process are forced to
  the same CPU using the affinity feature (e.g. with schedtool).

  My guess, just from seeing those symptoms, would be that when inserting
  a software breakpoint via ptrace, not all i-caches on all CPUs are
  reliably flushed ...   Any thoughts on this?

- As mentioned above, the kernel currently only supports one single
  watchpoint to be active at a time, even though hardware might support
  multiple ones.  The reason seems to be that when a watchpoint triggers,
  the kernel cannot figure out which one it was (if there's more than one
  choice).

  This is a bit unfortunate, given that GDB will attempt to insert two
  or more watchpoints in many interesting cases (e.g. a "watch *p"
  command will insert *two* low-level watchpoints, one at the address
  of p, and one at the address where p (currently) points to).

  In addition, for regular (write) watchpoints, GDB does not actually
  *require* the underlying hardware/kernel to specify which watchpoint
  was hit; GDB is able to find out by itself by checking whether the
  values at any of the currently active locations actually changed.
  (For read/access type watchpoints, GDB does require that underlying
  support -- but those are much more rarely used anyway.)

  Do you see any chance of improving upon the current behaviour?

- Finally, I noticed when reading kernel code that under some
  circumstances, the kernel will automatically do a single step to
  get off a watchpoint that was just hit.  However, this does not
  happen for user-space watchpoints installed via ptrace, right?
  (Just wanting to confirm; since GDB currently does that single
  step itself -- we don't want *both* kernel and GDB to issue a
  single step each ...)

I haven't gotten to looking further into other hardware (IGEP,
Panda) -- that's next on the list.


Mit freundlichen Gruessen / Best Regards

Ulrich Weigand

--
  Dr. Ulrich Weigand | Phone: +49-7031/16-3727
  STSM, GNU compiler and toolchain for Linux on System z and Cell/B.E.
  IBM Deutschland Research & Development GmbH
  Vorsitzender des Aufsichtsrats: Martin Jetter | Geschäftsführung: Dirk
Wittkopp
  Sitz der Gesellschaft: Böblingen | Registergericht: Amtsgericht
Stuttgart, HRB 243294


_______________________________________________
linaro-toolchain mailing list
linaro-toolchain@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-toolchain

Reply via email to