public inbox for frysk-cvs@sourceware.org
help / color / mirror / Atom feed
* [SCM]  master: Fix bz# 5380.
@ 2007-11-21  5:08 rmoseley
  0 siblings, 0 replies; only message in thread
From: rmoseley @ 2007-11-21  5:08 UTC (permalink / raw)
  To: frysk-cvs

The branch, master has been updated
       via  c6b2144b5562906445054a6fb3d991afa4356a7c (commit)
      from  25d68f5c3c6ad80284c5542dd5e31101265e40ae (commit)

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

- Log -----------------------------------------------------------------
commit c6b2144b5562906445054a6fb3d991afa4356a7c
Author: Rick Moseley <rmoseley@redhat.com>
Date:   Tue Nov 20 23:08:28 2007 -0600

    Fix bz# 5380.
    
     * PeekCommand.java: Fix bz# 5380(make peek command
     work with all types of Hosts).
     * LoadCommand.java: Ditto.
     * CLI.java; Ditto.
     * TestPeekCommand.java: Ditto.

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

Summary of changes:
 frysk-core/frysk/hpd/CLI.java             |   23 ---------
 frysk-core/frysk/hpd/ChangeLog            |    8 +++
 frysk-core/frysk/hpd/LoadCommand.java     |    3 +-
 frysk-core/frysk/hpd/PeekCommand.java     |   73 ++++++++++++++++-------------
 frysk-core/frysk/hpd/TestPeekCommand.java |   32 +++++++++---
 5 files changed, 73 insertions(+), 66 deletions(-)

First 500 lines of diff:
diff --git a/frysk-core/frysk/hpd/CLI.java b/frysk-core/frysk/hpd/CLI.java
index c7374e2..1c5ef5c 100644
--- a/frysk-core/frysk/hpd/CLI.java
+++ b/frysk-core/frysk/hpd/CLI.java
@@ -55,7 +55,6 @@ import frysk.debuginfo.DebugInfoFrame;
 import frysk.debuginfo.DebugInfoStackFactory;
 import frysk.proc.Proc;
 import frysk.proc.Task;
-import frysk.proc.Host;
 import frysk.rt.ProcTaskIDManager;
 import frysk.stepping.SteppingEngine;
 import frysk.stepping.TaskStepEngine;
@@ -468,26 +467,4 @@ public class CLI {
         }
         return ptset;
     }
-    
-    /**
-     * Sets the LinuxExeHost for an executable file so we can access its memory
-     * via the "peek" command.
-     * 
-     */
-    Host exeHost;
-    
-    public void setExeHost (Host host) {
-	this.exeHost = host;
-    }
-    
-    /**
-     * Sets the LinuxExeProc for an executable file so we can access its memory
-     * via the "peek" command.
-     * 
-     */
-    Proc exeProc;
-    
-    public void setExeProc (Proc proc) {
-	this.exeProc = proc;
-    }
 }
diff --git a/frysk-core/frysk/hpd/ChangeLog b/frysk-core/frysk/hpd/ChangeLog
index 460da66..26827e1 100644
--- a/frysk-core/frysk/hpd/ChangeLog
+++ b/frysk-core/frysk/hpd/ChangeLog
@@ -1,5 +1,13 @@
 2007-11-20  Rick Moseley  <rmoseley@redhat.com>
 
+	* PeekCommand.java: Fix bz# 5380(make peek command
+	work with all types of Hosts).
+	* LoadCommand.java: Ditto.
+	* CLI.java; Ditto.
+	* TestLoadCommand.java: Ditto.
+
+2007-11-20  Rick Moseley  <rmoseley@redhat.com>
+
 	* RunCommand.java: Clear loadedProcs HashMap when done.
 	* TestLoadCommand.java: Add test for the above change.
 
diff --git a/frysk-core/frysk/hpd/LoadCommand.java b/frysk-core/frysk/hpd/LoadCommand.java
index 38fd2d0..8ec7fd8 100644
--- a/frysk-core/frysk/hpd/LoadCommand.java
+++ b/frysk-core/frysk/hpd/LoadCommand.java
@@ -78,8 +78,7 @@ public class LoadCommand extends ParameterizedCommand {
 
 	Host exeHost = new LinuxExeHost(Manager.eventLoop, executableFile);
 	Proc exeProc = frysk.util.Util.getProcFromExeFile(exeHost);
-	cli.setExeHost(exeHost);
-	cli.setExeProc(exeProc);
+	
 	int procID = cli.idManager.reserveProcID();
 
 	cli.idManager.manageProc(exeProc, procID);
diff --git a/frysk-core/frysk/hpd/PeekCommand.java b/frysk-core/frysk/hpd/PeekCommand.java
index 6cf1580..22d8db4 100644
--- a/frysk-core/frysk/hpd/PeekCommand.java
+++ b/frysk-core/frysk/hpd/PeekCommand.java
@@ -39,17 +39,14 @@
 
 package frysk.hpd;
 
-import java.io.PrintWriter;
 import inua.eio.ByteBuffer;
-import frysk.proc.Proc;
-import frysk.proc.ProcId;
 import frysk.proc.Task;
+import java.util.Iterator;
 import java.util.List;
 
 /**
  * PeekCommand handles the "peek memory-location" command on the fhpd
- * commandline.  This command is only used after a "load" command has
- * been issued.
+ * commandline.
  *
  */
 
@@ -57,40 +54,50 @@ public class PeekCommand extends ParameterizedCommand {
 
     PeekCommand() {
 	super("peek", "peek <memory-location>",
-	      "peek at an executable file's memory");
+	      "peek at a process' memory");
     }
 
     void interpret(CLI cli, Input cmd, Object options) {
-	final PrintWriter output = cli.getPrintWriter();
-	if (cmd.size() > 1 ) {
-	    throw new InvalidCommandException("Too many parameters");
+	if (cmd.size() > 1) {
+	    throw new InvalidCommandException("Too many parameters.");
 	}
-	if (cli.exeHost == null) {
-	    throw new InvalidCommandException("No executable loaded");
-	}
-	
-	Proc proc = cli.exeHost.getProc(new ProcId(0));
-	Task task = proc.getMainTask();
-	
-	ByteBuffer buffer = task.getMemory();
 
-	String memposition = cmd.parameter(0);
-	int radix = 10;
-	if (memposition.lastIndexOf("x") != -1) {
-	    radix = 16;
-	    memposition = memposition.substring(memposition.lastIndexOf("x") + 1);
-	    if (memposition.lastIndexOf("L") != -1)
-		memposition = memposition.substring(0, memposition.lastIndexOf("L"));
-	}
-	
-	try {
-	    long value = Long.parseLong(memposition.trim(), radix);
-	    buffer.position(value);
-	    output.println("The value at " + memposition + " = " + buffer.getUByte());
-	} catch (NumberFormatException nfe) {
-	    System.out.println("NumberFormatException: " + nfe.getMessage());
+	PTSet ptset = cli.getCommandPTSet(cmd);
+	Iterator taskIter = ptset.getTaskData();
+	while (taskIter.hasNext()) {
+	    TaskData taskData = (TaskData) taskIter.next();
+	    Task task = taskData.getTask();
+
+	    ByteBuffer buffer = task.getMemory();
+	    
+	    cli.outWriter.print("[");
+	    cli.outWriter.print(taskData.getParentID());
+	    cli.outWriter.print(".");
+	    cli.outWriter.print(taskData.getID());
+	    cli.outWriter.println("]");
+
+	    String memposition = cmd.parameter(0);
+	    int radix = 10;
+	    if (memposition.lastIndexOf("x") != -1) {
+		radix = 16;
+		memposition = memposition.substring(memposition
+			.lastIndexOf("x") + 1);
+		if (memposition.lastIndexOf("L") != -1)
+		    memposition = memposition.substring(0, memposition
+			    .lastIndexOf("L"));
+	    }
+
+	    try {
+		long value = Long.parseLong(memposition.trim(), radix);
+		buffer.position(value);
+		cli.outWriter.println("The value at " + memposition + " = "
+			+ buffer.getUByte());
+	    } catch (NumberFormatException nfe) {
+		cli.addMessage("NumberFormatException: " + 
+			nfe.getMessage(), Message.TYPE_ERROR);
+	    }
 	}
-	
+
     }
 
     int completer(CLI cli, Input input, int cursor, List completions) {
diff --git a/frysk-core/frysk/hpd/TestPeekCommand.java b/frysk-core/frysk/hpd/TestPeekCommand.java
index c49bc7a..545717f 100644
--- a/frysk-core/frysk/hpd/TestPeekCommand.java
+++ b/frysk-core/frysk/hpd/TestPeekCommand.java
@@ -48,17 +48,33 @@ import frysk.Config;
 public class TestPeekCommand extends TestLib {
     public void testPeekCommand() {
 	e = new HpdTestbed();
-	e.sendCommandExpectPrompt("load " + Config.getPkgDataFile("test-exe-x86").getPath(),
-				  "Loaded executable file.*");
-	e.sendCommandExpectPrompt("peek 0x08048000L",
-				  "The value at 08048000 = 127.*");
+	e.send("load " + Config.getPkgDataFile("test-exe-x86").getPath() + "\n");
+	e.expect(5,"Loaded executable file.*");
+	e.send("peek 0x08048000L\n");
+	e.expect(5, "The value at 08048000 = 127.*");
+	e.close();
     }
 
     public void testPeekCommandError() {
 	e = new HpdTestbed();
-	e.sendCommandExpectPrompt("load " + Config.getPkgDataFile("test-exe-x86").getPath(),
-				  "Loaded executable file.*");
-	e.sendCommandExpectPrompt("peek 08048000",
-				  "Cannot find memory in exe file.*");
+	e.send("load " + Config.getPkgDataFile("test-exe-x86").getPath() + "\n");
+	e.expect(5, "Loaded executable file.*");
+	e.send("peek 08048000\n");
+	e.expect(5, "Cannot find memory in exe file.*");
+	e.close();
+    }
+    
+    public void testTwoLoadedPeekCommand() {
+	e = new HpdTestbed();
+	e.send("load " + Config.getPkgDataFile("test-exe-x86").getPath() + "\n");
+	e.expect(5, "Loaded executable file.*");
+	e.send("load " + Config.getPkgDataFile("test-exe-x86").getPath() + "\n");
+	e.expect(5, "Loaded executable file.*");
+	e.send("peek 0x08048000L\n");
+	e.expect(5, "[0.0]");
+	e.expect(5, "The value at 08048000 = 127.*");
+	e.expect(5, "[0.1]");
+	e.expect(5, "The value at 08048000 = 127.*");
+	e.close();
     }
 }


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


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2007-11-21  5:08 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-11-21  5:08 [SCM] master: Fix bz# 5380 rmoseley

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).