This is the mail archive of the frysk@sourceware.org mailing list for the frysk project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [SCM] master: 2008-03-26 Phil Muldoon <pmuldoon@redhat.com>


pmuldoon@sourceware.org wrote:

This commit defines the lower level interfaces, via the ISA to the hardware debug register APIs. I committed it a bit early as I have a few fixes (location of the debug status register, 4 instead of 7 accessible registers and so on). The ISA code will abstract the ISA specific knowledge required to massage the individual debug registers, and the debug status register.

Regards

Phil
The branch, master has been updated
       via  00345416a6028de2e659b7a01d3b1c54adca694f (commit)
      from  9c6237cfe7385cb4d444a00c92de1a7668cae0ed (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email.

- Log -----------------------------------------------------------------
commit 00345416a6028de2e659b7a01d3b1c54adca694f
Author: Phil Muldoon <pmuldoon@redhat.com>
Date:   Wed Mar 26 13:03:25 2008 +0000

2008-03-26 Phil Muldoon <pmuldoon@redhat.com>
* Isa.java (setWatchpoint): New Interface
(deleteWatchpoint): Ditto.
(getWatchpointCount): Ditto.
* LinuxX8664.java: Add above interfaces.
* LinuxIA32.java: Ditto.
* IsaPowerPC.java: Ditto.


-----------------------------------------------------------------------

Summary of changes:
 frysk-core/frysk/proc/live/ChangeLog       |    9 ++++++
 frysk-core/frysk/proc/live/Isa.java        |   28 ++++++++++++++++++++
 frysk-core/frysk/proc/live/IsaPowerPC.java |   37 ++++++++++++++++++++++++++
 frysk-core/frysk/proc/live/LinuxIA32.java  |   39 +++++++++++++++++++++++++++-
 frysk-core/frysk/proc/live/LinuxX8664.java |   35 +++++++++++++++++++++++++
 5 files changed, 147 insertions(+), 1 deletions(-)

First 500 lines of diff:
diff --git a/frysk-core/frysk/proc/live/ChangeLog b/frysk-core/frysk/proc/live/ChangeLog
index c269998..0175fca 100644
--- a/frysk-core/frysk/proc/live/ChangeLog
+++ b/frysk-core/frysk/proc/live/ChangeLog
@@ -1,3 +1,12 @@
+2008-03-26 Phil Muldoon <pmuldoon@redhat.com>
+
+ * Isa.java (setWatchpoint): New Interface
+ (deleteWatchpoint): Ditto.
+ (getWatchpointCount): Ditto.
+ * LinuxX8664.java: Add above interfaces.
+ * LinuxIA32.java: Ditto.
+ * IsaPowerPC.java: Ditto.
+
2008-03-18 Andrew Cagney <cagney@redhat.com>
* LinuxPtraceHost.java (removeProc(LinuxPtraceProc)): Replace
diff --git a/frysk-core/frysk/proc/live/Isa.java b/frysk-core/frysk/proc/live/Isa.java
index 41bb1c0..3ea7fba 100644
--- a/frysk-core/frysk/proc/live/Isa.java
+++ b/frysk-core/frysk/proc/live/Isa.java
@@ -51,6 +51,34 @@ import inua.eio.ByteBuffer;
public interface Isa {
+
+ /**
+ * Builds a watchpoint. Takes a task, an address, a + * range and a register index.
+ *
+ * @return boolean whether the watchpoint
+ * was set succesfully.
+ */
+ boolean setWatchpoint(Task task, long addr, + long range, int index);
+
+ /**
+ * Deletes a watchpoint. Takes a task, and a + * register index.
+ *
+ * @return boolean whether the watchpoint
+ * was deleted succesfully.
+ */
+ boolean deleteWatchpoint(Task task, int index);
+
+
+ /**
+ * Returns number of watchpoints for this architecture
+ *
+ * @return int number of usable watchpoints.
+ */
+ int getWatchpointCount();
+
/**
* Get the breakpoint instruction.
* diff --git a/frysk-core/frysk/proc/live/IsaPowerPC.java b/frysk-core/frysk/proc/live/IsaPowerPC.java
index a69ca46..39120cf 100644
--- a/frysk-core/frysk/proc/live/IsaPowerPC.java
+++ b/frysk-core/frysk/proc/live/IsaPowerPC.java
@@ -58,6 +58,43 @@ abstract class IsaPowerPC implements Isa {
new Instruction(new byte[] { (byte)0x7d, (byte)0x82, (byte)0x10, (byte)0x08 }, false);
+
+ // Architecture Watchpoint Count
+ private final int NoOfWatchpoints = 1;
+
+ /**
+ * Builds a watchpoint. Takes a task, an address a + * range and a register index.
+ *
+ * @return boolean whether the watchpoint
+ * was set succesfully.
+ */
+ public final boolean setWatchpoint(Task task, long addr, + long range, int index) {
+ throw new RuntimeException("Watchpoints not supported on this arch");
+ }
+
+ /**
+ * Deletes a watchpoint. Takes a task and a + * range.
+ *
+ * @return boolean whether the watchpoint
+ * was deleted succesfully.
+ */
+ public final boolean deleteWatchpoint(Task task, int index) {
+ throw new RuntimeException("Watchpoints not supported on this arch");
+ }
+
+ /**
+ * Returns number of watchpoints for this architecture
+ *
+ * @return int number of usable watchpoints.
+ */
+ public final int getWatchpointCount() {
+ return NoOfWatchpoints;
+ }
+
+
/**
* Get the breakpoint instruction of the PowerPC platform.
*/
diff --git a/frysk-core/frysk/proc/live/LinuxIA32.java b/frysk-core/frysk/proc/live/LinuxIA32.java
index fe11aa5..184a5d9 100644
--- a/frysk-core/frysk/proc/live/LinuxIA32.java
+++ b/frysk-core/frysk/proc/live/LinuxIA32.java
@@ -51,7 +51,41 @@ class LinuxIA32 implements Isa {
private static final Instruction IA32Breakpoint
= new Instruction(new byte[] { (byte)0xcc }, false);
- +
+ // Architecture Watchpoint Count
+ private final int NoOfWatchpoints = 7;
+
+ /**
+ * Builds a watchpoint. Takes a task, an address, a + * range and a register index.
+ *
+ * @return boolean whether the watchpoint
+ * was set succesfully.
+ */
+ public final boolean setWatchpoint(Task task, long addr, + long range, int index) {
+ throw new RuntimeException("Watchpoints not supported on this arch");
+ }
+
+ /**
+ * Deletes a watchpoint. Takes a task, and a range.
+ *
+ * @return boolean whether the watchpoint
+ * was deleted succesfully.
+ */
+ public final boolean deleteWatchpoint(Task task, int index) {
+ throw new RuntimeException("Watchpoints not supported on this arch");
+ }
+
+ /**
+ * Returns number of watchpoints for this architecture
+ *
+ * @return int number of usable watchpoints.
+ */
+ public final int getWatchpointCount() {
+ return NoOfWatchpoints;
+ }
+
/**
* Get the breakpoint instruction for IA32.
*/
@@ -154,10 +188,13 @@ class LinuxIA32 implements Isa {
return result;
}
+
private static LinuxIA32 isa;
static LinuxIA32 isaSingleton () {
if (isa == null)
isa = new LinuxIA32 ();
return isa;
}
+
+
}
diff --git a/frysk-core/frysk/proc/live/LinuxX8664.java b/frysk-core/frysk/proc/live/LinuxX8664.java
index 8ee4876..3dd3dfc 100644
--- a/frysk-core/frysk/proc/live/LinuxX8664.java
+++ b/frysk-core/frysk/proc/live/LinuxX8664.java
@@ -50,6 +50,41 @@ import frysk.proc.Auxv;
class LinuxX8664 implements Isa {
private static final Instruction X8664Breakpoint
= new Instruction(new byte[] { (byte)0xcc }, false);
+
+
+ // Architecture Watchpoint Count
+ private final int NoOfWatchpoints = 7;
+
+ /**
+ * Builds a watchpoint. Takes a task, an address, a + * range and a register index.
+ *
+ * @return boolean whether the watchpoint
+ * was set succesfully.
+ */
+ public final boolean setWatchpoint(Task task, long addr, + long range, int index) {
+ throw new RuntimeException("Watchpoints not supported on this arch");
+ }
+
+ /**
+ * Deletes a watchpoint. Takes a task, and a range.
+ *
+ * @return boolean whether the watchpoint
+ * was deleted succesfully.
+ */
+ public final boolean deleteWatchpoint(Task task, int index) {
+ throw new RuntimeException("Watchpoints not supported on this arch");
+ }
+
+ /**
+ * Returns number of watchpoints for this architecture
+ *
+ * @return int number of usable watchpoints.
+ */
+ public final int getWatchpointCount() {
+ return NoOfWatchpoints;
+ }
/**
* Get the breakpoint instruction for X8664.



hooks/post-receive
--
frysk system monitor/debugger


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]