public inbox for frysk-cvs@sourceware.org
help / color / mirror / Atom feed
From: scox@sourceware.org
To: frysk-cvs@sourceware.org
Subject: [SCM]  master: Make core executables sysroot aware.
Date: Fri, 18 Apr 2008 20:08:00 -0000	[thread overview]
Message-ID: <20080418200811.17417.qmail@sourceware.org> (raw)

The branch, master has been updated
       via  47fe8d4b087a852370e31e21eb2c2e3c7a0e274b (commit)
      from  44f60a8d0ce962747244b9404a91ec96d9dda975 (commit)

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

- Log -----------------------------------------------------------------
commit 47fe8d4b087a852370e31e21eb2c2e3c7a0e274b
Author: Stan Cox <scox@redhat.com>
Date:   Fri Apr 18 16:03:44 2008 -0400

    Make core executables sysroot aware.
    
    * CoreCommand.java (interpret): Use exePath instead of exeFile.
    * LinuxCoreFactory.java (createProc): Add SysRoot to signature.
    * LinuxCoreInfo.java (LinuxCoreInfo): Likewise.
    * (getExeFile): Likewise.

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

Summary of changes:
 frysk-core/frysk/hpd/ChangeLog                   |    4 ++++
 frysk-core/frysk/hpd/CoreCommand.java            |   11 +++++------
 frysk-core/frysk/proc/dead/ChangeLog             |    6 ++++++
 frysk-core/frysk/proc/dead/LinuxCoreFactory.java |   22 +++++++++++++++++-----
 frysk-core/frysk/proc/dead/LinuxCoreInfo.java    |   16 ++++++++++------
 5 files changed, 42 insertions(+), 17 deletions(-)

First 500 lines of diff:
diff --git a/frysk-core/frysk/hpd/ChangeLog b/frysk-core/frysk/hpd/ChangeLog
index bfe7075..20cd689 100644
--- a/frysk-core/frysk/hpd/ChangeLog
+++ b/frysk-core/frysk/hpd/ChangeLog
@@ -1,3 +1,7 @@
+2008-04-18  Stan Cox  <scox@redhat.com>
+
+	* CoreCommand.java (interpret): Use exePath instead of exeFile.
+
 2008-04-18  Mark Wielaard  <mwielaard@redhat.com>
 
 	* TestFhpdStepping.java: Don't mark unresolved. Adjust to new
diff --git a/frysk-core/frysk/hpd/CoreCommand.java b/frysk-core/frysk/hpd/CoreCommand.java
index 909ff31..7603099 100644
--- a/frysk-core/frysk/hpd/CoreCommand.java
+++ b/frysk-core/frysk/hpd/CoreCommand.java
@@ -83,7 +83,7 @@ public class CoreCommand extends ParameterizedCommand {
     void interpret(CLI cli, Input cmd, Object optionsObject) {
 	Options options = (Options)optionsObject;
 	File coreFile;
-	File exeFile;
+	String exePath;
 
 	switch (cmd.size()) {
 	case 0:
@@ -92,11 +92,11 @@ public class CoreCommand extends ParameterizedCommand {
 	case 1:
 	    // <core>
 	    coreFile = new File(cmd.parameter(0));
-	    exeFile = null;
+	    exePath = null;
 	    break;
 	case 2:
 	    coreFile = new File(cmd.parameter(0));
-	    exeFile = new File(cmd.parameter(1));
+	    exePath = cmd.parameter(1);
 	    break;
 	default:
 	    throw new InvalidCommandException
@@ -106,14 +106,13 @@ public class CoreCommand extends ParameterizedCommand {
 	// Make paths canonical (keeps elfutils working).
 	try {
 	    coreFile = coreFile.getCanonicalFile();
-	    if (exeFile != null)
-		exeFile = exeFile.getCanonicalFile();
 	} catch (IOException e) {
 	    throw new RuntimeException(e);
 	}
 
 	// Build Core. Move any exceptions up to cli and print to user.
-	Proc coreProc = LinuxCoreFactory.createProc(coreFile, exeFile,
+	Proc coreProc = LinuxCoreFactory.createProc(coreFile, exePath, 
+						    options.sysroot,
 						    options.loadMetaData);
 
 	load(coreProc, cli, options.sysroot);
diff --git a/frysk-core/frysk/proc/dead/ChangeLog b/frysk-core/frysk/proc/dead/ChangeLog
index 324f201..79d6c6b 100644
--- a/frysk-core/frysk/proc/dead/ChangeLog
+++ b/frysk-core/frysk/proc/dead/ChangeLog
@@ -1,3 +1,9 @@
+2008-04-18  Stan Cox  <scox@redhat.com>
+
+	* LinuxCoreFactory.java (createProc): Add SysRoot to signature.
+	* LinuxCoreInfo.java (LinuxCoreInfo): Likewise.
+	* (getExeFile): Likewise. 
+
 2008-04-17  Andrew Cagney  <cagney@redhat.com>
 
 	* TestCorefileByteBuffer.java: Use frysk.config.Prefix.
diff --git a/frysk-core/frysk/proc/dead/LinuxCoreFactory.java b/frysk-core/frysk/proc/dead/LinuxCoreFactory.java
index 5683a4c..7453127 100644
--- a/frysk-core/frysk/proc/dead/LinuxCoreFactory.java
+++ b/frysk-core/frysk/proc/dead/LinuxCoreFactory.java
@@ -41,6 +41,8 @@ package frysk.proc.dead;
 
 import java.io.File;
 
+import frysk.sysroot.SysRoot;
+
 /**
  * Data needed to construct a core file; shared between the core Host,
  * Proc And task.
@@ -54,20 +56,30 @@ public class LinuxCoreFactory {
      *
      * All File paths <b>must</b> be canonical.
      */
-    public static DeadProc createProc(File coreFile, File exeFile,
+    public static DeadProc createProc(File coreFile, File exeFile, String sysroot,
 				      boolean extendedMetaData) {
-	LinuxCoreInfo core = new LinuxCoreInfo(coreFile, exeFile,
+	LinuxCoreInfo core = new LinuxCoreInfo(coreFile, exeFile, sysroot,
 					       extendedMetaData);
 	LinuxCoreHost host = new LinuxCoreHost(core);
 	return host.getProc();
     }
+    public static DeadProc createProc(File coreFile, String exePath, String sysroot,
+	    			      boolean extendedMetaData) {
+	SysRoot sysRoot = new SysRoot(sysroot);
+	File exe;
+	if (exePath != null)
+	    exe = sysRoot.getPathViaSysRoot(exePath).getFile();
+	else
+	    exe = null;
+	return createProc(coreFile, exe, sysroot, extendedMetaData);
+    }
     /**
      * Construct a core file without extended meta data.
      *
      * All File paths <b>must</b> be canonical.
      */
     public static DeadProc createProc(File coreFile) {
-	return createProc(coreFile, null, false);
+	return createProc(coreFile, (File)null, "/", false);
     }
     /**
      * Construct a core file, possibly with extended meta data.
@@ -75,7 +87,7 @@ public class LinuxCoreFactory {
      * All File paths <b>must</b> be canonical.
      */
     public static DeadProc createProc(File coreFile, boolean extendedMetaData) {
-	return createProc(coreFile, null, extendedMetaData);
+	return createProc(coreFile, (File)null, "/", extendedMetaData);
     }
     /**
      * Construct a core file with extended meta data taken from the
@@ -84,6 +96,6 @@ public class LinuxCoreFactory {
      * All File paths <b>must</b> be canonical.
      */
     public static DeadProc createProc(File coreFile, File exeFile) {
-	return createProc(coreFile, exeFile, true);
+	return createProc(coreFile, exeFile, "/", true);
     }
 }
diff --git a/frysk-core/frysk/proc/dead/LinuxCoreInfo.java b/frysk-core/frysk/proc/dead/LinuxCoreInfo.java
index ed6aa2f..84144b1 100644
--- a/frysk-core/frysk/proc/dead/LinuxCoreInfo.java
+++ b/frysk-core/frysk/proc/dead/LinuxCoreInfo.java
@@ -57,6 +57,7 @@ import lib.dwfl.ElfPrpsinfo;
 import frysk.rsl.Log;
 import frysk.proc.Auxv;
 import frysk.sys.proc.AuxvBuilder;
+import frysk.sysroot.SysRoot;
 import frysk.proc.MemoryMap;
 import frysk.solib.LinkMapFactory;
 import frysk.solib.LinkMap;
@@ -90,7 +91,7 @@ class LinuxCoreInfo {
      * Unpack the core file extracting everything needed to create a
      * host, proc, and tasks.
      */
-    LinuxCoreInfo(File coreParam, File exeParam, boolean extendedMetaData) {
+    LinuxCoreInfo(File coreParam, File exeParam, String sysroot, boolean extendedMetaData) {
 	Elf coreElf = null;
 	Elf exeElf = null;
 	try {
@@ -118,7 +119,7 @@ class LinuxCoreInfo {
 
 	    // Define the real exe file (dependant on parameters might
 	    // have to extract this from the process information).
-	    this.exeFile = getExeFile(exeParam, args, prpsInfo);
+	    this.exeFile = getExeFile(exeParam, args, sysroot, prpsInfo);
 	    if (extendedMetaData)
 		exeElf = new Elf(this.exeFile, ElfCommand.ELF_C_READ);
 
@@ -181,19 +182,22 @@ class LinuxCoreInfo {
     /**
      *
      */
-    private static File getExeFile(File exeParam, String[] args,
+    private static File getExeFile(File exeParam, String[] args, String sysroot,
 				   ElfPrpsinfo prpsInfo) {
+	String exePath;
 	if (exeParam == null) {
 	    // Only place to find full path + exe is in the args
 	    // list. Remove ./ if present.
 	    if (args.length > 0) {
 		if (args[0].startsWith("./"))
-		    exeParam = new File(args[0].substring(2));
+		    exePath = args[0].substring(2);
 		else
-		    exeParam = new File(args[0]);
+		    exePath = args[0];
 	    } else {
-		exeParam = new File(prpsInfo.getPrFname());
+		exePath = prpsInfo.getPrFname();
 	    }
+	    SysRoot sysRoot = new SysRoot(sysroot);
+	    exeParam= sysRoot.getPathViaSysRoot(exePath).getFile();
 	    fine.log("exe from core", exeParam);
 	} else {
 	    fine.log("exe for core", exeParam);


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


                 reply	other threads:[~2008-04-18 20:08 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=20080418200811.17417.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).