public inbox for frysk-cvs@sourceware.org
help / color / mirror / Atom feed
From: cagney@sourceware.org
To: frysk-cvs@sourceware.org
Subject: [SCM]  master: Delete remaining parseCoreFIXME-s.
Date: Wed, 27 Feb 2008 05:05:00 -0000	[thread overview]
Message-ID: <20080227050506.14385.qmail@sourceware.org> (raw)

The branch, master has been updated
       via  e843db654791fb4bf47fd301bc18499d0ade8cb0 (commit)
      from  79569bf5e4b48be2efebcea902795514f238ca9f (commit)

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

- Log -----------------------------------------------------------------
commit e843db654791fb4bf47fd301bc18499d0ade8cb0
Author: Andrew Cagney <cagney@redhat.com>
Date:   Wed Feb 27 00:03:28 2008 -0500

    Delete remaining parseCoreFIXME-s.
    
    frysk-core/frysk/bindir/ChangeLog
    2008-02-26  Andrew Cagney  <cagney@redhat.com>
    
    	* fhpd.java (parseCommand(Proc)): Replace parseCommandFIXME.
    	(parseCores(Proc[]): Replace parseCoresFIXME.
    	(-noexe): Delete; moved to CommandlineParser.
    	* TestFauxv.java (fauxv(File)): Specify -noexe.
    
    frysk-core/frysk/hpd/ChangeLog
    2008-02-26  Andrew Cagney  <cagney@redhat.com>
    
    	* LoadCommand.java (load(Proc,CLI,String)): New.
    	* CoreCommand.java (load(Proc,CLI,String)): New.
    	* AttachCommand.java (attach(Proc,CLI,String)): New.
    
    frysk-core/frysk/proc/dead/ChangeLog
    2008-02-26  Andrew Cagney  <cagney@redhat.com>
    
    	* LinuxCoreFactory.java (createProc(File,boolean)): New.
    	* LinuxCoreInfo.java: Use the extracted exeFile.
    
    frysk-core/frysk/util/ChangeLog
    2008-02-26  Andrew Cagney  <cagney@redhat.com>
    
    	* CommandlineParser.java (parseCoresFIXME(CoreExePair[])): Delete.
    	(-noexe): Add.

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

Summary of changes:
 frysk-core/frysk/bindir/ChangeLog                |    5 +
 frysk-core/frysk/bindir/TestFauxv.java           |    3 +-
 frysk-core/frysk/bindir/fhpd.java                |   88 ++++++++--------------
 frysk-core/frysk/hpd/AttachCommand.java          |   11 ++-
 frysk-core/frysk/hpd/ChangeLog                   |    4 +
 frysk-core/frysk/hpd/CoreCommand.java            |   11 ++-
 frysk-core/frysk/hpd/KillCommand.java            |   11 ++-
 frysk-core/frysk/hpd/LoadCommand.java            |    9 ++-
 frysk-core/frysk/proc/dead/ChangeLog             |    3 +
 frysk-core/frysk/proc/dead/LinuxCoreFactory.java |    8 ++
 frysk-core/frysk/proc/dead/LinuxCoreInfo.java    |    2 +-
 frysk-core/frysk/util/ChangeLog                  |    3 +
 frysk-core/frysk/util/CommandlineParser.java     |   47 +++++-------
 13 files changed, 104 insertions(+), 101 deletions(-)

First 500 lines of diff:
diff --git a/frysk-core/frysk/bindir/ChangeLog b/frysk-core/frysk/bindir/ChangeLog
index 340a72c..8a6d763 100644
--- a/frysk-core/frysk/bindir/ChangeLog
+++ b/frysk-core/frysk/bindir/ChangeLog
@@ -1,5 +1,10 @@
 2008-02-26  Andrew Cagney  <cagney@redhat.com>
 
+	* fhpd.java (parseCommand(Proc)): Replace parseCommandFIXME.
+	(parseCores(Proc[]): Replace parseCoresFIXME.
+	(-noexe): Delete; moved to CommandlineParser.
+	* TestFauxv.java (fauxv(File)): Specify -noexe.
+
 	* fstack.java (parseCores(Proc[])): Replace parseCoresFIXME.
 	(stackCore(Proc)): Replace stackCore(CoreExePair).
 
diff --git a/frysk-core/frysk/bindir/TestFauxv.java b/frysk-core/frysk/bindir/TestFauxv.java
index 98e3812..a8c01b5 100644
--- a/frysk-core/frysk/bindir/TestFauxv.java
+++ b/frysk-core/frysk/bindir/TestFauxv.java
@@ -47,9 +47,10 @@ import frysk.testbed.TestLib;
 public class TestFauxv extends TestLib {
     
     private TearDownExpect fauxv(File coreFile) {
-	String[] argv = new String[2];
+	String[] argv = new String[3];
 	int argc = 0;
 	argv[argc++] = Config.getBinFile("fauxv").getAbsolutePath();
+	argv[argc++] = "-noexe";
 	argv[argc++] = coreFile.getAbsolutePath();
 	return new TearDownExpect(argv);
     }
diff --git a/frysk-core/frysk/bindir/fhpd.java b/frysk-core/frysk/bindir/fhpd.java
index ab55c52..3a5f285 100644
--- a/frysk-core/frysk/bindir/fhpd.java
+++ b/frysk-core/frysk/bindir/fhpd.java
@@ -39,8 +39,10 @@
 
 package frysk.bindir;
 
+import frysk.hpd.CoreCommand;
+import frysk.hpd.LoadCommand;
+import frysk.hpd.AttachCommand;
 import frysk.event.Event;
-import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.PrintWriter;
@@ -48,7 +50,6 @@ import java.util.List;
 import frysk.hpd.CLI;
 import jline.Completor;
 import jline.ConsoleReader;
-import frysk.util.CoreExePair;
 import frysk.proc.Manager;
 import frysk.util.CommandlineParser;
 import frysk.util.ObservingTerminal;
@@ -58,11 +59,9 @@ import frysk.sys.FileDescriptor;
 import frysk.proc.Proc;
 
 public class fhpd {
-    private static Proc[] procs;
-    private static File execFile;
-    private static File core;
-    private static File exeFile;
-    private static boolean noExe = false;
+    private static Proc[] pids;
+    private static Proc command;
+    private static Proc[] cores;
     private static String sysroot;
     private static int exitStatus;
 
@@ -84,28 +83,9 @@ public class fhpd {
 	private CLI cli;
 	private ConsoleReader reader;
 	CommandLine() {
-	    // Construct a command to pass in as initialization
-	    try {
-		if (procs != null)
-		    line = "attach " + procs[0].getPid();
-		else if (execFile != null)
-		    line = "load " + execFile.getCanonicalPath();
-		else if (core != null) {
-		    line = "core " + core.getCanonicalPath();      
-		    if (exeFile != null)
-			line += " " + exeFile.getCanonicalPath();
-		    else if (noExe)
-			line +=" -noexe";
-		}
-		if (sysroot != null)
-		    line = line + " -sysroot " + sysroot;
-	    } catch (IOException e) {
-		System.err.println("Error: " + e);
-		System.exit(1);
-		return;
-	    }
 	    // Construct the HPD.
 	    cli = new CLI("(fhpd) ", System.out);
+
 	    try {
 		reader = new ConsoleReader
 		    (new FileInputStream(java.io.FileDescriptor.in),
@@ -125,14 +105,26 @@ public class fhpd {
 	    start();
 	}
 	public void run() {
+	    // Prime the CLI based on the parameters.
+	    if (pids != null) {
+		for (int i = 0; i < pids.length; i++) {
+		    AttachCommand.attach(pids[i], cli, sysroot);
+		}
+	    } else if (cores != null) {
+		for (int i = 0; i < cores.length; i++) {
+		    CoreCommand.load(cores[i], cli, sysroot);
+		}
+	    } else if (command != null) {
+		LoadCommand.load(command, cli, sysroot);
+	    }
+
 	    try {
-		cli.execCommand(line);
-		while (line != null && ! (line.equals("quit")
-					  || line.equals("q")
-					  || line.equals("exit"))) {
+		do {
 		    line = reader.readLine(cli.getPrompt());
 		    cli.execCommand(line);
-		}
+		} while (line != null && ! (line.equals("quit")
+					    || line.equals("q")
+					    || line.equals("exit")));
 	    } catch (IOException ioe) {
 		System.out.println("ERROR: Could not read from command line");
 		System.out.print(ioe.getMessage());
@@ -145,36 +137,18 @@ public class fhpd {
     public static void main (String[] args) {
         CommandlineParser parser = new CommandlineParser ("fhpd") {
                 //@Override
-                public void parseCommandFIXME(String[] command) {
-                    execFile = new File (command[0]);
-                    if (execFile.canRead() == false) {
-                        printHelp();
-                        throw new RuntimeException("command not readable: " 
-                                                   + command[0]);
-                    }
+                public void parseCommand(Proc command) {
+		    fhpd.command = command;
                 }
                 //@Override
-                public void parsePids(Proc[] procs) {
-		    fhpd.procs = procs;
+                public void parsePids(Proc[] pids) {
+		    fhpd.pids = pids;
                 }
-
-                public void parseCoresFIXME(CoreExePair[] corePairs) {
-                    core = corePairs[0].coreFile;
-                    exeFile = corePairs[0].exeFile;
+                //@Override
+                public void parseCores(Proc[] cores) {
+                    fhpd.cores = cores;
                 }
             };
-        parser.add(new Option("noexe", "Do not attempt to read an"+
-                              " executable for a corefile ") {
-                public void parsed(String exeValue) throws OptionException {
-                    try {
-                        noExe = true;
-	    
-                    } catch (IllegalArgumentException e) {
-                        throw new OptionException("Invalid noexe parameter "
-                                                  + exeValue);
-                    }
-                }
-            });
         parser.add(new Option("sysroot", 's',
                               "Assume the executable is from a sysroot build ",
                               "SysRoot-Path") {
diff --git a/frysk-core/frysk/hpd/AttachCommand.java b/frysk-core/frysk/hpd/AttachCommand.java
index 3202e8b..d48ee15 100644
--- a/frysk-core/frysk/hpd/AttachCommand.java
+++ b/frysk-core/frysk/hpd/AttachCommand.java
@@ -45,7 +45,7 @@ import frysk.proc.Manager;
 import frysk.proc.FindProc;
 import java.util.List;
 
-class AttachCommand extends ParameterizedCommand {
+public class AttachCommand extends ParameterizedCommand {
 
     private class ProcFinder implements FindProc {
 	Proc proc = null;
@@ -116,11 +116,16 @@ class AttachCommand extends ParameterizedCommand {
 		cli.outWriter.println(pid);
 		continue;
 	    }
-	    DwflCache.setSysroot(findProc.proc.getMainTask(), o.sysroot);
-	    cli.doAttach(findProc.proc, false);
+	    
+	    attach(findProc.proc, cli, o.sysroot);
 	}
     }
 
+    public static void attach(Proc proc, CLI cli, String sysroot) {
+	DwflCache.setSysroot(proc.getMainTask(), sysroot);
+	cli.doAttach(proc, false);
+    }
+
     int completer(CLI cli, Input input, int base, List completions) {
 	return -1;
     }
diff --git a/frysk-core/frysk/hpd/ChangeLog b/frysk-core/frysk/hpd/ChangeLog
index 6453b60..1199c61 100644
--- a/frysk-core/frysk/hpd/ChangeLog
+++ b/frysk-core/frysk/hpd/ChangeLog
@@ -1,5 +1,9 @@
 2008-02-26  Andrew Cagney  <cagney@redhat.com>
 
+	* LoadCommand.java (load(Proc,CLI,String)): New.
+	* CoreCommand.java (load(Proc,CLI,String)): New.
+	* AttachCommand.java (attach(Proc,CLI,String)): New.
+	
 	* CoreCommand.java: Update to match LinuxCoreFactory.
 
 	* LoadCommand.java: Update to match LinuxExeFactory.
diff --git a/frysk-core/frysk/hpd/CoreCommand.java b/frysk-core/frysk/hpd/CoreCommand.java
index d40653a..4439dab 100644
--- a/frysk-core/frysk/hpd/CoreCommand.java
+++ b/frysk-core/frysk/hpd/CoreCommand.java
@@ -116,6 +116,10 @@ public class CoreCommand extends ParameterizedCommand {
 	Proc coreProc = LinuxCoreFactory.createProc(coreFile, exeFile,
 						    options.loadMetaData);
 
+	load(coreProc, cli, options.sysroot);
+    }
+
+    public static void load(Proc coreProc, CLI cli, String sysroot) {
 	// All checks are done. Host is built. Now start reserving
 	// space in the sets.
 	int procID = cli.idManager.reserveProcID();
@@ -128,15 +132,14 @@ public class CoreCommand extends ParameterizedCommand {
 		.createVirtualStackTrace(task);
 	    cli.setTaskFrame(task, frame);
 	    cli.setTaskDebugInfo(task, new DebugInfo(frame));
-	    DwflCache.setSysroot(task, options.sysroot);
+	    DwflCache.setSysroot(task, sysroot);
 	}
-
 	// Finally, done.
-	cli.addMessage("Attached to core file: " + cmd.parameter(0),
-		       Message.TYPE_NORMAL);
 	synchronized (cli) {
 	    cli.getCoreProcs().put(coreProc, new Integer(procID));
 	}
+	cli.outWriter.println("Attached to core file: "
+			      + coreProc.getHost().getName());
     }
 
     int completer(CLI cli, Input input, int cursor, List completions) {
diff --git a/frysk-core/frysk/hpd/KillCommand.java b/frysk-core/frysk/hpd/KillCommand.java
index 5291c87..13f9bfd 100644
--- a/frysk-core/frysk/hpd/KillCommand.java
+++ b/frysk-core/frysk/hpd/KillCommand.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
@@ -72,11 +72,12 @@ public class KillCommand extends ParameterizedCommand {
 	    Task task = taskData.getTask();
 	    Proc proc = task.getProc();
 	    if (proc.getPid() != procPID) {
-		cli.addMessage("Killing process " + proc.getPid() +
-			" that was created from " + proc.getExe(),
-			Message.TYPE_NORMAL);
+		cli.outWriter.println("Killing process " + proc.getPid()
+				      + " that was created from "
+				      + proc.getExe());
 		// Save the procs we are killing so we can re-load them later
-		saveProcs.put(new Integer(taskData.getParentID()), proc.getExe());
+		saveProcs.put(new Integer(taskData.getParentID()),
+			      proc.getExe());
 		procPID = proc.getPid();
 		// Now, call the Proc object to kill off the executable(s)
 		proc.requestKill();
diff --git a/frysk-core/frysk/hpd/LoadCommand.java b/frysk-core/frysk/hpd/LoadCommand.java
index f1b3b64..2493f1d 100644
--- a/frysk-core/frysk/hpd/LoadCommand.java
+++ b/frysk-core/frysk/hpd/LoadCommand.java
@@ -110,6 +110,10 @@ public class LoadCommand extends ParameterizedCommand {
 	Proc exeProc = LinuxExeFactory.createProc(executableFile,
 						  cmd.stringArrayValue());
 
+	load(exeProc, cli, o.sysroot);
+    }
+
+    public static void load(Proc exeProc, CLI cli, String sysroot) {
 	int procID;
 	if (cli.taskID < 0)
 	    procID = cli.idManager.reserveProcID();
@@ -126,15 +130,14 @@ public class LoadCommand extends ParameterizedCommand {
 			.createDebugInfoStackTrace(task);
 		cli.setTaskFrame(task, frame);
 		cli.setTaskDebugInfo(task, new DebugInfo(frame));
-		DwflCache.setSysroot(task, o.sysroot);
+		DwflCache.setSysroot(task, sysroot);
 	    }
 	}
 	synchronized (cli) {
 	    cli.getLoadedProcs().put(exeProc, new Integer(procID));
 	}
 
-	cli.addMessage("Loaded executable file: " + cmd.parameter(0),
-		Message.TYPE_NORMAL);
+	cli.outWriter.println("Loaded executable file: " + exeProc.getExe());
     }
     
     int completer(CLI cli, Input input, int cursor, List completions) {
diff --git a/frysk-core/frysk/proc/dead/ChangeLog b/frysk-core/frysk/proc/dead/ChangeLog
index f7d188f..5984330 100644
--- a/frysk-core/frysk/proc/dead/ChangeLog
+++ b/frysk-core/frysk/proc/dead/ChangeLog
@@ -1,5 +1,8 @@
 2008-02-26  Andrew Cagney  <cagney@redhat.com>
 
+	* LinuxCoreFactory.java (createProc(File,boolean)): New.
+	* LinuxCoreInfo.java: Use the extracted exeFile.
+
 	* TestLinuxCore.java: Update to match Proc.
 
 	* TestLinuxExe.java (testRequestProc()): New.
diff --git a/frysk-core/frysk/proc/dead/LinuxCoreFactory.java b/frysk-core/frysk/proc/dead/LinuxCoreFactory.java
index c663d6f..5683a4c 100644
--- a/frysk-core/frysk/proc/dead/LinuxCoreFactory.java
+++ b/frysk-core/frysk/proc/dead/LinuxCoreFactory.java
@@ -70,6 +70,14 @@ public class LinuxCoreFactory {
 	return createProc(coreFile, null, false);
     }
     /**
+     * Construct a core file, possibly with extended meta data.
+     *
+     * All File paths <b>must</b> be canonical.
+     */
+    public static DeadProc createProc(File coreFile, boolean extendedMetaData) {
+	return createProc(coreFile, null, extendedMetaData);
+    }
+    /**
      * Construct a core file with extended meta data taken from the
      * executable.
      *
diff --git a/frysk-core/frysk/proc/dead/LinuxCoreInfo.java b/frysk-core/frysk/proc/dead/LinuxCoreInfo.java
index d239a4b..0d4e825 100644
--- a/frysk-core/frysk/proc/dead/LinuxCoreInfo.java
+++ b/frysk-core/frysk/proc/dead/LinuxCoreInfo.java
@@ -119,7 +119,7 @@ class LinuxCoreInfo {
 	    // have to extract this from the process information).
 	    this.exeFile = getExeFile(exeParam, args, prpsInfo);
 	    if (extendedMetaData)
-		exeElf = new Elf(exeParam, ElfCommand.ELF_C_READ);
+		exeElf = new Elf(this.exeFile, ElfCommand.ELF_C_READ);
 
 	    this.auxv = constructAuxv(noteSection);
 
diff --git a/frysk-core/frysk/util/ChangeLog b/frysk-core/frysk/util/ChangeLog
index fbe5f51..cb51cfa 100644
--- a/frysk-core/frysk/util/ChangeLog
+++ b/frysk-core/frysk/util/ChangeLog
@@ -1,5 +1,8 @@
 2008-02-26  Andrew Cagney  <cagney@redhat.com>
 
+	* CommandlineParser.java (parseCoresFIXME(CoreExePair[])): Delete.
+	(-noexe): Add.
+
 	* Util.java (getProcFromCoreExePair(CoreExePair)): Delete.
 
 	* CommandlineParser.java: Add logging; check for null
diff --git a/frysk-core/frysk/util/CommandlineParser.java b/frysk-core/frysk/util/CommandlineParser.java
index d5cedd3..7f14c06 100644
--- a/frysk-core/frysk/util/CommandlineParser.java
+++ b/frysk-core/frysk/util/CommandlineParser.java
@@ -62,10 +62,17 @@ import frysk.proc.Proc;
 public class CommandlineParser {
     private final Log fine = Log.fine(CommandlineParser.class);
     private final Parser parser;
+    private boolean extendedCore = true;
 
     public CommandlineParser(String name, String version) {
 	parser = new Parser(name, version, true);
 	EventLogger.addConsoleOptions(parser);
+	add(new Option("noexe", "Do not attempt to read an"+
+		       " executable for a corefile ") {
+		public void parsed(String exeValue) throws OptionException {
+		    extendedCore = false;
+		}
+	    });
     }
 
     public CommandlineParser(String programName) {
@@ -90,25 +97,6 @@ public class CommandlineParser {
      * @param coreFiles The array of core files passed on the command
      * line.
      */
-    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);
@@ -180,26 +168,31 @@ public class CommandlineParser {
 
 	// Check if arguments are all core file/ exe file pairs..
 	if (isCoreFile(result[0])) {
-	    LinkedList coreExeFiles = new LinkedList();
+	    LinkedList coreList = new LinkedList();
 	    for (int file = 0; file < result.length; /*see below*/) {
 		if (isCoreFile(result[file])) {
+		    Proc proc;
 		    File coreFile = new File(result[file]);
-		    if (file + 1 < result.length && isExeFile(result[file + 1])) {
+		    if (file + 1 < result.length
+			&& isExeFile(result[file + 1])
+			&& extendedCore) {
 			File exeFile = new File(result[file + 1]);
-			coreExeFiles.add(new CoreExePair(coreFile, exeFile));
+			proc = LinuxCoreFactory.createProc(coreFile, exeFile);
 			file += 2;
 		    } else {
-			coreExeFiles.add(new CoreExePair(coreFile, null));
+			proc = LinuxCoreFactory.createProc(coreFile,
+							   extendedCore);
 			file += 1;
 		    }
+		    coreList.add(proc);
 		} else {
 		    throw new OptionException("Please don't mix core files with pids or executables.");
 		}
 	    }
-	    CoreExePair[] coreExePairs = new CoreExePair[coreExeFiles.size()];
-	    coreExeFiles.toArray(coreExePairs);
-	    fine.log(this, "parse cores", coreExePairs);
-	    parseCoresFIXME(coreExePairs);
+	    Proc[] cores = new Proc[coreList.size()];
+	    coreList.toArray(cores);
+	    fine.log(this, "parse cores", cores);
+	    parseCores(cores);
 	    return result;
 	}
 


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


                 reply	other threads:[~2008-02-27  5:05 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

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=20080227050506.14385.qmail@sourceware.org \
    --to=cagney@sourceware.org \
    --cc=frysk-cvs@sourceware.org \
    --cc=frysk@sourceware.org \
    /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;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).