public inbox for frysk-cvs@sourceware.org
help / color / mirror / Atom feed
From: scox@sourceware.org
To: frysk-cvs@sourceware.org
Subject: [SCM]  master: Have fexe display rooted and sysrooted exe path.
Date: Thu, 27 Mar 2008 15:52:00 -0000	[thread overview]
Message-ID: <20080327155223.1174.qmail@sourceware.org> (raw)

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


                 reply	other threads:[~2008-03-27 15:52 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=20080327155223.1174.qmail@sourceware.org \
    --to=scox@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).