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