public inbox for frysk-cvs@sourceware.org
help / color / mirror / Atom feed
* [SCM]  master: frysk-core/frysk/bindir/ChangeLog
@ 2008-02-26 20:15 cagney
  0 siblings, 0 replies; 3+ messages in thread
From: cagney @ 2008-02-26 20:15 UTC (permalink / raw)
  To: frysk-cvs

The branch, master has been updated
       via  b9720029b5f6033a9b07693a5b9d019eee9aeb71 (commit)
      from  4124bcd68eec6a7f0765153b6b4f61b43a664385 (commit)

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

- Log -----------------------------------------------------------------
commit b9720029b5f6033a9b07693a5b9d019eee9aeb71
Author: Andrew Cagney <cagney@redhat.com>
Date:   Tue Feb 26 15:11:13 2008 -0500

    frysk-core/frysk/bindir/ChangeLog
    2008-02-26  Andrew Cagney  <cagney@redhat.com>
    
    	* fcatch.java: Update to match CommandlineParser.
    	* fstack.java: Ditto.
    	* ftrace.java: Ditto.
    	* fstep.java: Ditto.
    	* fhpd.java: Ditto.
    
    frysk-core/frysk/hpd/ChangeLog
    2008-02-26  Andrew Cagney  <cagney@redhat.com>
    
    	* LoadCommand.java: Update to match LinuxExeFactory.
    
    frysk-core/frysk/proc/dead/ChangeLog
    2008-02-26  Andrew Cagney  <cagney@redhat.com>
    
    	* LinuxExeFactory.java (createProc(File,String[])): Replace
    	createProc(EventLoop,File,String[]).
    	(createProc(String[])): New.
    	* TestLinuxExe.java: Update.
    
    frysk-core/frysk/util/ChangeLog
    2008-02-26  Andrew Cagney  <cagney@redhat.com>
    
    	* CommandlineParser.java parseCommandFIXME(String[]): Replace
    	parseCommand(String[]).
    	(parseCommand(Proc)): New.
    	(parseCoresFIXME(CoreExePair[])): Replace parseCores(CoreExePair[]).
    	(parseCores(Proc[])): New.
    	* TestCommandlineParser.java: Update.
    	* ProcStopUtil.java: Update to match LinuxExeFactory and above.

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

Summary of changes:
 frysk-core/frysk/bindir/ChangeLog                |    8 ++++
 frysk-core/frysk/bindir/fcatch.java              |    2 +-
 frysk-core/frysk/bindir/fhpd.java                |    4 +-
 frysk-core/frysk/bindir/fstack.java              |    3 +-
 frysk-core/frysk/bindir/fstep.java               |    5 +-
 frysk-core/frysk/bindir/ftrace.java              |    2 +-
 frysk-core/frysk/hpd/ChangeLog                   |    4 ++
 frysk-core/frysk/hpd/LoadCommand.java            |    4 +-
 frysk-core/frysk/proc/dead/ChangeLog             |    7 +++
 frysk-core/frysk/proc/dead/LinuxExeFactory.java  |    8 ++-
 frysk-core/frysk/proc/dead/TestLinuxExe.java     |    4 +-
 frysk-core/frysk/util/ChangeLog                  |   10 +++++
 frysk-core/frysk/util/CommandlineParser.java     |   45 +++++++++++++++++----
 frysk-core/frysk/util/ProcStopUtil.java          |    8 +--
 frysk-core/frysk/util/TestCommandlineParser.java |   43 ++++++++++++---------
 15 files changed, 107 insertions(+), 50 deletions(-)

First 500 lines of diff:
diff --git a/frysk-core/frysk/bindir/ChangeLog b/frysk-core/frysk/bindir/ChangeLog
index ffad219..b361474 100644
--- a/frysk-core/frysk/bindir/ChangeLog
+++ b/frysk-core/frysk/bindir/ChangeLog
@@ -1,3 +1,11 @@
+2008-02-26  Andrew Cagney  <cagney@redhat.com>
+
+	* fcatch.java: Update to match CommandlineParser.
+	* fstack.java: Ditto.
+	* ftrace.java: Ditto.
+	* fstep.java: Ditto.
+	* fhpd.java: Ditto.
+
 2008-02-26  Phil Muldoon  <pmuldoon@redhat.com>
 
 	* fcore.java (addOptions): Rename to 
diff --git a/frysk-core/frysk/bindir/fcatch.java b/frysk-core/frysk/bindir/fcatch.java
index 4e0d871..069c0b0 100644
--- a/frysk-core/frysk/bindir/fcatch.java
+++ b/frysk-core/frysk/bindir/fcatch.java
@@ -65,7 +65,7 @@ public class fcatch {
 	    }
 
 	    //@Override
-	    public void parseCommand(String[] command) {
+	    public void parseCommandFIXME(String[] command) {
 		System.err.println("Entered parseCommand");
 		argString = new StringBuffer(command[0]);
 		for (int i = 1; i < command.length; i++)
diff --git a/frysk-core/frysk/bindir/fhpd.java b/frysk-core/frysk/bindir/fhpd.java
index f59240b..ab55c52 100644
--- a/frysk-core/frysk/bindir/fhpd.java
+++ b/frysk-core/frysk/bindir/fhpd.java
@@ -145,7 +145,7 @@ public class fhpd {
     public static void main (String[] args) {
         CommandlineParser parser = new CommandlineParser ("fhpd") {
                 //@Override
-                public void parseCommand (String[] command) {
+                public void parseCommandFIXME(String[] command) {
                     execFile = new File (command[0]);
                     if (execFile.canRead() == false) {
                         printHelp();
@@ -158,7 +158,7 @@ public class fhpd {
 		    fhpd.procs = procs;
                 }
 
-                public void parseCores(CoreExePair[] corePairs) {
+                public void parseCoresFIXME(CoreExePair[] corePairs) {
                     core = corePairs[0].coreFile;
                     exeFile = corePairs[0].exeFile;
                 }
diff --git a/frysk-core/frysk/bindir/fstack.java b/frysk-core/frysk/bindir/fstack.java
index 9f7bbca..b25b682 100644
--- a/frysk-core/frysk/bindir/fstack.java
+++ b/frysk-core/frysk/bindir/fstack.java
@@ -157,8 +157,7 @@ public final class fstack
     parser = new CommandlineParser("fstack")
     {
       //@Override
-      public void parseCores (CoreExePair[] coreExePairs)
-      {
+      public void parseCoresFIXME(CoreExePair[] coreExePairs) {
        for (int i = 0; i < coreExePairs.length; i++)
          stackCore(coreExePairs[i]);
       }
diff --git a/frysk-core/frysk/bindir/fstep.java b/frysk-core/frysk/bindir/fstep.java
index 01d28c3..e8a783a 100644
--- a/frysk-core/frysk/bindir/fstep.java
+++ b/frysk-core/frysk/bindir/fstep.java
@@ -92,9 +92,8 @@ public class fstep
     final CommandlineParser parser = new CommandlineParser("fstep")
     {
 
-      public void parseCommand (String[] command)
-      {
-        fstep.command = command;
+      public void parseCommandFIXME(String[] command) {
+	  fstep.command = command;
       }
       
     };
diff --git a/frysk-core/frysk/bindir/ftrace.java b/frysk-core/frysk/bindir/ftrace.java
index c9fcfec..98d66e0 100644
--- a/frysk-core/frysk/bindir/ftrace.java
+++ b/frysk-core/frysk/bindir/ftrace.java
@@ -700,7 +700,7 @@ class ftrace
             }
 
             //@Override
-            public void parseCommand (String[] command)
+            public void parseCommandFIXME(String[] command)
             {
              commandAndArguments = new ArrayList();
 
diff --git a/frysk-core/frysk/hpd/ChangeLog b/frysk-core/frysk/hpd/ChangeLog
index 9410dcb..4f2a902 100644
--- a/frysk-core/frysk/hpd/ChangeLog
+++ b/frysk-core/frysk/hpd/ChangeLog
@@ -1,3 +1,7 @@
+2008-02-26  Andrew Cagney  <cagney@redhat.com>
+
+	* LoadCommand.java: Update to match LinuxExeFactory.
+
 2008-02-25  Rick Moseley  <rmoseley@redhat.com>
 
 	* Input.java (getFullCommand): New.
diff --git a/frysk-core/frysk/hpd/LoadCommand.java b/frysk-core/frysk/hpd/LoadCommand.java
index 4bc03ae..f1b3b64 100644
--- a/frysk-core/frysk/hpd/LoadCommand.java
+++ b/frysk-core/frysk/hpd/LoadCommand.java
@@ -46,7 +46,6 @@ import frysk.debuginfo.DebugInfo;
 import frysk.debuginfo.DebugInfoFrame;
 import frysk.debuginfo.DebugInfoStackFactory;
 import frysk.dwfl.DwflCache;
-import frysk.proc.Manager;
 import frysk.proc.Proc;
 import frysk.proc.Task;
 import java.util.List;
@@ -108,8 +107,7 @@ public class LoadCommand extends ParameterizedCommand {
 	    	("File does not exist or is not readable or is not a file.");
 	}
 
-	Proc exeProc = LinuxExeFactory.createProc(Manager.eventLoop,
-						  executableFile,
+	Proc exeProc = LinuxExeFactory.createProc(executableFile,
 						  cmd.stringArrayValue());
 
 	int procID;
diff --git a/frysk-core/frysk/proc/dead/ChangeLog b/frysk-core/frysk/proc/dead/ChangeLog
index eef2273..9f6b5ef 100644
--- a/frysk-core/frysk/proc/dead/ChangeLog
+++ b/frysk-core/frysk/proc/dead/ChangeLog
@@ -1,3 +1,10 @@
+2008-02-26  Andrew Cagney  <cagney@redhat.com>
+
+	* LinuxExeFactory.java (createProc(File,String[])): Replace
+	createProc(EventLoop,File,String[]).
+	(createProc(String[])): New.
+	* TestLinuxExe.java: Update.
+
 2008-02-26  Teresa Thomas  <tthomas@redhat.com>
 
 	* TestLinuxCore.java: Update imports.
diff --git a/frysk-core/frysk/proc/dead/LinuxExeFactory.java b/frysk-core/frysk/proc/dead/LinuxExeFactory.java
index 28d0082..3165f4f 100644
--- a/frysk-core/frysk/proc/dead/LinuxExeFactory.java
+++ b/frysk-core/frysk/proc/dead/LinuxExeFactory.java
@@ -46,11 +46,9 @@ import lib.dwfl.Elf;
 import lib.dwfl.ElfCommand;
 import lib.dwfl.ElfEHeader;
 import frysk.proc.MemoryMap;
-import frysk.event.EventLoop;
 
 public class LinuxExeFactory {
-    public static LinuxExeProc createProc(EventLoop eventLoop,
-					  final File exeFile,
+    public static LinuxExeProc createProc(final File exeFile,
 					  String[] args) {
 	Elf exeElf = null;
 	try {
@@ -85,4 +83,8 @@ public class LinuxExeFactory {
 		exeElf.close();
 	}
     }
+
+    public static LinuxExeProc createProc(String[] args) {
+	return createProc(new File(args[0]), args);
+    }
 }
diff --git a/frysk-core/frysk/proc/dead/TestLinuxExe.java b/frysk-core/frysk/proc/dead/TestLinuxExe.java
index c105800..8219926 100644
--- a/frysk-core/frysk/proc/dead/TestLinuxExe.java
+++ b/frysk-core/frysk/proc/dead/TestLinuxExe.java
@@ -45,13 +45,11 @@ import inua.eio.ByteBuffer;
 import frysk.proc.Task;
 import frysk.proc.Proc;
 import frysk.testbed.TestLib;
-import frysk.proc.Manager;
 
 public class TestLinuxExe extends TestLib {
     public void testLinuxTaskMemory() {
 	Proc proc
-	    = LinuxExeFactory.createProc(Manager.eventLoop, 
-					 Config.getPkgDataFile("test-exe-x86"),
+	    = LinuxExeFactory.createProc(Config.getPkgDataFile("test-exe-x86"),
 					 new String[0]);
 	assertNotNull("Proc exists in exefile", proc);
 	assertNotNull("Executable file Host is Null?",proc.getHost());
diff --git a/frysk-core/frysk/util/ChangeLog b/frysk-core/frysk/util/ChangeLog
index 8e20a6b..0e3552a 100644
--- a/frysk-core/frysk/util/ChangeLog
+++ b/frysk-core/frysk/util/ChangeLog
@@ -1,3 +1,13 @@
+2008-02-26  Andrew Cagney  <cagney@redhat.com>
+
+	* CommandlineParser.java parseCommandFIXME(String[]): Replace
+	parseCommand(String[]).
+	(parseCommand(Proc)): New.
+	(parseCoresFIXME(CoreExePair[])): Replace parseCores(CoreExePair[]).
+	(parseCores(Proc[])): New.
+	* TestCommandlineParser.java: Update.
+	* ProcStopUtil.java: Update to match LinuxExeFactory and above.
+
 2008-02-26  Teresa Thomas  <tthomas@redhat.com>
 
 	* TestCoredumpAction.java: Move to frysk.testbed.
diff --git a/frysk-core/frysk/util/CommandlineParser.java b/frysk-core/frysk/util/CommandlineParser.java
index 472c8fe..529b68c 100644
--- a/frysk-core/frysk/util/CommandlineParser.java
+++ b/frysk-core/frysk/util/CommandlineParser.java
@@ -49,6 +49,8 @@ import gnu.classpath.tools.getopt.OptionException;
 import gnu.classpath.tools.getopt.Parser;
 import frysk.Config;
 import frysk.EventLogger;
+import frysk.proc.dead.LinuxCoreFactory;
+import frysk.proc.dead.LinuxExeFactory;
 import frysk.proc.Proc;
 
 /**
@@ -76,7 +78,6 @@ public class CommandlineParser {
      */
     public void parsePids(Proc[] pids) {
 	System.err.println("Error: Pids not supported.");
-	printHelp();
 	System.exit(1);
     }
 
@@ -87,21 +88,47 @@ public class CommandlineParser {
      * @param coreFiles The array of core files passed on the command
      * line.
      */
-    public void parseCores(CoreExePair[] coreExePairs) {
-	System.err.println("Error: Cores not supported.");
-	printHelp();
+    public void parseCoresFIXME(CoreExePair[] coreExePairs) {
+	Proc[] procs = new Proc[coreExePairs.length];
+	for (int i = 0; i < coreExePairs.length; i++) {
+	    CoreExePair pair = coreExePairs[i];
+	    if (pair.exeFile == null)
+		procs[i] = LinuxCoreFactory.createProc(pair.coreFile);
+	    else
+		procs[i] = LinuxCoreFactory.createProc(pair.coreFile,
+						       pair.exeFile);
+	}
+	parseCores(procs);
+    }
+    /**
+     * Callback function. Gives an array of core files if core files
+     * were detected on the command line.
+     * 
+     * @param coreFiles The array of core files passed on the command
+     * line.
+     */
+    public void parseCores(Proc[] cores) {
+	System.err.println("Error: Corefiles not supported.");
 	System.exit(1);
     }
 
     /**
      * Callback function. Gives a string array represented a parsed
-     * command.
+     * command.  Clients should instead accept the parsed and verified
+     * Proc.
+     * 
+     * @param command The parsed command.
+     */
+    public void parseCommandFIXME(String[] command) {
+	parseCommand(LinuxExeFactory.createProc(command));
+    }
+    /**
+     * Callback function. Gives a Proc represented a parsed command.
      * 
      * @param command The parsed command.
      */
-    public void parseCommand(String[] command) {
+    public void parseCommand(Proc command) {
 	System.err.println("Error: Commands not supported.");
-	printHelp();
 	System.exit(1);
     }
 
@@ -163,12 +190,12 @@ public class CommandlineParser {
 	    }
 	    CoreExePair[] coreExePairs = new CoreExePair[coreExeFiles.size()];
 	    coreExeFiles.toArray(coreExePairs);
-	    parseCores(coreExePairs);
+	    parseCoresFIXME(coreExePairs);
 	    return result;
 	}
 
 	// If not above, then this is an executable command.
-	parseCommand(result);
+	parseCommandFIXME(result);
 	return result;
     }
 
diff --git a/frysk-core/frysk/util/ProcStopUtil.java b/frysk-core/frysk/util/ProcStopUtil.java
index 6a12b32..869f37f 100644
--- a/frysk-core/frysk/util/ProcStopUtil.java
+++ b/frysk-core/frysk/util/ProcStopUtil.java
@@ -81,8 +81,7 @@ public class ProcStopUtil
 		}
 	    
 	    //@Override 
-	    public void parseCores (CoreExePair[] coreExePairs)
-	    {
+	    public void parseCoresFIXME(CoreExePair[] coreExePairs) {
 		for (int i = 0; i < coreExePairs.length; i++)
 		{       
 		    proc = Util.getProcFromCoreExePair(coreExePairs[i]);
@@ -92,7 +91,7 @@ public class ProcStopUtil
 	    }
 	    
 	    //@Override
-	    public void parseCommand(String[] command) {
+	    public void parseCommandFIXME(String[] command) {
 		File exeFile = new File(command[0]);
 		if (!exeFile.exists() || !exeFile.canRead()
 			|| !exeFile.isFile()) {
@@ -101,8 +100,7 @@ public class ProcStopUtil
 		    System.exit(1);
 		} else {
 		    Manager.eventLoop.start();
-		    proc = LinuxExeFactory.createProc(Manager.eventLoop,
-						      exeFile, command);
+		    proc = LinuxExeFactory.createProc(exeFile, command);
 		    failIfProcNull(proc);
 		    procEvent.executeDead(proc, null);
 		}
diff --git a/frysk-core/frysk/util/TestCommandlineParser.java b/frysk-core/frysk/util/TestCommandlineParser.java
index f039dca..78425bc 100644
--- a/frysk-core/frysk/util/TestCommandlineParser.java
+++ b/frysk-core/frysk/util/TestCommandlineParser.java
@@ -47,20 +47,30 @@ import frysk.proc.Proc;
 
 public class TestCommandlineParser extends TestLib {
 
+    private File exe;
+    private File core;
+    public void setUp() {
+	super.setUp();
+	exe = Config.getPkgLibFile("funit-hello");
+	core = CorefileFactory.constructCoreAtSignal(exe);
+    }
+    public void tearDown() {
+	exe = null;
+	core = null;
+	super.tearDown();
+    }
+
     public void testCoreExe() {
-	final File exe = Config.getPkgLibFile("funit-hello");
-	final File core = CorefileFactory.constructCoreAtSignal(exe);
 	CommandlineParser parser = new CommandlineParser("test") {
-		public void parseCommand(String[] command) {
+		public void parseCommand(Proc command) {
 		    fail("Shoudn't have a command");
 		}
-		public void parseCores(CoreExePair[] coreExePairs) {
-		    assertEquals("Should have one pair",
-				 coreExePairs.length, 1);
-		    assertEquals("Core file is correct",
-				 coreExePairs[0].coreFile, core);
-		    assertEquals("Exe file is correct",
-				 coreExePairs[0].exeFile, exe);
+		public void parseCores(Proc[] cores) {
+		    assertEquals("Should have one pair", cores.length, 1);
+		    assertEquals("Core file is correct", core.getName(),
+				 cores[0].getHost().getName());
+		    assertEquals("Exe file is correct", exe.getPath(),
+				 cores[0].getExe());
 		}
 		public void parsePids(Proc[] procs) {
 		    fail("Shouldn't have a pid");
@@ -74,17 +84,14 @@ public class TestCommandlineParser extends TestLib {
     }
 
     public void testCore() {
-	final File exe = Config.getPkgLibFile("funit-hello");
-	final File core = CorefileFactory.constructCoreAtSignal(exe);
 	CommandlineParser parser = new CommandlineParser("test") {
-		public void parseCommand(String[] command) {
+		public void parseCommand(Proc command) {
 		    fail("Shoudn't have a command");
 		}
-		public void parseCores(CoreExePair[] coreExePairs) {
-		    assertEquals("Should have one pair",
-				 coreExePairs.length, 1);
-		    assertEquals("Core file is correct",
-				 coreExePairs[0].coreFile, core);
+		public void parseCores(Proc[] cores) {
+		    assertEquals("Should have one pair", cores.length, 1);
+		    assertEquals("Core file is correct", core.getName(),
+				 cores[0].getHost().getName());
 		}
 		public void parsePids(Proc[] procs) {
 		    fail("Shouldn't have a pid");


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


^ permalink raw reply	[flat|nested] 3+ messages in thread

* [SCM]  master: frysk-core/frysk/bindir/ChangeLog
@ 2008-02-19 16:19 cagney
  0 siblings, 0 replies; 3+ messages in thread
From: cagney @ 2008-02-19 16:19 UTC (permalink / raw)
  To: frysk-cvs

The branch, master has been updated
       via  06cbed2bceaedb7beb6719a3395f48b21ea279ef (commit)
      from  764c4238327cee1cd0bb5f682d7cef444e14e0f9 (commit)

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

- Log -----------------------------------------------------------------
commit 06cbed2bceaedb7beb6719a3395f48b21ea279ef
Author: Andrew Cagney <cagney@redhat.com>
Date:   Tue Feb 19 11:15:44 2008 -0500

    frysk-core/frysk/bindir/ChangeLog
    2008-02-19  Andrew Cagney  <cagney@redhat.com>
    
    	* TestFstep.java: Update to match lib.dwfl.Elf.
    
    frysk-core/frysk/debuginfo/ChangeLog
    2008-02-19  Andrew Cagney  <cagney@redhat.com>
    
    	* DebugInfo.java: Update to match lib.dwfl.Elf.
    
    frysk-core/frysk/dom/ChangeLog
    2008-02-19  Andrew Cagney  <cagney@redhat.com>
    
    	* DOMCommon.java: Update to match lib.dwfl.File.
    
    frysk-core/frysk/ftrace/ChangeLog
    2008-02-19  Andrew Cagney  <cagney@redhat.com>
    
    	* TestMappingGuard.java (performTestAllLibraiesGetDetected()):
    	Make private.
    	* ObjectFile.java: Update to match lib.dwfl.Elf.
    
    frysk-core/frysk/isa/ChangeLog
    2008-02-19  Andrew Cagney  <cagney@redhat.com>
    
    	* ElfMap.java: Update to match lib.dwfl.
    
    frysk-core/frysk/isa/corefiles/ChangeLog
    2008-02-19  Andrew Cagney  <cagney@redhat.com>
    
    	* IA32LinuxElfCorefile.java: Update to match lib.dwfl.
    	* X8664LinuxElfCorefile.java: Ditto.
    	* PPC64LinuxElfCorefile.java: Ditto.
    	* PPC32LinuxElfCorefile.java: Ditto.
    	* LinuxElfCorefile.java: Ditto.
    	(getElfEndianType()): Delete.
    	(getElfWordSize()): Delete.
    
    frysk-core/frysk/proc/dead/ChangeLog
    2008-02-19  Andrew Cagney  <cagney@redhat.com>
    
    	* CorefileByteBuffer.java: Update to match lib.dwfl.
    	* SOLibMapBuilder.java: Ditto.
    	* LinuxExeHost.java: Ditto.
    	* LinuxExeTask.java: Ditto.
    	* LinuxCoreTask.java: Ditto.
    	* LinuxCoreHost.java: Ditto.
    	* LinuxCoreProc.java: Ditto.
    
    frysk-core/frysk/proc/live/ChangeLog
    2008-02-19  Andrew Cagney  <cagney@redhat.com>
    
    	* IsaFactory.java: Update to match lib.dwfl.
    	* TestTaskObserverCode.java: Ditto.
    
    frysk-core/frysk/util/ChangeLog
    2008-02-19  Andrew Cagney  <cagney@redhat.com>
    
    	* CommandlineParser.java: Update to match lib.dwfl.
    	* TestCoredumpAction.java: Ditto.
    
    frysk-sys/lib/dwfl/ChangeLog
    2008-02-19  Andrew Cagney  <cagney@redhat.com>
    
    	* ElfFileException.java (ElfFileException(String)): Delete.
    	(ElfFileException(String,String)): Delete.
    	(ElfFileException(File,String)): New.
    	(ElfFileException(File,Exception)): New.
    	* Elf.java (Elf(String,ElfCommand)): Delete.
    	(updateEHeader(ElfHeader)): Return void.
    	(getLastErrorMsg()): Make static.
    	(getLastErrorNo()): Make static.
    	(getDescriptor(File,ElfCommand)): New.
    	(Elf(FileDescriptor,ElfCommand)): New.
    	(update(ElfCommand)): Return void.
    	(createNewEHeader(int wordSize)): Return ElfEHeader.
    	* ElfException.java: Extend RuntimeException.
    	* cni/Elf.cxx (fillEHeader): Delete.
    	(Elf::elf_getehdr): Throw an exception if there's a problem.
    	(Elf::elf_update): Ditto.
    	(Elf::elf_updatehdr): Ditto.
    	* ElfEHeader.java (EI_CLASS): New.
    	(getWordSize(), setWordSize()): New.
    	(ElfEHeader()): Replace ElfEHeader(Elf).
    	(DATANONE, DATA2LSB, DATA2MSB, DATA): Drop PHEADER_ prefix.
    	(CLASSNONE, CLASS32, CLASS64, CLASS): Drop PHEADER_ prefix.
    	(getByteOrder(), setByteOrder(ByteOrder)): New.
    	* TestElf.java: Update.
    	(testSetWordSize()): New.
    	(testSetByteOrder()): New.
    	* ElfPrXFPRegSet.java: Update.
    	* ElfPrAuxv.java: Update.
    	* ElfPrFPRegSet.java: Update.
    	* ElfPrpsinfo.java: Update.
    	* ElfPrstatus.java: Update.

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

Summary of changes:
 frysk-core/frysk/bindir/ChangeLog                  |    4 +
 frysk-core/frysk/bindir/TestFstep.java             |   16 +-
 frysk-core/frysk/debuginfo/ChangeLog               |    4 +
 frysk-core/frysk/debuginfo/DebugInfo.java          |    3 +-
 frysk-core/frysk/dom/ChangeLog                     |    4 +
 frysk-core/frysk/dom/DOMCommon.java                |    6 +-
 frysk-core/frysk/ftrace/ChangeLog                  |    6 +
 frysk-core/frysk/ftrace/ObjectFile.java            |   83 ++++-----
 frysk-core/frysk/ftrace/TestMappingGuard.java      |    3 +-
 frysk-core/frysk/isa/ChangeLog                     |    4 +
 frysk-core/frysk/isa/ElfMap.java                   |   16 +--
 frysk-core/frysk/isa/corefiles/ChangeLog           |   12 +-
 .../frysk/isa/corefiles/IA32LinuxElfCorefile.java  |    2 +-
 .../frysk/isa/corefiles/LinuxElfCorefile.java      |   69 ++-----
 .../frysk/isa/corefiles/PPC32LinuxElfCorefile.java |    2 +-
 .../frysk/isa/corefiles/PPC64LinuxElfCorefile.java |    2 +-
 .../frysk/isa/corefiles/X8664LinuxElfCorefile.java |    2 +-
 frysk-core/frysk/proc/dead/ChangeLog               |   10 +
 frysk-core/frysk/proc/dead/CorefileByteBuffer.java |   49 +----
 frysk-core/frysk/proc/dead/LinuxCoreHost.java      |    8 +-
 frysk-core/frysk/proc/dead/LinuxCoreProc.java      |    7 +-
 frysk-core/frysk/proc/dead/LinuxExeHost.java       |    7 +-
 frysk-core/frysk/proc/dead/LinuxExeTask.java       |    3 +-
 frysk-core/frysk/proc/dead/SOLibMapBuilder.java    |   49 ++----
 frysk-core/frysk/proc/live/ChangeLog               |    5 +
 frysk-core/frysk/proc/live/IsaFactory.java         |   21 +--
 .../frysk/proc/live/TestTaskObserverCode.java      |   12 +-
 frysk-core/frysk/util/ChangeLog                    |    6 +-
 frysk-core/frysk/util/CommandlineParser.java       |    4 +-
 frysk-core/frysk/util/TestCoredumpAction.java      |   36 +---
 frysk-sys/lib/dwfl/ChangeLog                       |   34 +++
 frysk-sys/lib/dwfl/Elf.java                        |   73 ++++----
 frysk-sys/lib/dwfl/ElfEHeader.java                 |  111 ++++++++--
 frysk-sys/lib/dwfl/ElfException.java               |   21 ++-
 frysk-sys/lib/dwfl/ElfFileException.java           |   66 +++----
 frysk-sys/lib/dwfl/ElfPrAuxv.java                  |   25 +--
 frysk-sys/lib/dwfl/ElfPrFPRegSet.java              |   29 +--
 frysk-sys/lib/dwfl/ElfPrXFPRegSet.java             |   29 +--
 frysk-sys/lib/dwfl/ElfPrpsinfo.java                |   36 +---
 frysk-sys/lib/dwfl/ElfPrstatus.java                |   31 +---
 frysk-sys/lib/dwfl/TestElf.java                    |  216 ++++++++++----------
 frysk-sys/lib/dwfl/cni/Elf.cxx                     |  101 +++++-----
 42 files changed, 577 insertions(+), 650 deletions(-)

First 500 lines of diff:
diff --git a/frysk-core/frysk/bindir/ChangeLog b/frysk-core/frysk/bindir/ChangeLog
index a35ab8d..ddf28e2 100644
--- a/frysk-core/frysk/bindir/ChangeLog
+++ b/frysk-core/frysk/bindir/ChangeLog
@@ -1,3 +1,7 @@
+2008-02-19  Andrew Cagney  <cagney@redhat.com>
+
+	* TestFstep.java: Update to match lib.dwfl.Elf.
+
 2008-02-19  Phil Muldoon  <pmuldoon@redhat.com>
 
 	* fcore.xml: Add -stack option. 
diff --git a/frysk-core/frysk/bindir/TestFstep.java b/frysk-core/frysk/bindir/TestFstep.java
index 6247067..6e6227a 100644
--- a/frysk-core/frysk/bindir/TestFstep.java
+++ b/frysk-core/frysk/bindir/TestFstep.java
@@ -41,17 +41,21 @@
 package frysk.bindir;
 
 import frysk.Config;
-import lib.dwfl.*;
+import java.io.File;
 import frysk.expunit.Regex;
 import frysk.testbed.TestLib;
 import frysk.testbed.TearDownExpect;
+import lib.dwfl.Elf;
+import lib.dwfl.ElfEHeader;
+import lib.dwfl.ElfCommand;
 
 public class TestFstep extends TestLib {
-  // Makes sure that fstep at least comes across the entry point of the
-  // stepped program.
-  public void testFirstStep() throws Exception
-  {
-    Elf e = new Elf("/bin/true", ElfCommand.ELF_C_READ);
+    /**
+     * Makes sure that fstep at least comes across the entry point of
+     * the stepped program.
+     */
+    public void testFirstStep() throws Exception {
+	Elf e = new Elf(new File("/bin/true"), ElfCommand.ELF_C_READ);
     try {
 	ElfEHeader h = e.getEHeader();
 	final String entryAddress = "0x" + Long.toHexString(h.entry);
diff --git a/frysk-core/frysk/debuginfo/ChangeLog b/frysk-core/frysk/debuginfo/ChangeLog
index f55fd9c..758d8a7 100644
--- a/frysk-core/frysk/debuginfo/ChangeLog
+++ b/frysk-core/frysk/debuginfo/ChangeLog
@@ -1,3 +1,7 @@
+2008-02-19  Andrew Cagney  <cagney@redhat.com>
+
+	* DebugInfo.java: Update to match lib.dwfl.Elf.
+
 2008-02-12  Andrew Cagney  <cagney@redhat.com>
 
 	* TestDebugInfoStackTrace.java: Update to match frysk.sys.Pid.
diff --git a/frysk-core/frysk/debuginfo/DebugInfo.java b/frysk-core/frysk/debuginfo/DebugInfo.java
index 12e817c..3f1a92f 100644
--- a/frysk-core/frysk/debuginfo/DebugInfo.java
+++ b/frysk-core/frysk/debuginfo/DebugInfo.java
@@ -54,6 +54,7 @@ import lib.dwfl.DwAt;
 import lib.dwfl.DwflDieBias;
 import lib.dwfl.Elf;
 import lib.dwfl.ElfCommand;
+import java.io.File;
 
 public class DebugInfo {
     private Elf elf;
@@ -66,7 +67,7 @@ public class DebugInfo {
     public DebugInfo (DebugInfoFrame frame) {
 	Proc proc = frame.getTask().getProc();
 	try {
-	    elf = new Elf(proc.getExe(), ElfCommand.ELF_C_READ);
+	    elf = new Elf(new File(proc.getExe()), ElfCommand.ELF_C_READ);
 	    dwarf = new Dwarf(elf, DwarfCommand.READ, null);
 	}
 	catch (lib.dwfl.ElfException ignore) {
diff --git a/frysk-core/frysk/dom/ChangeLog b/frysk-core/frysk/dom/ChangeLog
index bebfb75..a92d1d8 100644
--- a/frysk-core/frysk/dom/ChangeLog
+++ b/frysk-core/frysk/dom/ChangeLog
@@ -1,3 +1,7 @@
+2008-02-19  Andrew Cagney  <cagney@redhat.com>
+
+	* DOMCommon.java: Update to match lib.dwfl.File.
+
 2007-12-13  Sami Wagiaalla  <swagiaal@redhat.com>
 
 	Moved frysk.rt.Line to frysk.scopes.SourceLocation.
diff --git a/frysk-core/frysk/dom/DOMCommon.java b/frysk-core/frysk/dom/DOMCommon.java
index 0afba02..8f2f67e 100644
--- a/frysk-core/frysk/dom/DOMCommon.java
+++ b/frysk-core/frysk/dom/DOMCommon.java
@@ -1,6 +1,6 @@
 // This file is part of the program FRYSK.
 //
-// Copyright 2007, Red Hat Inc.
+// Copyright 2007, 2008, Red Hat Inc.
 //
 // FRYSK is free software; you can redistribute it and/or modify it
 // under the terms of the GNU General Public License as published by
@@ -82,7 +82,7 @@ public class DOMCommon {
     ArrayList sourcefiles = new ArrayList();
     if (pathFound(executable)) {
       try {
-        Elf elf = new Elf(executable, ElfCommand.ELF_C_READ);
+	  Elf elf = new Elf(new File(executable), ElfCommand.ELF_C_READ);
         Dwarf dw = new Dwarf(elf, DwarfCommand.READ, null);
         String[] files = dw.getSourceFiles();
 
@@ -127,7 +127,7 @@ public class DOMCommon {
     Elf elf = null;
     ArrayList incpaths = new ArrayList();
     try {
-      elf = new Elf(executable, ElfCommand.ELF_C_READ);
+	elf = new Elf(new File(executable), ElfCommand.ELF_C_READ);
     } catch (lib.dwfl.ElfException ee) {
       throw new RuntimeException("Cannot open elf file. Name I was given "
           + "was " + executable, ee);
diff --git a/frysk-core/frysk/ftrace/ChangeLog b/frysk-core/frysk/ftrace/ChangeLog
index d2f58c2..e3c6c0d 100644
--- a/frysk-core/frysk/ftrace/ChangeLog
+++ b/frysk-core/frysk/ftrace/ChangeLog
@@ -1,3 +1,9 @@
+2008-02-19  Andrew Cagney  <cagney@redhat.com>
+
+	* TestMappingGuard.java (performTestAllLibraiesGetDetected()):
+	Make private.
+	* ObjectFile.java: Update to match lib.dwfl.Elf.
+
 2008-02-14  Andrew Cagney  <cagney@redhat.com>
 
 	* Ftrace.java (addTracePid(ProcId)): Delete.
diff --git a/frysk-core/frysk/ftrace/ObjectFile.java b/frysk-core/frysk/ftrace/ObjectFile.java
index 3b4016b..1da5df4 100644
--- a/frysk-core/frysk/ftrace/ObjectFile.java
+++ b/frysk-core/frysk/ftrace/ObjectFile.java
@@ -1,6 +1,6 @@
 // This file is part of the program FRYSK.
 //
-// Copyright 2007, Red Hat Inc.
+// Copyright 2007, 2008, Red Hat Inc.
 //
 // FRYSK is free software; you can redistribute it and/or modify it
 // under the terms of the GNU General Public License as published by
@@ -60,7 +60,8 @@ import lib.dwfl.ElfSymbol;
 import lib.dwfl.ElfSymbolBinding;
 import lib.dwfl.ElfSymbolType;
 import lib.dwfl.ElfSymbolVisibility;
-
+import lib.dwfl.ElfFileException;
+import lib.dwfl.ElfException;
 import lib.stdcpp.Demangler;
 
 /**
@@ -209,9 +210,7 @@ public class ObjectFile
 	    tracePoints.add(tp);
 	}
 
-	public synchronized ArrayList getTracePoints(TracePointOrigin origin)
-	    throws lib.dwfl.ElfException
-	{
+	public synchronized ArrayList getTracePoints(TracePointOrigin origin) {
 	    ArrayList tracePoints = (ArrayList)this.tracePointMap.get(origin);
 	    if (tracePoints != null) {
 		logger.log(Level.FINE, "" + tracePoints.size() + " tracepoints for origin " + origin + " retrieved from cache.");
@@ -308,9 +307,7 @@ public class ObjectFile
     }
     private ObjFBuilder builder;
 
-    protected ObjectFile(File file, final Elf elfFile, ElfEHeader eh)
-	throws lib.dwfl.ElfException
-    {
+    protected ObjectFile(File file, final Elf elfFile, ElfEHeader eh) {
 	this.filename = file;
 	this.entryPoint = eh.entry;
 	this.builder = new ObjFBuilder();
@@ -344,7 +341,7 @@ public class ObjectFile
 
 	if (!haveLoadable) {
 	    logger.log(Level.FINE, "Failed, didn't find any loadable segments.");
-	    throw new lib.dwfl.ElfFileException("Failed, didn't find any loadable segments.");
+	    throw new ElfFileException(file, "Failed, didn't find any loadable segments.");
 	}
 
 	if (eh.type == ElfEHeader.PHEADER_ET_EXEC)
@@ -353,7 +350,7 @@ public class ObjectFile
 	    logger.log(Level.FINER, "This file is DSO or PIE EXECUTABLE.");
 	else {
 	    logger.log(Level.FINE, "Failed, unsupported ELF file type.");
-	    throw new lib.dwfl.ElfFileException("Failed, unsupported ELF file type.");
+	    throw new ElfFileException(file, "Failed, unsupported ELF file type.");
 	}
 
 	boolean foundDynamic = false;
@@ -438,7 +435,7 @@ public class ObjectFile
 	    }
 	    else if (sheader.type == ElfSectionHeader.ELF_SHT_SYMTAB) {
 		if (this.staticSymtab != null)
-		    throw new lib.dwfl.ElfFileException("Strange: More than one static symbol tables.");
+		    throw new ElfFileException(file, "Strange: More than one static symbol tables.");
 		logger.log(Level.FINER, "Found static symtab section `" + sheader.name + "'.");
 		this.staticSymtab = section;
 	    }
@@ -447,23 +444,23 @@ public class ObjectFile
 	if (builder.haveDynamic) {
 	    // Elf consistency sanity checks.
 	    if (!foundDynamic)
-		throw new lib.dwfl.ElfFileException("DYNAMIC section not found in ELF file.");
+		throw new ElfFileException(file, "DYNAMIC section not found in ELF file.");
 	    if (!havePlt)
-		throw new lib.dwfl.ElfFileException("No (suitable) .plt found in ELF file.");
+		throw new ElfFileException(file, "No (suitable) .plt found in ELF file.");
 	    if (!haveRelPlt)
-		throw new lib.dwfl.ElfFileException("No (suitable) .rel.plt found in ELF file.");
+		throw new ElfFileException(file, "No (suitable) .rel.plt found in ELF file.");
 	    if (this.dynamicSymtab == null)
-		throw new lib.dwfl.ElfFileException("Couldn't get SYMTAB from DYNAMIC section.");
+		throw new ElfFileException(file, "Couldn't get SYMTAB from DYNAMIC section.");
 	    if (this.dynamicStrtab == null)
-		throw new lib.dwfl.ElfFileException("Couldn't get STRTAB from DYNAMIC section.");
+		throw new ElfFileException(file, "Couldn't get STRTAB from DYNAMIC section.");
 	    if ((this.dynamicVerneed != null || this.dynamicVerdef != null) && this.dynamicVersym == null)
-		throw new lib.dwfl.ElfFileException("Versym section missing when verdef or verneed present.");
+		throw new ElfFileException(file, "Versym section missing when verdef or verneed present.");
 	    if (this.dynamicVerneed == null && this.dynamicVerdef == null && this.dynamicVersym != null)
-		throw new lib.dwfl.ElfFileException("Versym section present when neither verdef nor verneed present.");
+		throw new ElfFileException(file, "Versym section present when neither verdef nor verneed present.");
 	    if (this.dynamicVerdefCount != 0 && this.dynamicVerdef == null)
-		throw new lib.dwfl.ElfFileException("Strange: VERDEFNUM tag present, but not VERDEF.");
+		throw new ElfFileException(file, "Strange: VERDEFNUM tag present, but not VERDEF.");
 	    if (this.dynamicVerneedCount != 0 && this.dynamicVerneed == null)
-		throw new lib.dwfl.ElfFileException("Strange: VERNEEDNUM tag present, but not VERNEED.");
+		throw new ElfFileException(file, "Strange: VERNEEDNUM tag present, but not VERNEED.");
 	}
 
 	// Read SONAME, if there was one.
@@ -483,9 +480,7 @@ public class ObjectFile
 	logger.log(Level.FINE, "Loading finished successfully.");
     }
 
-    public void eachTracePoint(TracePointIterator client, TracePointOrigin origin)
-	throws lib.dwfl.ElfException
-    {
+    public void eachTracePoint(TracePointIterator client, TracePointOrigin origin) {
 	logger.log(Level.FINE, "Loading tracepoints for origin " + origin + ".");
 	List tracePoints = builder.getTracePoints(origin);
 
@@ -500,9 +495,7 @@ public class ObjectFile
 	logger.log(Level.FINE, "Done processing tracepoints for origin " + origin + ".");
     }
 
-    public TracePoint lookupTracePoint(String name, TracePointOrigin origin)
-	throws lib.dwfl.ElfException
-    {
+    public TracePoint lookupTracePoint(String name, TracePointOrigin origin) {
 	logger.log(Level.FINE, "Looking up tracepoint for `" + name + "' in " + origin + ".");
 	List tracePoints = builder.getTracePoints(origin);
 	for (Iterator it = tracePoints.iterator(); it.hasNext();) {
@@ -513,9 +506,7 @@ public class ObjectFile
 	return null;
     }
 
-    public void eachTracePoint(TracePointIterator client)
-	throws lib.dwfl.ElfException
-    {
+    public void eachTracePoint(TracePointIterator client) {
 	logger.log(Level.FINE, "Load ALL tracepoints.");
 	eachTracePoint(client, TracePointOrigin.PLT);
 	eachTracePoint(client, TracePointOrigin.DYNAMIC);
@@ -608,28 +599,26 @@ public class ObjectFile
 	    return objFile;
 	}
 
+	Elf elfFile;
 	try {
-	    Elf elfFile = new Elf(filename, ElfCommand.ELF_C_READ);
-	    ElfEHeader eh = elfFile.getEHeader();
-	    if (eh == null) {
-		logger.log(Level.FINE, "Failed, couldn't get an ELF header.");
-		return null;
-	    }
-
-	    objFile = new ObjectFile(filename, elfFile, eh);
-	    cachedFiles.put(filename, objFile);
-	    logger.log(Level.FINE, "Done.");
-	    return objFile;
-	}
-	catch (lib.dwfl.ElfFileException efe) {
-	    efe.printStackTrace();
-	    System.err.println("load error: " + efe);
-	}
-	catch (lib.dwfl.ElfException eexp) {
+	    elfFile = new Elf(filename, ElfCommand.ELF_C_READ);
+	} catch (ElfException eexp) {
 	    eexp.printStackTrace();
 	    System.err.println("load error: " + eexp);
+	    return null;
 	}
 
-	return null;
+	ElfEHeader eh;
+	try {
+	    eh = elfFile.getEHeader();
+	} catch (ElfException e) {
+	    logger.log(Level.FINE, "Failed, couldn't get an ELF header.");
+	    return null;
+	}
+
+	objFile = new ObjectFile(filename, elfFile, eh);
+	cachedFiles.put(filename, objFile);
+	logger.log(Level.FINE, "Done.");
+	return objFile;
     }
 }
diff --git a/frysk-core/frysk/ftrace/TestMappingGuard.java b/frysk-core/frysk/ftrace/TestMappingGuard.java
index c31df51..7ee6193 100644
--- a/frysk-core/frysk/ftrace/TestMappingGuard.java
+++ b/frysk-core/frysk/ftrace/TestMappingGuard.java
@@ -76,8 +76,7 @@ public class TestMappingGuard
 	public void addFailed (Object observable, Throwable w) {}
     }
 
-    public void performTestAllLibrariesGetDetected()
-    {
+    private void performTestAllLibrariesGetDetected() {
 	class MyMappingObserver extends DummyMappingObserver {
 	    public ArrayList allLibraries = new ArrayList();
 	    public Action updateMappedFile(frysk.proc.Task task, MemoryMapping mapping) {
diff --git a/frysk-core/frysk/isa/ChangeLog b/frysk-core/frysk/isa/ChangeLog
index 289d224..c4f315a 100644
--- a/frysk-core/frysk/isa/ChangeLog
+++ b/frysk-core/frysk/isa/ChangeLog
@@ -1,3 +1,7 @@
+2008-02-19  Andrew Cagney  <cagney@redhat.com>
+
+	* ElfMap.java: Update to match lib.dwfl.
+
 2007-12-11  Andrew Cagney  <cagney@redhat.com>
 
 	* TestRegisterMap.java: New file.
diff --git a/frysk-core/frysk/isa/ElfMap.java b/frysk-core/frysk/isa/ElfMap.java
index 3e6aedd..b42ca14 100644
--- a/frysk-core/frysk/isa/ElfMap.java
+++ b/frysk-core/frysk/isa/ElfMap.java
@@ -42,9 +42,6 @@ package frysk.isa;
 import lib.dwfl.ElfEMachine;
 import lib.dwfl.ElfEHeader;
 import java.io.File;
-import java.io.IOException;
-import lib.dwfl.ElfException;
-import lib.dwfl.ElfFileException;
 import lib.dwfl.Elf;
 import lib.dwfl.ElfCommand;
 import java.util.Map;
@@ -93,20 +90,11 @@ public final class ElfMap {
 
     public static ISA getISA(File exe) {
 	Elf elfFile;
-	try {
-	    elfFile = new Elf(exe.getCanonicalPath(), ElfCommand.ELF_C_READ);
-	} catch (IOException e) {
-	    throw new RuntimeException("opening " + exe.getPath(), e);
-	} catch (ElfFileException e) {
-	    throw new RuntimeException ("opening " + exe.getPath(), e);
-	} catch (ElfException e) {
-	    throw new RuntimeException ("opening " + exe.getPath(), e);
-	}
+	elfFile = new Elf(exe, ElfCommand.ELF_C_READ);
 	try {
 	    ElfEHeader header = elfFile.getEHeader();
 	    return getISA(header);
-	}
-	finally {
+	} finally {
 	    elfFile.close();
 	}
     }
diff --git a/frysk-core/frysk/isa/corefiles/ChangeLog b/frysk-core/frysk/isa/corefiles/ChangeLog
index f7308cd..4bef327 100644
--- a/frysk-core/frysk/isa/corefiles/ChangeLog
+++ b/frysk-core/frysk/isa/corefiles/ChangeLog
@@ -1,9 +1,19 @@
-2008-02-19  Phil Muldoon  <pmuldoon@redhat.com>
+2008-02-19  Andrew Cagney  <cagney@redhat.com>
 
 	* LinuxElfCorefile.java (buildMap): Add stackOnly
 	logic test.
 	(setStackOnly): New.
 
+2008-02-19  Phil Muldoon  <pmuldoon@redhat.com>
+
+	* IA32LinuxElfCorefile.java: Update to match lib.dwfl.
+	* X8664LinuxElfCorefile.java: Ditto.
+	* PPC64LinuxElfCorefile.java: Ditto.
+	* PPC32LinuxElfCorefile.java: Ditto.
+	* LinuxElfCorefile.java: Ditto.
+	(getElfEndianType()): Delete.
+	(getElfWordSize()): Delete.
+
 2008-02-15  Phil Muldoon  <pmuldoon@redhat.com>
 
 	* PPC64LinuxElfCorefile.java (writeNotePrpsinfo): Fix
diff --git a/frysk-core/frysk/isa/corefiles/IA32LinuxElfCorefile.java b/frysk-core/frysk/isa/corefiles/IA32LinuxElfCorefile.java
index 3c48481..56d0b77 100644
--- a/frysk-core/frysk/isa/corefiles/IA32LinuxElfCorefile.java
+++ b/frysk-core/frysk/isa/corefiles/IA32LinuxElfCorefile.java
@@ -320,7 +320,7 @@ public class IA32LinuxElfCorefile extends LinuxElfCorefile {
      * @see frysk.util.LinuxElfCorefile#getElfMachineClass()
      */
     protected byte getElfMachineClass() {
-	return ElfEHeader.PHEADER_ELFCLASS32;
+	return ElfEHeader.CLASS32;
     }
 
 }
diff --git a/frysk-core/frysk/isa/corefiles/LinuxElfCorefile.java b/frysk-core/frysk/isa/corefiles/LinuxElfCorefile.java
index 1bda4b3..c142874 100644
--- a/frysk-core/frysk/isa/corefiles/LinuxElfCorefile.java
+++ b/frysk-core/frysk/isa/corefiles/LinuxElfCorefile.java
@@ -40,7 +40,6 @@
 package frysk.isa.corefiles;
 
 import frysk.sys.ProcessIdentifierFactory;
-import inua.eio.ByteOrder;
 import frysk.isa.ISA;
 import java.util.ArrayList;
 import java.util.List;
@@ -49,8 +48,6 @@ import lib.dwfl.DwflModule;
 import lib.dwfl.Elf;
 import lib.dwfl.ElfCommand;
 import lib.dwfl.ElfEHeader;
-import lib.dwfl.ElfException;
-import lib.dwfl.ElfFileException;
 import lib.dwfl.ElfNhdr;
 import lib.dwfl.ElfPHeader;
 import frysk.dwfl.DwflCache;
@@ -59,6 +56,7 @@ import frysk.proc.Proc;
 import frysk.proc.Task;
 import frysk.sys.StatelessFile;
 import frysk.sys.proc.MapsBuilder;
+import java.io.File;
 
 public abstract class LinuxElfCorefile {
 
@@ -180,10 +178,7 @@ public abstract class LinuxElfCorefile {
 	builder.construct(ProcessIdentifierFactory.create(this.process.getMainTask().getTid()));
 
 	// Write elf file
-	final long i = linuxElfCorefileImage.update(ElfCommand.ELF_C_WRITE);
-	if (i < 0)
-	    throw new RuntimeException("LibElf elf_update failed with "
-		    + linuxElfCorefileImage.getLastErrorMsg());
+	linuxElfCorefileImage.update(ElfCommand.ELF_C_WRITE);
 	// Go home.
 	linuxElfCorefileImage.close();
 	
@@ -236,31 +231,6 @@ public abstract class LinuxElfCorefile {
 	StatelessFile rawCore = new StatelessFile(name);
 	rawCore.pwrite(offset, data, 0, data.length);
     }
-    /**
-     * Return the endian type as associated by this ISA
-     * 
-     * @return byte - endian type.
-     */
-    protected byte getElfEndianType() {
-	ISA currentArch = process.getMainTask().getISA();
-	ByteOrder order = currentArch.order();
-	if (order == ByteOrder.BIG_ENDIAN)
-	    return ElfEHeader.PHEADER_ELFDATA2MSB;
-	else
-	    return ElfEHeader.PHEADER_ELFDATA2LSB;
-    }
-
-    /**
-     * 
-     * Return the word size as represented by this ISA
-     * 
-     * @return int - size of word
-     * 
-     */
-    protected int getElfWordSize() {
-	ISA currentArch = process.getMainTask().getISA();
-	return currentArch.wordSize();
-    }
 
     /**
      * writeNotePrpsInfo
@@ -451,37 +421,33 @@ public abstract class LinuxElfCorefile {
      * @return int size of the elf header
      */
     protected int populateElfHeader(Elf elfCore) {
+	ISA isa = process.getMainTask().getISA();
 
-	elfCore.createNewEHeader(getElfWordSize());
-	ElfEHeader elf_header = elfCore.getEHeader();
-
-	elf_header.ident[4] = getElfMachineClass();
-	elf_header.ident[5] = getElfEndianType();


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


^ permalink raw reply	[flat|nested] 3+ messages in thread

* [SCM]  master: frysk-core/frysk/bindir/ChangeLog
@ 2008-01-25 17:32 cagney
  0 siblings, 0 replies; 3+ messages in thread
From: cagney @ 2008-01-25 17:32 UTC (permalink / raw)
  To: frysk-cvs

The branch, master has been updated
       via  a548829d7ca92f9c2853d83dcf9781ce7a56a488 (commit)
       via  9324844373a69121875354223dbbe799279aeb49 (commit)
      from  814da5d7520162288f0153df0afe06ce4e39f764 (commit)

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

- Log -----------------------------------------------------------------
commit a548829d7ca92f9c2853d83dcf9781ce7a56a488
Author: Andrew Cagney <cagney@redhat.com>
Date:   Fri Jan 25 12:31:06 2008 -0500

    frysk-core/frysk/bindir/ChangeLog
    2008-01-25  Andrew Cagney  <cagney@redhat.com>
    
    	* TestFdebuginfo.java (testPathListing()): Mark as unresolved; bug
    	5671.

commit 9324844373a69121875354223dbbe799279aeb49
Author: Andrew Cagney <cagney@redhat.com>
Date:   Fri Jan 25 12:22:06 2008 -0500

    Initialize the ISA during the task attach.
    
    frysk-core/frysk/proc/ChangeLog
    2008-01-24  Andrew Cagney  <cagney@redhat.com>
    
    	* Task.java: Mention that ISA can be null.
    	(clearIsa()): Make protected.
    
    frysk-core/frysk/proc/live/ChangeLog
    2008-01-25  Andrew Cagney  <cagney@redhat.com>
    
    	* TestRuntimeIsa.java (assertHasNoIsa(String,Task)): New.
    	(assertHasIsaEquals(String,Task,boolean)): Delete.
    	* LinuxPtraceTask.java (hasIsa()): Delete.
    	(clearIsa()): Make protected.
    	(getISA()): Simplify, throw an NPE when the ISA is null.
    	(sendSetOptions()): Delete.
    	(ptraceOptions): Initialize directly.
    	(startTracingSyscalls(), stopTracingSyscalls()): Call
    	Ptrace.setOptions.
    	(initializeAttachedState()): New.
    	* LinuxPtraceTaskState.java: Call Task.initializeAttachedState(),
    	instead of Task.sendSetOptions() as the task is attached.

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

Summary of changes:
 frysk-core/frysk/bindir/ChangeLog                  |    5 +
 frysk-core/frysk/bindir/TestFdebuginfo.java        |    2 +
 frysk-core/frysk/proc/ChangeLog                    |    3 +
 frysk-core/frysk/proc/Task.java                    |    9 +-
 frysk-core/frysk/proc/live/ChangeLog               |   13 ++
 frysk-core/frysk/proc/live/LinuxPtraceTask.java    |   63 ++++------
 .../frysk/proc/live/LinuxPtraceTaskState.java      |  130 ++++++++++++--------
 frysk-core/frysk/proc/live/TestRuntimeIsa.java     |  101 ++++++---------
 8 files changed, 175 insertions(+), 151 deletions(-)

First 500 lines of diff:
diff --git a/frysk-core/frysk/bindir/ChangeLog b/frysk-core/frysk/bindir/ChangeLog
index 179ded3..3c04859 100644
--- a/frysk-core/frysk/bindir/ChangeLog
+++ b/frysk-core/frysk/bindir/ChangeLog
@@ -1,3 +1,8 @@
+2008-01-25  Andrew Cagney  <cagney@redhat.com>
+
+	* TestFdebuginfo.java (testPathListing()): Mark as unresolved; bug
+	5671.
+
 2008-01-24  Andrew Cagney  <cagney@redhat.com>
 
 	* TestFhd.java: Do not call Expect.close(); do not hard-wire a
diff --git a/frysk-core/frysk/bindir/TestFdebuginfo.java b/frysk-core/frysk/bindir/TestFdebuginfo.java
index 26e7048..3dccc0e 100644
--- a/frysk-core/frysk/bindir/TestFdebuginfo.java
+++ b/frysk-core/frysk/bindir/TestFdebuginfo.java
@@ -51,6 +51,8 @@ import frysk.testbed.SlaveOffspring;
 public class TestFdebuginfo extends TestLib {
 
     public void testPathListing() {
+	if (unresolved(5671))
+	    return;
         // Create an unattached child process.
 	SlaveOffspring child = SlaveOffspring.createChild();
 	Task task = child.findTaskUsingRefresh(true);
diff --git a/frysk-core/frysk/proc/ChangeLog b/frysk-core/frysk/proc/ChangeLog
index cd99c9d..246cbdc 100644
--- a/frysk-core/frysk/proc/ChangeLog
+++ b/frysk-core/frysk/proc/ChangeLog
@@ -9,6 +9,9 @@
 
 2008-01-24  Andrew Cagney  <cagney@redhat.com>
 
+	* Task.java: Mention that ISA can be null.
+	(clearIsa()): Make protected.
+
 	* TaskObserver.java (Signaled): Replace updateSignaled(Task,int)
 	with updateSignaled(Task,Signal).
 	* TestTaskSyscallObserver.java: Update.
diff --git a/frysk-core/frysk/proc/Task.java b/frysk-core/frysk/proc/Task.java
index dd0e331..5e41213 100644
--- a/frysk-core/frysk/proc/Task.java
+++ b/frysk-core/frysk/proc/Task.java
@@ -93,7 +93,12 @@ public abstract class Task {
     protected abstract String getStateFIXME();
 
     /**
-     * Return's this Task's Instruction Set Architecture.
+     * Return's this Task's Instruction Set Architecture; or throw a
+     * NullPointerException if the ISA is not available.
+     *
+     * The isa is only available while the task is under observation
+     * (attached) as an un-observed task can switch isa's (using
+     * exec(2)) undetected.
      */
     public abstract ISA getISA();
 
@@ -337,7 +342,7 @@ public abstract class Task {
      */
     public abstract int getMod();
  
-    public void clearIsa() {
+    protected void clearIsa() {
 	syscallTable = null;
 	signalTable = null;
     }
diff --git a/frysk-core/frysk/proc/live/ChangeLog b/frysk-core/frysk/proc/live/ChangeLog
index 71ff7f4..2895d21 100644
--- a/frysk-core/frysk/proc/live/ChangeLog
+++ b/frysk-core/frysk/proc/live/ChangeLog
@@ -1,5 +1,18 @@
 2008-01-25  Andrew Cagney  <cagney@redhat.com>
 
+	* TestRuntimeIsa.java (assertHasNoIsa(String,Task)): New.
+	(assertHasIsaEquals(String,Task,boolean)): Delete.
+	* LinuxPtraceTask.java (hasIsa()): Delete.
+	(clearIsa()): Make protected.
+	(getISA()): Simplify, throw an NPE when the ISA is null.
+	(sendSetOptions()): Delete.
+	(ptraceOptions): Initialize directly.
+	(startTracingSyscalls(), stopTracingSyscalls()): Call
+	Ptrace.setOptions.
+	(initializeAttachedState()): New.
+	* LinuxPtraceTaskState.java: Call Task.initializeAttachedState(),
+	instead of Task.sendSetOptions() as the task is attached.
+
 	* TestTaskObserverCode.java: Eliminate uses of
 	frysk.sys.Signal.equals(int); import frysk.isa.signals.Signal
 	instead of frysk.sys.Signal.
diff --git a/frysk-core/frysk/proc/live/LinuxPtraceTask.java b/frysk-core/frysk/proc/live/LinuxPtraceTask.java
index 3dfe3f5..9111181 100644
--- a/frysk-core/frysk/proc/live/LinuxPtraceTask.java
+++ b/frysk-core/frysk/proc/live/LinuxPtraceTask.java
@@ -149,18 +149,14 @@ public class LinuxPtraceTask extends LiveTask {
      * Can this instead look at AUXV?
      */
     public ISA getISA() {
-	if (currentISA == null)
-	    // FIXME: This should use task.proc.getExe().  Only that
-	    // causes wierd failures; take a rain-check :-(
-	    currentISA = ElfMap.getISA(new File("/proc/" + getTid() + "/exe"));
-	return currentISA;
+	ISA scratch = currentISA;
+	if (scratch == null)
+	    throw new NullPointerException("ISA unavailable; task "
+					   + this + " has no observers");
+	return scratch;
     }
     private ISA currentISA;
 
-    boolean hasIsa() {
-	return (currentISA != null);
-    }
-
     /**
      * Return the Task's ISA.
      *
@@ -291,26 +287,6 @@ public class LinuxPtraceTask extends LiveTask {
 	Signal.STOP.tkill(getTid());
     }
 
-    private int ptraceOptions;
-    public void sendSetOptions ()
-    {
-	logger.log(Level.FINE, "{0} sendSetOptions\n", this);
-	try
-	    {
-		// XXX: Should be selecting the trace flags based on the
-		// contents of .observers.
-		ptraceOptions |= Ptrace.optionTraceClone();
-		ptraceOptions |= Ptrace.optionTraceFork();
-		ptraceOptions |= Ptrace.optionTraceExit();
-		// ptraceOptions |= Ptrace.optionTraceSysgood (); not set by default
-		ptraceOptions |= Ptrace.optionTraceExec();
-		Ptrace.setOptions(getTid(), ptraceOptions);
-	    }
-	catch (Errno.Esrch e)
-	    {
-		postDisappearedEvent(e);
-	    }
-    }
 
     public void sendAttach ()
     {
@@ -363,18 +339,29 @@ public class LinuxPtraceTask extends LiveTask {
 	}
     }
 
-    public void startTracingSyscalls ()
-    {
+    // XXX: Should be selecting the trace flags based on the contents
+    // of .observers?  Ptrace.optionTraceSysgood not set by default
+    private long ptraceOptions
+	= Ptrace.optionTraceClone()
+	| Ptrace.optionTraceFork()
+	| Ptrace.optionTraceExit()
+	| Ptrace.optionTraceExec();
+    void initializeAttachedState() {
+	logger.log(Level.FINE, "{0} initializeAttachedState\n", this);
+	Ptrace.setOptions(getTid(), ptraceOptions);
+	// FIXME: This should use task.proc.getExe().  Only that
+	// causes wierd failures; take a rain-check :-(
+	currentISA = ElfMap.getISA(new File("/proc/" + getTid() + "/exe"));
+    }
+    void startTracingSyscalls() {
 	logger.log(Level.FINE, "{0} startTracingSyscalls\n", this);
 	ptraceOptions |= Ptrace.optionTraceSysgood();
-	this.sendSetOptions();
+	Ptrace.setOptions(getTid(), ptraceOptions);
     }
-
-    public void stopTracingSyscalls ()
-    {
+    void stopTracingSyscalls() {
 	logger.log(Level.FINE, "{0} stopTracingSyscalls\n", this);
 	ptraceOptions &= ~ (Ptrace.optionTraceSysgood());
-	this.sendSetOptions();
+	Ptrace.setOptions(getTid(), ptraceOptions);
     }
 
 
@@ -714,6 +701,7 @@ public class LinuxPtraceTask extends LiveTask {
 	//Flush the isa in case it has changed between exec's.
 	clearIsa();
 	//XXX: When should the isa be rebuilt?
+	initializeAttachedState();
 	for (Iterator i = execedObservers.iterator(); i.hasNext();) {
 	    TaskObserver.Execed observer = (TaskObserver.Execed) i.next();
 	    if (observer.updateExeced(this) == Action.BLOCK)
@@ -993,7 +981,8 @@ public class LinuxPtraceTask extends LiveTask {
 	setRegister(pcRegister(), addr);
     }
 
-    public void clearIsa() {
+    protected void clearIsa() {
+	logger.log(Level.FINE, "{0} clearIsa\n", this);
 	super.clearIsa();
 	pcRegister = null;
 	memory = null;
diff --git a/frysk-core/frysk/proc/live/LinuxPtraceTaskState.java b/frysk-core/frysk/proc/live/LinuxPtraceTaskState.java
index 5f0b39a..aa1b4cd 100644
--- a/frysk-core/frysk/proc/live/LinuxPtraceTaskState.java
+++ b/frysk-core/frysk/proc/live/LinuxPtraceTaskState.java
@@ -183,13 +183,13 @@ class LinuxPtraceTaskState extends State {
 		    task.sendAttach();
 		    if (task.getProc().getMainTask() == task
 			&& Status.isStopped(task.getTid())) {
-			// The attach has been initiated on the main task
-			// of the process; the process state should
-			// transition to (T) TRACED.  If it is instead (T)
-			// STOPPED then the process is stuck (suspended),
-			// send it a SIGSTOP to unwedge it.  /proc/status
-			// is used as that differentiates between STOPPED
-			// an TRACED.
+			// The attach has been initiated on the main
+			// task of the process; the process state
+			// should transition to (T) TRACED.  If it is
+			// instead (T) STOPPED then the process is
+			// stuck (suspended), send it a SIGSTOP to
+			// unwedge it.  /proc/status is used as that
+			// differentiates between STOPPED an TRACED.
 			logger.log(Level.FINE,
 				   "{0} wake the suspended process", task);
 			Signal.CONT.tkill(task.getTid());
@@ -234,7 +234,9 @@ class LinuxPtraceTaskState extends State {
 		    // Toss the stop event.
 		    signal = Signal.NONE;
 		}
-		((LinuxPtraceProc)task.getProc()).performTaskAttachCompleted(task);
+		task.initializeAttachedState();
+		((LinuxPtraceProc)task.getProc())
+		    .performTaskAttachCompleted(task);
 		return new Attached.WaitForContinueOrUnblock(signal);
 	    }
 	}
@@ -287,6 +289,8 @@ class LinuxPtraceTaskState extends State {
 	LinuxPtraceTaskState handleAddObservation(LinuxPtraceTask task,
 						  TaskObservation observation) {
 	    logger.log(Level.FINE, "{0} handleAddObservation\n", task);
+	    // XXX: Need to check needsSuspendedAction; the task isn't
+	    // stopped.
 	    observation.add();
 	    return this;
 	}
@@ -296,6 +300,8 @@ class LinuxPtraceTaskState extends State {
 	LinuxPtraceTaskState handleDeleteObservation(LinuxPtraceTask task,
 						     TaskObservation observation) {
 	    logger.log(Level.FINE, "{0} handleDeleteObservation\n", task); 
+	    // XXX: Need to check needsSuspendedAction; the task isn't
+	    // stopped.
 	    observation.delete();
 	    return handleUnblock(task, observation.getTaskObserver());
 	}
@@ -348,7 +354,6 @@ class LinuxPtraceTaskState extends State {
 	 */
         static LinuxPtraceTaskState transitionToRunningState(LinuxPtraceTask task, Signal signal) {
 	    logger.log(Level.FINE, "transitionToRunningState\n");
-	    task.sendSetOptions();
 	    if (task.notifyAttached() > 0)
 		return new BlockedSignal(signal, false);
 	    else
@@ -425,9 +430,9 @@ class LinuxPtraceTaskState extends State {
      * influence this assumption: the task stops; and the controlling
      * proc orders an attach.
      *
-     * If the LinuxPtraceTask stops then, once the ForkedOffspring observers have
-     * stopped blocking this, do the detach.  * ForkOffspring
-     * observers of this).
+     * If the LinuxPtraceTask stops then, once the ForkedOffspring
+     * observers have stopped blocking this, do the detach.
+     * ForkOffspring observers of this).
      *
      * If, on the other hand, an attach order is received, change the
      * assumption to that the task should be attached and proceed on
@@ -446,27 +451,32 @@ class LinuxPtraceTaskState extends State {
 	    new StartMainTask("wantToDetach") {
 		LinuxPtraceTaskState handleAttach(LinuxPtraceTask task) {
 		    logger.log(Level.FINE, "{0} handleAttach\n", task); 
-		    ((LinuxPtraceProc)task.getProc()).performTaskAttachCompleted(task);
+		    ((LinuxPtraceProc)task.getProc())
+			.performTaskAttachCompleted(task);
 		    return StartMainTask.wantToAttach;
 		}
 		LinuxPtraceTaskState handleStoppedEvent(LinuxPtraceTask task,
 							Signal signal) {
 		    if (signal == Signal.STOP || signal == Signal.TRAP) {
-			if (task.notifyForkedOffspring() > 0)
+			task.initializeAttachedState();
+			if (task.notifyForkedOffspring() > 0) {
 			    return StartMainTask.detachBlocked;
-			task.sendDetach(Signal.NONE);
-			((LinuxPtraceProc)task.getProc()).performTaskDetachCompleted(task);
-			return detached;
+			} else {
+			    task.sendDetach(Signal.NONE);
+			    ((LinuxPtraceProc)task.getProc())
+				.performTaskDetachCompleted(task);
+			    return detached;
+			}
 		    } else {
 			throw unhandled(task, "handleStoppedEvent " + signal);
 		    }
 		}
 	    };
 	/**
-	 * The detaching LinuxPtraceTask has stopped and the ForkedOffspring
-	 * observers have been notified; just waiting for all the
-	 * ForkedOffspring blockers to be removed before finishing the
-	 * detach.
+	 * The detaching LinuxPtraceTask has stopped and the
+	 * ForkedOffspring observers have been notified; just waiting
+	 * for all the ForkedOffspring blockers to be removed before
+	 * finishing the detach.
 	 */
 	static final LinuxPtraceTaskState detachBlocked =
 	    new StartMainTask("detachBlocked") {
@@ -477,22 +487,30 @@ class LinuxPtraceTaskState extends State {
 		    // (waiting for ForkedOffspring observers to
 		    // unblock before finishing the attach).
 		    logger.log(Level.FINE, "{0} handleAttach\n", task); 
-		    ((LinuxPtraceProc)task.getProc()).performTaskAttachCompleted(task);
+		    ((LinuxPtraceProc)task.getProc())
+			.performTaskAttachCompleted(task);
 		    return StartMainTask.attachBlocked;
 		}
 		LinuxPtraceTaskState handleUnblock(LinuxPtraceTask task,
 						   TaskObserver observer) {
-		    logger.log(Level.FINE, "{0} handleUnblock\n", task); 
+		    logger.log(Level.FINE, "{0} handleUnblock {1}\n",
+			       new Object[] { task, observer }); 
 		    task.blockers.remove(observer);
-		    logger.log(Level.FINER, "{0} handleUnblock number of blockers left {1}\n", new Object[]{task, new Integer(task.blockers.size())}); 
-
+		    logger.log(Level.FINER,
+			       "{0} handleUnblock number blockers left {1}\n",
+			       new Object[]{
+				   task,
+				   new Integer(task.blockers.size())
+			       }); 
 		    if (task.blockers.size() == 0) {
 			// Ya! All the blockers have been removed.
 			task.sendDetach(Signal.NONE);
-			((LinuxPtraceProc)task.getProc()).performTaskDetachCompleted(task);
+			((LinuxPtraceProc)task.getProc())
+			    .performTaskDetachCompleted(task);
 			return detached;
+		    } else {
+			return StartMainTask.detachBlocked;
 		    }
-		    return StartMainTask.detachBlocked;
 		}
 	    };
 	/**
@@ -506,16 +524,19 @@ class LinuxPtraceTaskState extends State {
 		LinuxPtraceTaskState handleAddObservation(LinuxPtraceTask task,
 							  TaskObservation observation) {
 		    logger.log(Level.FINE, "{0} handleAddObservationr\n", task);
-		    // XXX - This should most likely test needsSuspendedAction
+		    // XXX - This should most likely test
+		    // needsSuspendedAction
 		    observation.add();
 		    return this;
 		}
 		LinuxPtraceTaskState handleStoppedEvent(LinuxPtraceTask task,
 							Signal signal) {
 		    if (signal == Signal.STOP || signal == Signal.TRAP) {
+			task.initializeAttachedState();
 			if (task.notifyForkedOffspring() > 0)
 			    return StartMainTask.attachBlocked;
-			return Attached.waitForContinueOrUnblock;
+			else
+			    return Attached.waitForContinueOrUnblock;
 		    } else {
 			throw unhandled(task, "handleStoppedEvent " + signal);
 		    }
@@ -533,20 +554,24 @@ class LinuxPtraceTaskState extends State {
 	    new StartMainTask("wantToAttachContinue") {
 		LinuxPtraceTaskState handleStoppedEvent(LinuxPtraceTask task,
 							Signal signal) {
-		    // Mark this LinuxPtraceTask as just started.  See
-		    // Running.handleTrapped for more explanation.
-		    task.justStartedXXX = true;
-		    if (task.notifyForkedOffspring() > 0)
-			return StartMainTask.attachContinueBlocked;
-		    else {
-			if (signal == Signal.STOP || signal == Signal.TRAP)
-			    // Discard the signal.
-			    signal = Signal.NONE;
-			return Attached.transitionToRunningState(task, signal);
+		    if (signal == Signal.STOP || signal == Signal.TRAP) {
+			task.initializeAttachedState();
+			// Mark this LinuxPtraceTask as just started.  See
+			// Running.handleTrapped for more explanation.
+			task.justStartedXXX = true;
+			if (task.notifyForkedOffspring() > 0) {
+			    return StartMainTask.attachContinueBlocked;
+			} else {
+			    // Discard the stop signal.
+			    return Attached
+				.transitionToRunningState(task, Signal.NONE);
+			}
+		    } else {
+			throw unhandled(task, "handleStoppedEvent " + signal);
 		    }
 		}
-
-		// Adding or removing observers doesn't impact this state.
+		// Adding or removing observers doesn't impact this
+		// state.
 		LinuxPtraceTaskState handleAddObservation(LinuxPtraceTask task,
 							  TaskObservation to) {
 		    logger.log(Level.FINE, "{0} handleAddObservation\n", task);
@@ -605,7 +630,9 @@ class LinuxPtraceTaskState extends State {
 		    task.blockers.remove(observer);
 		    if (task.blockers.size() > 0)
 			return StartMainTask.attachContinueBlocked;
-		    return Attached.transitionToRunningState(task, Signal.NONE);
+		    else
+			return Attached.transitionToRunningState(task,
+								 Signal.NONE);
 		}
 	    };
     }
@@ -618,20 +645,22 @@ class LinuxPtraceTaskState extends State {
 	StartClonedTask(String name) {
 	    super("StartClonedTask." + name);
 	}
-	LinuxPtraceTaskState handleAddObservation(LinuxPtraceTask task, TaskObservation observation) {
+	LinuxPtraceTaskState handleAddObservation(LinuxPtraceTask task,
+						  TaskObservation observation) {
 	    logger.log(Level.FINE, "{0} handleAddObservation\n", task);
-	    // XXX most likely need to check needsSuspendedAction
+	    // XXX: Need to check needsSuspendedAction; the task isn't
+	    // stopped.
 	    observation.add();
 	    return this;
 	}
 	LinuxPtraceTaskState handleDeleteObservation(LinuxPtraceTask task,
 						     TaskObservation observation) {
 	    logger.log(Level.FINE, "{0} handleDeleteObservation\n", task); 
-	    // XXX most likely need to check needsSuspendedAction
+	    // XXX: Need to check needsSuspendedAction; the task isn't
+	    // stopped.
 	    observation.delete();
 	    return this;
 	}
-
 	static final LinuxPtraceTaskState waitForStop =
 	    new StartClonedTask("waitForStop") {
 		LinuxPtraceTaskState handleUnblock(LinuxPtraceTask task,
@@ -645,7 +674,7 @@ class LinuxPtraceTaskState extends State {
 							Signal signal) {
 		    if (signal == Signal.STOP || signal == Signal.TRAP) {
 			// Attempt an attached continue.
-			task.sendSetOptions ();
+			task.initializeAttachedState();
 			if(task.notifyClonedOffspring() > 0)
 			    return StartClonedTask.blockedOffspring;
 			// XXX: Really notify attached here?
@@ -657,7 +686,6 @@ class LinuxPtraceTaskState extends State {
 		    }
 		}
 	    };
-	
 	private static final LinuxPtraceTaskState blockedOffspring =
 	    new StartClonedTask("blockedOffspring") {
 		LinuxPtraceTaskState handleUnblock(LinuxPtraceTask task,
@@ -667,9 +695,8 @@ class LinuxPtraceTaskState extends State {
 		    if (task.blockers.size() > 0)
 			return StartClonedTask.blockedOffspring;
 		    // XXX: Really notify attached here?
-		    if (task.notifyAttached() > 0) {
+		    if (task.notifyAttached() > 0)
 			return blockedContinue;
-		    }
 		    return running.sendContinue(task, Signal.NONE);
 		}
 	    };
@@ -876,7 +903,8 @@ class LinuxPtraceTaskState extends State {
 	    
 	    if (shouldRemoveObservers)
 		task.removeObservers();  
-	    // XXX: Otherwise check if there are still observers and panic?
+	    // XXX: Otherwise check if there are still observers and
+	    // panic?
         
 	    // Can't detach a running task, first need to stop it.                
 	    task.sendStop();
diff --git a/frysk-core/frysk/proc/live/TestRuntimeIsa.java b/frysk-core/frysk/proc/live/TestRuntimeIsa.java
index 81fb7a1..b0e9601 100644
--- a/frysk-core/frysk/proc/live/TestRuntimeIsa.java
+++ b/frysk-core/frysk/proc/live/TestRuntimeIsa.java
@@ -54,10 +54,14 @@ import frysk.proc.Manager;
 
 public class TestRuntimeIsa extends TestLib {
 
-    private static void assertHasIsaEquals(String reason, Task task,
-					   boolean hasIsa) {
-	assertEquals("Has ISA (" + reason + ")", hasIsa,


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


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2008-02-26 20:15 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-02-26 20:15 [SCM] master: frysk-core/frysk/bindir/ChangeLog cagney
  -- strict thread matches above, loose matches on Subject: below --
2008-02-19 16:19 cagney
2008-01-25 17:32 cagney

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).