This is the mail archive of the frysk-cvs@sources.redhat.com mailing list for the frysk project.


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

[SCM] master: Have fexe display rooted and sysrooted exe path.


The branch, master has been updated
       via  8bc2a5f7ab0678b6ea2a098b38ab4d50bb0ad46d (commit)
      from  fb1aff6a18a09b899212c3f7ad7c2fbef9f0a2ca (commit)

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

- Log -----------------------------------------------------------------
commit 8bc2a5f7ab0678b6ea2a098b38ab4d50bb0ad46d
Author: Stan Cox <scox@redhat.com>
Date:   Thu Mar 27 11:45:15 2008 -0400

    Have fexe display rooted and sysrooted exe path.
    
    * fexe.java (executeLive): Also show sysrooted exe path.
    (executeDead): Likewise.
    * Proc.java (getExeFile): New.
    * TestLinuxExe.java (testSysRootedProc): New.
    * LinuxExeProc.java (LinuxExeProc): Make SysRootFile aware.
    (getExeFile): New.
    * LinuxExeHost.java (LinuxExeHost): Likewise.
    * LinuxExeFactory.java (createElfProc): Likewise.
    (createProc): Likewise.
    * LinuxCoreProc.java (getExeFile): New.
    * DummyProc.java (getExeFile): New.
    * LinuxPtraceProc.java (getExeFile): New.
    * SysRootFile.java (getSysRoot): Make public.
    (getFile): Likewise.

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

Summary of changes:
 frysk-core/frysk/bindir/ChangeLog               |    5 +++++
 frysk-core/frysk/bindir/fexe.java               |   22 +++++++++++++++++++---
 frysk-core/frysk/proc/ChangeLog                 |    4 ++++
 frysk-core/frysk/proc/Proc.java                 |    7 +++++++
 frysk-core/frysk/proc/dead/ChangeLog            |   10 ++++++++++
 frysk-core/frysk/proc/dead/LinuxCoreProc.java   |   10 ++++++++++
 frysk-core/frysk/proc/dead/LinuxExeFactory.java |   14 ++++++++------
 frysk-core/frysk/proc/dead/LinuxExeHost.java    |    8 ++++----
 frysk-core/frysk/proc/dead/LinuxExeProc.java    |   14 +++++++++-----
 frysk-core/frysk/proc/dead/TestLinuxExe.java    |   13 ++++++++++++-
 frysk-core/frysk/proc/dummy/ChangeLog           |    4 ++++
 frysk-core/frysk/proc/dummy/DummyProc.java      |    4 ++++
 frysk-core/frysk/proc/live/ChangeLog            |    4 ++++
 frysk-core/frysk/proc/live/LinuxPtraceProc.java |    8 ++++++++
 frysk-core/frysk/sysroot/ChangeLog              |    5 +++++
 frysk-core/frysk/sysroot/SysRootFile.java       |    4 ++--
 16 files changed, 115 insertions(+), 21 deletions(-)

First 500 lines of diff:
diff --git a/frysk-core/frysk/bindir/ChangeLog b/frysk-core/frysk/bindir/ChangeLog
index 64cf1f6..a5d7c1d 100644
--- a/frysk-core/frysk/bindir/ChangeLog
+++ b/frysk-core/frysk/bindir/ChangeLog
@@ -1,3 +1,8 @@
+2008-03-27  Stan Cox  <scox@redhat.com>
+
+	* fexe.java (executeLive): Also show sysrooted exe path.
+	(executeDead): Likewise.
+
 2008-03-25  Sami Wagiaalla  <swagiaal@redhat.com>
 
 	Reimplemented ProcFollowUtil based on ProcRunUtil.
diff --git a/frysk-core/frysk/bindir/fexe.java b/frysk-core/frysk/bindir/fexe.java
index 962be16..08c3e73 100644
--- a/frysk-core/frysk/bindir/fexe.java
+++ b/frysk-core/frysk/bindir/fexe.java
@@ -74,23 +74,39 @@ public class fexe
     private static class PrintExeEvent implements ProcEvent
     {	
 	public void executeLive(Proc proc) {
+	    String sysRoot = proc.getExeFile().getSysRoot().getAbsolutePath();
+	    String sysRootedPath;
+	    if (sysRoot.compareTo("/") == 0)
+		sysRootedPath= "";
+	    else 
+		sysRootedPath = "\n(" + proc.getExe() + ")";
 	    if (verbose) {
 		ProcessIdentifier pid
 		= ProcessIdentifierFactory.create(proc.getPid());
 		System.out.println(  proc.getPid()
 			           + " "
-			           + proc.getExe()
+			           + proc.getExeFile().getFile().getAbsolutePath()
 			           + " "
-			           + Exe.get(pid));
+			           + Exe.get(pid)
+			           + " "
+			           + sysRootedPath);
 	    } else 
 		System.out.println(proc.getExe());
 	}
 	
 	public void executeDead(Proc proc) {
+	    String sysRoot = proc.getExeFile().getSysRoot().getAbsolutePath();
+	    String sysRootedPath;
+	    if (sysRoot.compareTo("/") == 0)
+		sysRootedPath= "";
+	    else 
+		sysRootedPath = "\n(" + proc.getExe() + ")";
 	    if (verbose) {
 		System.out.println(proc.getHost().getName()
 			           + " "
-			           + proc.getExe());
+			           + proc.getExeFile().getFile().getAbsolutePath()
+			           + " "
+			           + sysRootedPath);
 	    } else {
 		System.out.println(proc.getExe());
 	    }
diff --git a/frysk-core/frysk/proc/ChangeLog b/frysk-core/frysk/proc/ChangeLog
index 90ec27c..17134d9 100644
--- a/frysk-core/frysk/proc/ChangeLog
+++ b/frysk-core/frysk/proc/ChangeLog
@@ -1,3 +1,7 @@
+2008-03-27  Stan Cox  <scox@redhat.com>
+
+	* Proc.java (getExeFile): New.
+
 2008-03-20  Andrew Cagney  <cagney@redhat.com>
 
 	* ProcTasksAction.java: Rename ProcTasksObserver.
diff --git a/frysk-core/frysk/proc/Proc.java b/frysk-core/frysk/proc/Proc.java
index 4e66cb9..4266b4d 100644
--- a/frysk-core/frysk/proc/Proc.java
+++ b/frysk-core/frysk/proc/Proc.java
@@ -51,6 +51,7 @@ import frysk.sys.ProcessIdentifierFactory;
 import frysk.event.Event;
 import frysk.sys.Signal;
 import frysk.rsl.Log;
+import frysk.sysroot.SysRootFile;
 
 /**
  * A UNIX Process, containing tasks, memory, ...
@@ -93,6 +94,12 @@ public abstract class Proc implements Comparable {
      * running.
      */
     public abstract String getExe();
+    
+    /**
+     * Return the SysRoot path of the program that this process is
+     * running.
+     */
+    public abstract SysRootFile getExeFile();
 
     /**
      * Return the UID of the Proc.
diff --git a/frysk-core/frysk/proc/dead/ChangeLog b/frysk-core/frysk/proc/dead/ChangeLog
index 8a6170a..dce5aa2 100644
--- a/frysk-core/frysk/proc/dead/ChangeLog
+++ b/frysk-core/frysk/proc/dead/ChangeLog
@@ -1,3 +1,13 @@
+2008-03-27  Stan Cox  <scox@redhat.com>
+
+	* TestLinuxExe.java (testSysRootedProc): New.
+	* LinuxExeProc.java (LinuxExeProc): Make SysRootFile aware.
+	(getExeFile): New.
+	* LinuxExeHost.java (LinuxExeHost): Likewise.
+	* LinuxExeFactory.java (createElfProc): Likewise.
+	(createProc): Likewise.
+	* LinuxCoreProc.java (getExeFile): New.
+
 2008-03-17  Andrew Cagney  <cagney@redhat.com>
 
 	* DeadProc.java (requestRefresh()): Delete.
diff --git a/frysk-core/frysk/proc/dead/LinuxCoreProc.java b/frysk-core/frysk/proc/dead/LinuxCoreProc.java
index 73e0dc4..9d05b3b 100644
--- a/frysk-core/frysk/proc/dead/LinuxCoreProc.java
+++ b/frysk-core/frysk/proc/dead/LinuxCoreProc.java
@@ -39,9 +39,13 @@
 
 package frysk.proc.dead;
 
+import java.io.File;
+
 import frysk.proc.Auxv;
 import frysk.proc.MemoryMap;
 import frysk.rsl.Log;
+import frysk.sysroot.SysRootCache;
+import frysk.sysroot.SysRootFile;
 import frysk.proc.Task;
 
 public class LinuxCoreProc extends DeadProc {
@@ -73,6 +77,12 @@ public class LinuxCoreProc extends DeadProc {
 	return exe;
     }
 
+    public SysRootFile getExeFile() {
+	String exe = getExe();
+	File exeFile = new File(exe);
+	return new SysRootFile(SysRootCache.getSysRoot(exeFile.getName()), exeFile); 
+    }
+    
     public int getUID() {
 	fine.log(this,"getUID()", info.prpsInfo.getPrUid());
 	return (int) info.prpsInfo.getPrUid();
diff --git a/frysk-core/frysk/proc/dead/LinuxExeFactory.java b/frysk-core/frysk/proc/dead/LinuxExeFactory.java
index 847c9d2..5c29441 100644
--- a/frysk-core/frysk/proc/dead/LinuxExeFactory.java
+++ b/frysk-core/frysk/proc/dead/LinuxExeFactory.java
@@ -52,6 +52,7 @@ import frysk.rsl.Log;
 import frysk.solib.SOLibMapBuilder;
 import frysk.sysroot.SysRoot;
 import frysk.sysroot.SysRootCache;
+import frysk.sysroot.SysRootFile;
 
 public class LinuxExeFactory {
     private static final Log fine = Log.fine(LinuxExeFactory.class);
@@ -61,8 +62,10 @@ public class LinuxExeFactory {
      */
     private static DeadProc createElfProc(final File exeFile, String[] args) {
 	Elf exeElf = null;
+	final SysRootFile sysRootFile = new SysRootFile(SysRootCache.getSysRoot(exeFile.getName()), 
+		exeFile);
 	try {
-	    exeElf = new Elf(exeFile, ElfCommand.ELF_C_READ);
+	    exeElf = new Elf(sysRootFile.getSysRootedFile(), ElfCommand.ELF_C_READ);
 	    ElfEHeader eHeader = exeElf.getEHeader();
 	    class BuildExeMaps extends SOLibMapBuilder {
 		private final List metaData = new LinkedList();
@@ -72,7 +75,7 @@ public class LinuxExeFactory {
 		    metaData.add(new MemoryMap(addrLow, addrHigh, permRead,
 					       permWrite, permExecute, false,
 					       offset, -1, -1, -1,
-					       exeFile.getAbsolutePath()));
+					       sysRootFile.getSysRootedFile().getAbsolutePath()));
 		}
 		MemoryMap[] getMemoryMaps() {
 		    MemoryMap[] memoryMaps = new MemoryMap[metaData.size()];
@@ -82,11 +85,10 @@ public class LinuxExeFactory {
 	    }
 	    BuildExeMaps SOMaps = new BuildExeMaps();
 	    // Add in case for executables maps.
-	    SOMaps.construct(exeFile, 0);
+	    SOMaps.construct(sysRootFile.getSysRootedFile(), 0);
 	    
 	    LinuxExeHost host
-		= new LinuxExeHost(exeFile, eHeader, SOMaps.getMemoryMaps(),
-				   args);
+		= new LinuxExeHost(sysRootFile, eHeader, SOMaps.getMemoryMaps(), args);
 	    return host.getProc();
 	} catch (ElfFileException e) {
 	    // File I/O is just bad; re-throw (need to catch it as
@@ -128,7 +130,7 @@ public class LinuxExeFactory {
 
     public static DeadProc createProc(String[] args) {
 	SysRoot sysRoot = new SysRoot(SysRootCache.getSysRoot(args[0]));
-	File exe = sysRoot.getPathViaSysRoot(args[0]).getSysRootedFile();
+	File exe = sysRoot.getPathViaSysRoot(args[0]).getFile();
 	fine.log("createProc exe", exe);
 	return createProc(exe, args);
     }
diff --git a/frysk-core/frysk/proc/dead/LinuxExeHost.java b/frysk-core/frysk/proc/dead/LinuxExeHost.java
index 94e7fd7..59f13e3 100644
--- a/frysk-core/frysk/proc/dead/LinuxExeHost.java
+++ b/frysk-core/frysk/proc/dead/LinuxExeHost.java
@@ -39,22 +39,22 @@
 
 package frysk.proc.dead;
 
-import java.io.File;
 import lib.dwfl.ElfEHeader;
 import frysk.proc.MemoryMap;
+import frysk.sysroot.SysRootFile;
 
 public class LinuxExeHost extends DeadHost {
-    private final File exeFile;
+    private final SysRootFile exeFile;
     private final LinuxExeProc proc;
     
-    LinuxExeHost(File exeFile, ElfEHeader eHeader, MemoryMap[] memoryMaps,
+    LinuxExeHost(SysRootFile exeFile, ElfEHeader eHeader, MemoryMap[] memoryMaps,
 		 String[] args) {
 	this.exeFile = exeFile;
 	proc = new LinuxExeProc(this, exeFile, eHeader, memoryMaps, args);
     }
 
     public String getName() {
-	return exeFile.getName();
+	return exeFile.getFile().getName();
     }
 
     DeadProc getProc() {
diff --git a/frysk-core/frysk/proc/dead/LinuxExeProc.java b/frysk-core/frysk/proc/dead/LinuxExeProc.java
index 95edf4b..9e69566 100644
--- a/frysk-core/frysk/proc/dead/LinuxExeProc.java
+++ b/frysk-core/frysk/proc/dead/LinuxExeProc.java
@@ -42,17 +42,17 @@ package frysk.proc.dead;
 import lib.dwfl.ElfEHeader;
 import frysk.proc.Auxv;
 import frysk.proc.MemoryMap;
-import java.io.File;
 import frysk.proc.Task;
+import frysk.sysroot.SysRootFile;
 
 public class LinuxExeProc extends DeadProc {
 
     private final MemoryMap[] memoryMaps;
     private final String[] argv;
-    private final File exeFile;
+    private final SysRootFile exeFile;
     private final LinuxExeTask mainTask;
 
-    public LinuxExeProc(LinuxExeHost host, File exeFile, ElfEHeader eHeader,
+    public LinuxExeProc(LinuxExeHost host, SysRootFile exeFile, ElfEHeader eHeader,
 			MemoryMap[] memoryMaps, String[] argv) {
 	super(host, null, 0);
 	this.exeFile = exeFile;
@@ -79,11 +79,15 @@ public class LinuxExeProc extends DeadProc {
     }
 
     public String getCommand() {
-	return exeFile.getName();
+	return exeFile.getFile().getName();
     }
 
     public String getExe() {
-	return exeFile.getAbsolutePath();
+	return exeFile.getSysRootedFile().getAbsolutePath();
+    }
+
+    public SysRootFile getExeFile() {
+	return exeFile;
     }
 
     public int getGID() {
diff --git a/frysk-core/frysk/proc/dead/TestLinuxExe.java b/frysk-core/frysk/proc/dead/TestLinuxExe.java
index 9dd57c1..21e1456 100644
--- a/frysk-core/frysk/proc/dead/TestLinuxExe.java
+++ b/frysk-core/frysk/proc/dead/TestLinuxExe.java
@@ -48,6 +48,7 @@ import frysk.proc.HostRefreshBuilder;
 import frysk.proc.Task;
 import frysk.proc.Manager;
 import frysk.proc.Proc;
+import frysk.sysroot.SysRootCache;
 import frysk.testbed.TestLib;
 
 public class TestLinuxExe extends TestLib {
@@ -109,6 +110,16 @@ public class TestLinuxExe extends TestLib {
 		Config.getBinFile("fdebugrpm").getPath(),
 		"arg"
 	    });
-	assertEquals("exe", "/bin/sh", proc.getExe());
+	assertEquals("exe", "/bin/bash", proc.getExe());
+    }
+    
+    public void testSysRootedProc() {
+	SysRootCache.setSysroot("funit-addresses", Config.getPkgLibFile("test-sysroot").getAbsolutePath());
+	Proc proc = LinuxExeFactory.createProc(new String[] {"funit-addresses", ""});
+	int testValue = proc.getExe().compareTo(Config.getPkgLibFile("test-sysroot").getAbsolutePath()
+		+ "/usr/bin/funit-addresses");
+	assertEquals("exe", 0, testValue); 
+	testValue = proc.getExeFile().getFile().getAbsolutePath().compareTo("/usr/bin/funit-addresses");
+	assertEquals("exeFile", 0, testValue);
     }
 }
diff --git a/frysk-core/frysk/proc/dummy/ChangeLog b/frysk-core/frysk/proc/dummy/ChangeLog
index 810823f..b54331b 100644
--- a/frysk-core/frysk/proc/dummy/ChangeLog
+++ b/frysk-core/frysk/proc/dummy/ChangeLog
@@ -1,3 +1,7 @@
+2008-03-27  Stan Cox  <scox@redhat.com>
+
+	* DummyProc.java (getExeFile): New.
+
 2008-03-17  Andrew Cagney  <cagney@redhat.com>
 
 	* DummyProc.java (requestRefresh()): Delete.
diff --git a/frysk-core/frysk/proc/dummy/DummyProc.java b/frysk-core/frysk/proc/dummy/DummyProc.java
index 8dae118..0cf4525 100644
--- a/frysk-core/frysk/proc/dummy/DummyProc.java
+++ b/frysk-core/frysk/proc/dummy/DummyProc.java
@@ -43,6 +43,7 @@ import frysk.proc.Auxv;
 import frysk.proc.MemoryMap;
 import frysk.proc.Proc;
 import frysk.proc.Task;
+import frysk.sysroot.SysRootFile;
 
 public class DummyProc extends Proc {
     public DummyProc(DummyHost host, int pid) {
@@ -62,6 +63,9 @@ public class DummyProc extends Proc {
     public String getExe() {
 	return null;
     }
+    public SysRootFile getExeFile() {
+	return null;
+    }
     public int getUID() {
 	return 0;
     }
diff --git a/frysk-core/frysk/proc/live/ChangeLog b/frysk-core/frysk/proc/live/ChangeLog
index 0175fca..5343cbf 100644
--- a/frysk-core/frysk/proc/live/ChangeLog
+++ b/frysk-core/frysk/proc/live/ChangeLog
@@ -1,3 +1,7 @@
+2008-03-27  Stan Cox  <scox@redhat.com>
+
+	* LinuxPtraceProc.java (getExeFile): New.
+
 2008-03-26  Phil Muldoon  <pmuldoon@redhat.com>
 
 	* Isa.java (setWatchpoint): New Interface
diff --git a/frysk-core/frysk/proc/live/LinuxPtraceProc.java b/frysk-core/frysk/proc/live/LinuxPtraceProc.java
index 9a93514..bbce21c 100644
--- a/frysk-core/frysk/proc/live/LinuxPtraceProc.java
+++ b/frysk-core/frysk/proc/live/LinuxPtraceProc.java
@@ -66,6 +66,8 @@ import java.io.File;
 import frysk.proc.Manager;
 import frysk.proc.ProcEvent;
 import frysk.proc.TaskObserver;
+import frysk.sysroot.SysRootCache;
+import frysk.sysroot.SysRootFile;
 
 /**
  * A Linux Proc tracked using PTRACE.
@@ -251,6 +253,12 @@ public class LinuxPtraceProc extends LiveProc {
 	return exe;
     }
 
+    public SysRootFile getExeFile() {
+	String exe = getExe();
+	File exeFile = new File(exe);
+	return new SysRootFile(SysRootCache.getSysRoot(exeFile.getName()), exeFile);
+    }
+
     /**
      * If it hasn't already been read, read the stat structure.
      */
diff --git a/frysk-core/frysk/sysroot/ChangeLog b/frysk-core/frysk/sysroot/ChangeLog
index 7eaa3a5..833175a 100644
--- a/frysk-core/frysk/sysroot/ChangeLog
+++ b/frysk-core/frysk/sysroot/ChangeLog
@@ -1,3 +1,8 @@
+2008-03-27  Stan Cox  <scox@redhat.com>
+
+	* SysRootFile.java (getSysRoot): Make public.
+	(getFile): Likewise.
+
 2008-03-13  Stan Cox  <scox@redhat.com>
 
 	* SysRootFile.java: New.
diff --git a/frysk-core/frysk/sysroot/SysRootFile.java b/frysk-core/frysk/sysroot/SysRootFile.java
index e9ef756..9df8190 100644
--- a/frysk-core/frysk/sysroot/SysRootFile.java
+++ b/frysk-core/frysk/sysroot/SysRootFile.java
@@ -58,7 +58,7 @@ public class SysRootFile {
      * Get the root directory for this SysRoot File.
      * @return the root directory
      */
-    File getSysRoot () {
+    public File getSysRoot () {
 	return sysRoot;
     }
 
@@ -66,7 +66,7 @@ public class SysRootFile {
      * Get the file within the SysRoot for this SysRoot File.
      * @return the file.
      */
-    File getFile () {
+    public File getFile () {
 	return file;
     }
 


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


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