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: Move Task.getRegisterBanks() to sub-classes.


The branch, master has been updated
       via  bb7902b13a9edce97875a882a4ae5d0bb2b2e443 (commit)
       via  c43eaef88bd23c95207dd58854ca96e608018424 (commit)
       via  9313021e1f57c7cad15a9f776ca9d9c1477016c4 (commit)
      from  b411c4502c388f944b97dac30e1cf19e07c881af (commit)

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

- Log -----------------------------------------------------------------
commit bb7902b13a9edce97875a882a4ae5d0bb2b2e443
Author: Andrew Cagney <cagney@redhat.com>
Date:   Wed Jan 16 18:27:51 2008 -0500

    Move Task.getRegisterBanks() to sub-classes.
    
    frysk-core/frysk/proc/ChangeLog
    2008-01-16  Andrew Cagney  <cagney@redhat.com>
    
    	* Task.java (sendrecRegisterBanks()): Delete.
    	(getRegisterBanks()): Make abstract.
    
    frysk-core/frysk/proc/dead/ChangeLog
    2008-01-16  Andrew Cagney  <cagney@redhat.com>
    
    	* DeadTask.java (getRegisterBanks()): New; add RegisterBanks to
    	constructor.
    	* LinuxExeTask.java: Update.
    	(constructRegisterBanks(ISA)): Replace sendrecRegisterBanks().
    	* LinuxCoreTask.java: Update.
    	(simulateRegisterBanks()): Parameterize; return the BankBuffers.
    	(sendrecRegisterBanks()): Delete.
    
    frysk-core/frysk/proc/dummy/ChangeLog
    2008-01-16  Andrew Cagney  <cagney@redhat.com>
    
    	* DummyTask.java (getRegisterBanks()): Replace
    	sendrecRegisterBanks().
    
    frysk-core/frysk/proc/live/ChangeLog
    2008-01-16  Andrew Cagney  <cagney@redhat.com>
    
    	* LinuxPtraceTask.java (getRegisterBanks()): Replace
    	sendrecRegisterBanks().

commit c43eaef88bd23c95207dd58854ca96e608018424
Author: Andrew Cagney <cagney@redhat.com>
Date:   Wed Jan 16 17:40:04 2008 -0500

    Move Task.getIsa() code into sub-classes.
    
    frysk-core/frysk/proc/ChangeLog
    2008-01-16  Andrew Cagney  <cagney@redhat.com>
    
    	* Task.java (getISA()): Make abstract.
    	(sendrecISA()): Delete.
    	(hasIsa()): Delete.
    
    frysk-core/frysk/proc/dead/ChangeLog
    2008-01-16  Andrew Cagney  <cagney@redhat.com>
    
    	* DeadTask.java (getISA()): New.
    	(DeadTask(Proc,TaskId,ISA)): Replace DeadTask(Proc,TaskId).
    	* LinuxCoreProc.java: Update.
    	(sendrecISA()): Delete.
    	* LinuxCoreTask.java: Update.
    	(sendrecISA()): Delete.
    	* LinuxExeTask.java: Update.
    	(sendrecISA()): Delete.
    	* LinuxExeProc.java: Update.
    	(sendrecISA()): Delete.
    
    frysk-core/frysk/proc/dummy/ChangeLog
    2008-01-16  Andrew Cagney  <cagney@redhat.com>
    
    	* DummyTask.java (getISA()): Replace sendrecISA().
    
    frysk-core/frysk/proc/live/ChangeLog
    2008-01-16  Andrew Cagney  <cagney@redhat.com>
    
    	* LinuxPtraceTask.java (getISA()): Replace sendrecISA().
    	(hasIsa()): New.
    	* TestRuntimeIsa.java (assertHasIsaEquals(Task,boolean)): New.

commit 9313021e1f57c7cad15a9f776ca9d9c1477016c4
Author: Andrew Cagney <cagney@redhat.com>
Date:   Wed Jan 16 15:52:56 2008 -0500

    Move frysk.proc.TestIsa to frysk.proc.live.
    
    frysk-core/frysk/proc/ChangeLog
    2008-01-16  Andrew Cagney  <cagney@redhat.com>
    
    	* TestIsa.java: Move to frysk.proc.live.TestRuntimeIsa.java.
    
    frysk-core/frysk/proc/live/ChangeLog
    2008-01-16  Andrew Cagney  <cagney@redhat.com>
    
    	* TestRuntimeIsa.java: Move from frysk.proc.TestIsa.

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

Summary of changes:
 frysk-core/frysk/proc/ChangeLog                    |   11 +++++
 frysk-core/frysk/proc/Task.java                    |   25 ++----------
 frysk-core/frysk/proc/dead/ChangeLog               |   21 ++++++++++
 frysk-core/frysk/proc/dead/DeadTask.java           |   17 ++++++++-
 frysk-core/frysk/proc/dead/LinuxCoreProc.java      |   13 ++----
 frysk-core/frysk/proc/dead/LinuxCoreTask.java      |   39 +++++++------------
 frysk-core/frysk/proc/dead/LinuxExeProc.java       |    9 +---
 frysk-core/frysk/proc/dead/LinuxExeTask.java       |   41 +++++++++-----------
 frysk-core/frysk/proc/dummy/ChangeLog              |    7 +++
 frysk-core/frysk/proc/dummy/DummyTask.java         |    4 +-
 frysk-core/frysk/proc/live/ChangeLog               |   11 +++++
 frysk-core/frysk/proc/live/LinuxPtraceTask.java    |   24 +++++++++---
 .../{TestIsa.java => live/TestRuntimeIsa.java}     |   34 ++++++++++------
 13 files changed, 151 insertions(+), 105 deletions(-)
 rename frysk-core/frysk/proc/{TestIsa.java => live/TestRuntimeIsa.java} (90%)

First 500 lines of diff:
diff --git a/frysk-core/frysk/proc/ChangeLog b/frysk-core/frysk/proc/ChangeLog
index 61ccb8a..1cd3d7a 100644
--- a/frysk-core/frysk/proc/ChangeLog
+++ b/frysk-core/frysk/proc/ChangeLog
@@ -1,3 +1,14 @@
+2008-01-16  Andrew Cagney  <cagney@redhat.com>
+
+	* Task.java (sendrecRegisterBanks()): Delete.
+	(getRegisterBanks()): Make abstract.
+
+	* Task.java (getISA()): Make abstract.
+	(sendrecISA()): Delete.
+	(hasIsa()): Delete.
+
+	* TestIsa.java: Move to frysk.proc.live.TestRuntimeIsa.java.
+
 2008-01-15  Andrew Cagney  <cagney@redhat.com>
 
 	* Task.java (pendingObservations): Move to LinuxPtraceTask.
diff --git a/frysk-core/frysk/proc/Task.java b/frysk-core/frysk/proc/Task.java
index dcd37e0..30278d5 100644
--- a/frysk-core/frysk/proc/Task.java
+++ b/frysk-core/frysk/proc/Task.java
@@ -93,17 +93,7 @@ public abstract class Task {
     /**
      * Return's this Task's Instruction Set Architecture.
      */
-    public final ISA getISA() {
-	if (currentISA == null)
-	    currentISA = sendrecISA();
-	return currentISA;
-    }
-    private ISA currentISA;
-    protected abstract ISA sendrecISA();
-
-    public final boolean hasIsa() {
-	return (currentISA != null);
-    }
+    public abstract ISA getISA();
 
     private SyscallTable syscallTable;
     public final SyscallTable getSyscallTable() {
@@ -331,13 +321,10 @@ public abstract class Task {
 				  start, write);
     }
 
-    private RegisterBanks registerBanks;
-    protected abstract RegisterBanks sendrecRegisterBanks();
-    RegisterBanks getRegisterBanks() {
-	if (registerBanks == null)
-	    registerBanks = sendrecRegisterBanks();
-	return registerBanks;
-    }
+    /**
+     * Return this task's register banks.
+     */
+    protected abstract RegisterBanks getRegisterBanks();
 
     /**
      * Return the machine's register banks as an array of ByteBuffers.
@@ -356,8 +343,6 @@ public abstract class Task {
     public abstract int getMod();
  
     public void clearIsa() {
-	registerBanks = null;
 	syscallTable = null;
-	currentISA = null;
     }
 }
diff --git a/frysk-core/frysk/proc/dead/ChangeLog b/frysk-core/frysk/proc/dead/ChangeLog
index eaf0c11..c152771 100644
--- a/frysk-core/frysk/proc/dead/ChangeLog
+++ b/frysk-core/frysk/proc/dead/ChangeLog
@@ -1,3 +1,24 @@
+2008-01-16  Andrew Cagney  <cagney@redhat.com>
+
+	* DeadTask.java (getRegisterBanks()): New; add RegisterBanks to
+	constructor.
+	* LinuxExeTask.java: Update.
+	(constructRegisterBanks(ISA)): Replace sendrecRegisterBanks().
+	* LinuxCoreTask.java: Update.
+	(simulateRegisterBanks()): Parameterize; return the BankBuffers.
+	(sendrecRegisterBanks()): Delete.
+	
+	* DeadTask.java (getISA()): New.
+	(DeadTask(Proc,TaskId,ISA)): Replace DeadTask(Proc,TaskId).
+	* LinuxCoreProc.java: Update.
+	(sendrecISA()): Delete.
+	* LinuxCoreTask.java: Update.
+	(sendrecISA()): Delete.
+	* LinuxExeTask.java: Update.
+	(sendrecISA()): Delete.
+	* LinuxExeProc.java: Update.
+	(sendrecISA()): Delete.
+
 2008-01-16  Phil Muldoon  <pmuldoon@redhat.com> 
 
 	* TestLinuxCore.java (testInsertedBreakpoint): Use TearDownFile.
diff --git a/frysk-core/frysk/proc/dead/DeadTask.java b/frysk-core/frysk/proc/dead/DeadTask.java
index fb56d8a..4493df0 100644
--- a/frysk-core/frysk/proc/dead/DeadTask.java
+++ b/frysk-core/frysk/proc/dead/DeadTask.java
@@ -44,6 +44,8 @@ import frysk.proc.Task;
 import frysk.proc.Proc;
 import frysk.proc.TaskId;
 import frysk.proc.TaskObserver;
+import frysk.isa.ISA;
+import frysk.bank.RegisterBanks;
 
 /**
  * A dead Host/Proc/Task is characterised by its lack of state, and an
@@ -52,8 +54,11 @@ import frysk.proc.TaskObserver;
  */
 
 abstract class DeadTask extends Task {
-    DeadTask(Proc proc, TaskId taskId) {
+    DeadTask(Proc proc, TaskId taskId, ISA isa,
+	     RegisterBanks registerBanks) {
 	super(proc, taskId);
+	this.isa = isa;
+	this.registerBanks = registerBanks;
     }
 
     protected String getStateFIXME() {
@@ -233,4 +238,14 @@ abstract class DeadTask extends Task {
     public void setPC(long addr) {
 	throw new RuntimeException("setPC: the task is dead");
     }
+
+    public ISA getISA() {
+	return isa;
+    }
+    private final ISA isa;
+
+    protected RegisterBanks getRegisterBanks() {
+	return registerBanks;
+    }
+    private final RegisterBanks registerBanks;
 }
diff --git a/frysk-core/frysk/proc/dead/LinuxCoreProc.java b/frysk-core/frysk/proc/dead/LinuxCoreProc.java
index 039490c..840aa11 100644
--- a/frysk-core/frysk/proc/dead/LinuxCoreProc.java
+++ b/frysk-core/frysk/proc/dead/LinuxCoreProc.java
@@ -162,6 +162,8 @@ public class LinuxCoreProc extends DeadProc {
 	elfFPRegs = ElfPrFPRegSet.decode(elfData);
 	elfXFPRegs = ElfPrXFPRegSet.decode(elfData);
     
+	ISA isa = ElfMap.getISA(elfData.getParent().getEHeader());
+
 	// Two methods of whether Floating Point note data exists.
 	// In userland generated core-dumps there is no way to test
 	// if floating point data operations have actually occurred, so
@@ -186,7 +188,7 @@ public class LinuxCoreProc extends DeadProc {
 		ElfPrXFPRegSet xregSet = null;
 		if (elfXFPRegs.length > 0)
 		    xregSet = elfXFPRegs[i];
-		newTask = new LinuxCoreTask(LinuxCoreProc.this, elfTasks[i], elfFPRegs[i], xregSet);
+		newTask = new LinuxCoreTask(LinuxCoreProc.this, elfTasks[i], elfFPRegs[i], xregSet, isa);
 	    } else {
 	    // Otherwise add only NT_FPREGSET data if pr_fpvalid is > 0. This
 	    // value is not reliable on userland kernels (gdb always sets it
@@ -201,10 +203,10 @@ public class LinuxCoreProc extends DeadProc {
 		    ElfPrXFPRegSet xregSet = null;
 		    if (elfXFPRegs.length > 0)
 			xregSet = elfXFPRegs[fpCount];
-		    newTask = new LinuxCoreTask(LinuxCoreProc.this, elfTasks[i], elfFPRegs[fpCount], xregSet);
+		    newTask = new LinuxCoreTask(LinuxCoreProc.this, elfTasks[i], elfFPRegs[fpCount], xregSet, isa);
 		    fpCount++;
 		} else
-		    newTask = new LinuxCoreTask(LinuxCoreProc.this, elfTasks[i],  null, null);
+		    newTask = new LinuxCoreTask(LinuxCoreProc.this, elfTasks[i],  null, null, isa);
 	    
 	    }
 	}
@@ -256,11 +258,6 @@ public class LinuxCoreProc extends DeadProc {
 	return auxv;
     }
 
-    ISA sendrecISA() {
-	ElfEHeader header = elfData.getParent().getEHeader();
-	return ElfMap.getISA(header);
-    }
-
     /**
      * XXX: Meta Data construction functions.
      * Not really part of the implementation of proc, but has a very
diff --git a/frysk-core/frysk/proc/dead/LinuxCoreTask.java b/frysk-core/frysk/proc/dead/LinuxCoreTask.java
index 7f7b85f..a422342 100644
--- a/frysk-core/frysk/proc/dead/LinuxCoreTask.java
+++ b/frysk-core/frysk/proc/dead/LinuxCoreTask.java
@@ -52,9 +52,6 @@ import frysk.isa.RegistersFactory;
 
 public class LinuxCoreTask extends DeadTask {
 
-    ElfPrstatus elfTask = null;
-    ElfPrFPRegSet elfFPRegs = null;
-    ElfPrXFPRegSet elfXFPRegs = null;
     private final LinuxCoreProc parent;
 
     public ByteBuffer getMemory() {
@@ -67,11 +64,14 @@ public class LinuxCoreTask extends DeadTask {
 	return parent.getMemory();
     }
 
-    private ByteBuffer[] simulateRegisterBanks () {	  
-	// XXX: Potentially this information should be constructed 
-	// in CorefileRegisterBanksFactory. However that would require the factory to 
-	// know about elf constructs which is not desirable.
-	  
+    static private RegisterBanks simulateRegisterBanks(ElfPrstatus elfTask,
+						       ElfPrFPRegSet elfFPRegs,
+						       ElfPrXFPRegSet elfXFPRegs,
+						       ISA isa) {
+	// XXX: Potentially this information should be constructed in
+	// CorefileRegisterBanksFactory. However that would require
+	// the factory to know about elf constructs which is not
+	// desirable.
 	ByteBuffer[] bankBuffers = new ByteBuffer[4];
 
 	// Create an empty page
@@ -80,8 +80,8 @@ public class LinuxCoreTask extends DeadTask {
 	    emptyBuffer[i]=0;
 
 	// Get ISA specific data
-	ByteOrder byteOrder = getISA().order();
-	int  wordSize = getISA().wordSize();
+	ByteOrder byteOrder = isa.order();
+	int  wordSize = isa.wordSize();
     
 	// Set GP Registers
 	bankBuffers[0] = new ArrayByteBuffer(elfTask.getRawCoreRegisters());
@@ -114,31 +114,20 @@ public class LinuxCoreTask extends DeadTask {
 
 	// XXX: Other register banks need to be filled in.
 	bankBuffers[3] = new ArrayByteBuffer(emptyBuffer);
-	return bankBuffers;
-    }
 
-    protected RegisterBanks sendrecRegisterBanks() {
-	return CorefileRegisterBanksFactory.create
-	    (getISA(), simulateRegisterBanks());
+	return CorefileRegisterBanksFactory.create(isa, bankBuffers);
     }
 
-    
     /**
      * Create a new unattached Task.
      */
     LinuxCoreTask(LinuxCoreProc proc, ElfPrstatus elfTask, ElfPrFPRegSet
-		  elfFPRegs, ElfPrXFPRegSet elfXFPRegs) {
-	super(proc, new TaskId(elfTask.getPrPid()));
-	this.elfTask = elfTask;
-	this.elfFPRegs = elfFPRegs;
-	this.elfXFPRegs = elfXFPRegs;
+		  elfFPRegs, ElfPrXFPRegSet elfXFPRegs, ISA isa) {
+	super(proc, new TaskId(elfTask.getPrPid()), isa,
+	      simulateRegisterBanks(elfTask, elfFPRegs, elfXFPRegs, isa));
 	this.parent = proc;
     }
 
-    protected ISA sendrecISA() {
-    	return ((LinuxCoreProc)getProc()).sendrecISA();
-    }
-
     public long getPC() {
 	return getRegister(RegistersFactory
 			   .getRegisters(getISA())
diff --git a/frysk-core/frysk/proc/dead/LinuxExeProc.java b/frysk-core/frysk/proc/dead/LinuxExeProc.java
index 68acc55..1b00342 100644
--- a/frysk-core/frysk/proc/dead/LinuxExeProc.java
+++ b/frysk-core/frysk/proc/dead/LinuxExeProc.java
@@ -42,7 +42,6 @@ package frysk.proc.dead;
 import inua.eio.ByteBuffer;
 
 import java.util.ArrayList;
-import lib.dwfl.ElfEHeader;
 import lib.dwfl.ElfData;
 
 import frysk.isa.ISA;
@@ -68,7 +67,8 @@ public class LinuxExeProc extends DeadProc {
     }
 
     public void sendRefresh() {
-	LinuxExeTask newTask = new LinuxExeTask(this, new TaskId(0));
+	ISA isa = ElfMap.getISA(elfData.getParent().getEHeader());
+	LinuxExeTask newTask = new LinuxExeTask(this, new TaskId(0), isa);
 	newTask.getClass();
     }
 
@@ -96,11 +96,6 @@ public class LinuxExeProc extends DeadProc {
 	return 0;
     }
     
-    ISA sendrecISA() {
-	ElfEHeader header = elfData.getParent().getEHeader();
-	return ElfMap.getISA(header);
-    }
-
     public MemoryMap[] getMaps() {
 	return (MemoryMap[]) metaData.toArray(new MemoryMap[metaData.size()]);
     }
diff --git a/frysk-core/frysk/proc/dead/LinuxExeTask.java b/frysk-core/frysk/proc/dead/LinuxExeTask.java
index ca6fee1..8c212df 100644
--- a/frysk-core/frysk/proc/dead/LinuxExeTask.java
+++ b/frysk-core/frysk/proc/dead/LinuxExeTask.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
@@ -44,18 +44,18 @@ import inua.eio.ByteBuffer;
 import frysk.bank.RegisterBanks;
 import frysk.proc.TaskId;
 import frysk.isa.ISA;
-
-import lib.dwfl.*;
+import lib.dwfl.Elf;
+import lib.dwfl.ElfCommand;
+import lib.dwfl.ElfEHeader;
+import lib.dwfl.ElfException;
 
 public class LinuxExeTask extends DeadTask {
     private final long pc;
     private final LinuxExeProc proc;
-    TaskId id = null;
 
-    protected LinuxExeTask(LinuxExeProc proc, TaskId id) {
-	super(proc, id);
+    protected LinuxExeTask(LinuxExeProc proc, TaskId id, ISA isa) {
+	super(proc, id, isa, constructRegisterBanks(isa));
 	this.proc = proc;
-	this.id = id;
 	// Compute a Fake PC.  XXX should be done in Proc instead of
 	// creating Elf object in the Task itself.
 	Elf e = null;
@@ -78,25 +78,20 @@ public class LinuxExeTask extends DeadTask {
 	return pc;
     }
 
-  protected ISA sendrecISA() {
-      return ((LinuxExeProc)getProc()).sendrecISA();
-  }
-
     public ByteBuffer getMemory() {
 	return proc.getMemory();
     }
   
-  protected RegisterBanks sendrecRegisterBanks() {
-      ByteBuffer[] bankBuffers = new ByteBuffer[4];
-      // Create an empty page
-      byte[] emptyBuffer = new byte[4096];
-      for (int i = 0; i < emptyBuffer.length; i++)
-	  emptyBuffer[i] = 0;
-      bankBuffers[0] = new ArrayByteBuffer(emptyBuffer);
-      bankBuffers[1] = new ArrayByteBuffer(emptyBuffer);
-      bankBuffers[2] = new ArrayByteBuffer(emptyBuffer);
-      bankBuffers[3] = new ArrayByteBuffer(emptyBuffer);
-      return CorefileRegisterBanksFactory.create
-      	  (getISA(), bankBuffers);
+    private static RegisterBanks constructRegisterBanks(ISA isa) {
+	ByteBuffer[] bankBuffers = new ByteBuffer[4];
+	// Create an empty page
+	byte[] emptyBuffer = new byte[4096];
+	for (int i = 0; i < emptyBuffer.length; i++)
+	    emptyBuffer[i] = 0;
+	bankBuffers[0] = new ArrayByteBuffer(emptyBuffer);
+	bankBuffers[1] = new ArrayByteBuffer(emptyBuffer);
+	bankBuffers[2] = new ArrayByteBuffer(emptyBuffer);
+	bankBuffers[3] = new ArrayByteBuffer(emptyBuffer);
+	return CorefileRegisterBanksFactory.create(isa, bankBuffers);
   }
 }
diff --git a/frysk-core/frysk/proc/dummy/ChangeLog b/frysk-core/frysk/proc/dummy/ChangeLog
index f43b7b5..4965c21 100644
--- a/frysk-core/frysk/proc/dummy/ChangeLog
+++ b/frysk-core/frysk/proc/dummy/ChangeLog
@@ -1,3 +1,10 @@
+2008-01-16  Andrew Cagney  <cagney@redhat.com>
+
+	* DummyTask.java (getRegisterBanks()): Replace
+	sendrecRegisterBanks().
+	
+	* DummyTask.java (getISA()): Replace sendrecISA().
+
 2008-01-15  Andrew Cagney  <cagney@redhat.com>
 
 	* DummyTask.java (getMemory()): Replace sendrecMemory().
diff --git a/frysk-core/frysk/proc/dummy/DummyTask.java b/frysk-core/frysk/proc/dummy/DummyTask.java
index b8ba936..ce57eb1 100644
--- a/frysk-core/frysk/proc/dummy/DummyTask.java
+++ b/frysk-core/frysk/proc/dummy/DummyTask.java
@@ -54,13 +54,13 @@ public class DummyTask extends Task {
     public String getStateString() {
 	return "Attached";
     }
-    protected ISA sendrecISA() {
+    public ISA getISA() {
 	return null;
     }
     public ByteBuffer getMemory() {
 	return null;
     }
-    protected RegisterBanks sendrecRegisterBanks() {
+    protected RegisterBanks getRegisterBanks() {
 	return null;
     }
 
diff --git a/frysk-core/frysk/proc/live/ChangeLog b/frysk-core/frysk/proc/live/ChangeLog
index 5a67393..32e979f 100644
--- a/frysk-core/frysk/proc/live/ChangeLog
+++ b/frysk-core/frysk/proc/live/ChangeLog
@@ -1,3 +1,14 @@
+2008-01-16  Andrew Cagney  <cagney@redhat.com>
+
+	* LinuxPtraceTask.java (getRegisterBanks()): Replace
+	sendrecRegisterBanks().
+	
+	* LinuxPtraceTask.java (getISA()): Replace sendrecISA().
+	(hasIsa()): New.
+	* TestRuntimeIsa.java (assertHasIsaEquals(Task,boolean)): New.
+
+	* TestRuntimeIsa.java: Move from frysk.proc.TestIsa.
+
 2008-01-15  Andrew Cagney  <cagney@redhat.com>
 
 	* LinuxPtraceTask.java (pendingObservations): Move here from
diff --git a/frysk-core/frysk/proc/live/LinuxPtraceTask.java b/frysk-core/frysk/proc/live/LinuxPtraceTask.java
index 9f95ee9..a65aa9d 100644
--- a/frysk-core/frysk/proc/live/LinuxPtraceTask.java
+++ b/frysk-core/frysk/proc/live/LinuxPtraceTask.java
@@ -134,19 +134,29 @@ public class LinuxPtraceTask extends LiveTask {
     }
     private ByteBuffer memory;
 
-    protected RegisterBanks sendrecRegisterBanks() {
-	return PtraceRegisterBanksFactory.create(getISA(), getTid());
+    protected RegisterBanks getRegisterBanks() {
+	if (registerBanks == null)
+	    registerBanks = PtraceRegisterBanksFactory.create(getISA(), getTid());
+	return registerBanks;
     }
+    private RegisterBanks registerBanks;
 
     /**
      * Return the Task's ISA.
      *
      * Can this instead look at AUXV?
      */
-    protected ISA sendrecISA () {
-	// FIXME: This should use task.proc.getExe().  Only that
-	// causes wierd failures; take a rain-check :-(
-	return ElfMap.getISA(new File("/proc/" + getTid() + "/exe"));
+    public ISA getISA() {
+	if (currentISA == null)
+	    // FIXME: This should use task.proc.getExe().  Only that
+	    // causes wierd failures; take a rain-check :-(
+	    currentISA = ElfMap.getISA(new File("/proc/" + getTid() + "/exe"));
+	return currentISA;
+    }
+    private ISA currentISA;
+
+    boolean hasIsa() {
+	return (currentISA != null);
     }
 
     /**
@@ -986,6 +996,8 @@ public class LinuxPtraceTask extends LiveTask {
 	super.clearIsa();
 	pcRegister = null;
 	memory = null;
+	currentISA = null;
+	registerBanks = null;
     }
 
     /**
diff --git a/frysk-core/frysk/proc/TestIsa.java b/frysk-core/frysk/proc/live/TestRuntimeIsa.java
similarity index 90%
rename from frysk-core/frysk/proc/TestIsa.java
rename to frysk-core/frysk/proc/live/TestRuntimeIsa.java
index 171f92c..81fb7a1 100644
--- a/frysk-core/frysk/proc/TestIsa.java
+++ b/frysk-core/frysk/proc/live/TestRuntimeIsa.java
@@ -37,7 +37,7 @@
 // version and license this file solely under the GPL without
 // exception.
 
-package frysk.proc;
+package frysk.proc.live;
 
 import frysk.isa.ISA;
 import frysk.testbed.TestLib;
@@ -46,10 +46,19 @@ import frysk.testbed.ExecOffspring;
 import frysk.testbed.SlaveOffspring;
 import frysk.testbed.ExecCommand;
 import frysk.testbed.StatState;
-
-public class TestIsa


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]