From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 22863 invoked by alias); 11 Jan 2008 21:36:55 -0000 Received: (qmail 22833 invoked by uid 367); 11 Jan 2008 21:36:50 -0000 Date: Fri, 11 Jan 2008 21:36:00 -0000 Message-ID: <20080111213650.22818.qmail@sourceware.org> From: cagney@sourceware.org To: frysk-cvs@sourceware.org Subject: [SCM] master: Move Task.getRawMemory() to LiveTask; make package-local. X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: e42a7c12625dc81987dd20571e05080f118d25f1 X-Git-Newrev: 39b06046cc2cac180bbec24e6a1d557f69b45cd6 Mailing-List: contact frysk-cvs-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: frysk-cvs-owner@sourceware.org Reply-To: frysk@sourceware.org X-SW-Source: 2008-q1/txt/msg00046.txt.bz2 The branch, master has been updated via 39b06046cc2cac180bbec24e6a1d557f69b45cd6 (commit) from e42a7c12625dc81987dd20571e05080f118d25f1 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email. - Log ----------------------------------------------------------------- commit 39b06046cc2cac180bbec24e6a1d557f69b45cd6 Author: Andrew Cagney Date: Fri Jan 11 16:36:33 2008 -0500 Move Task.getRawMemory() to LiveTask; make package-local. frysk-core/frysk/proc/ChangeLog 2008-01-11 Andrew Cagney * TestTaskObserverCode.java: Move to frysk.proc.live. * Task.java (getRawMemory()): Move to frysk.proc.live.LiveTask. frysk-core/frysk/proc/live/ChangeLog 2008-01-11 Andrew Cagney * TestTaskObserverCode.java: Move from frysk.proc.TestTaskObserverCode. * LinuxPtraceTask.java (getRawMemory()): Make package-private. * LiveTask.java (getRawMemory()): Declare. * Breakpoint.java: Update. * Instruction.java: Update. ----------------------------------------------------------------------- Summary of changes: frysk-core/frysk/proc/ChangeLog | 3 + frysk-core/frysk/proc/Task.java | 13 --- frysk-core/frysk/proc/live/Breakpoint.java | 4 +- frysk-core/frysk/proc/live/ChangeLog | 7 ++ frysk-core/frysk/proc/live/Instruction.java | 2 +- frysk-core/frysk/proc/live/LinuxPtraceTask.java | 4 +- frysk-core/frysk/proc/live/LiveTask.java | 12 +++ .../proc/{ => live}/TestTaskObserverCode.java | 79 ++++++++++++------- 8 files changed, 76 insertions(+), 48 deletions(-) rename frysk-core/frysk/proc/{ => live}/TestTaskObserverCode.java (95%) First 500 lines of diff: diff --git a/frysk-core/frysk/proc/ChangeLog b/frysk-core/frysk/proc/ChangeLog index dc82336..0f5210d 100644 --- a/frysk-core/frysk/proc/ChangeLog +++ b/frysk-core/frysk/proc/ChangeLog @@ -1,5 +1,8 @@ 2008-01-11 Andrew Cagney + * TestTaskObserverCode.java: Move to frysk.proc.live. + * Task.java (getRawMemory()): Move to frysk.proc.live.LiveTask. + * TaskObservation.java: Move to frysk.proc.live. * Task.java (handleAddObservation(TaskObserver)): Delete. (handleDeleteObservation(TaskObserver)): Delete. diff --git a/frysk-core/frysk/proc/Task.java b/frysk-core/frysk/proc/Task.java index a0edca5..014d6fb 100644 --- a/frysk-core/frysk/proc/Task.java +++ b/frysk-core/frysk/proc/Task.java @@ -298,19 +298,6 @@ public abstract class Task { } /** - * Returns the memory as seen by frysk-core. That includes things - * like inserted breakpoint instructions bytes which are filtered - * out by getMemory() (which is what you normally - * want unless you are interested in frysk-core specifics).

- * Default implementation calls getMemory(), need to - * be overriden by subclasses for which the raw memory view and - * the logical memory view are different. - */ - public ByteBuffer getRawMemory() { - return getMemory(); - } - - /** * Add TaskObserver.Code to the TaskObserver pool. */ public abstract void requestAddCodeObserver(TaskObserver.Code o, long a); diff --git a/frysk-core/frysk/proc/live/Breakpoint.java b/frysk-core/frysk/proc/live/Breakpoint.java index 579e7b0..0372b6d 100644 --- a/frysk-core/frysk/proc/live/Breakpoint.java +++ b/frysk-core/frysk/proc/live/Breakpoint.java @@ -146,7 +146,7 @@ public class Breakpoint implements Comparable */ private void set(Task task) { - ByteBuffer buffer = task.getRawMemory(); + ByteBuffer buffer = ((LinuxPtraceTask)task).getRawMemory(); Isa isa = ((LinuxPtraceTask)task).getIsaFIXME(); Instruction bpInstruction = isa.getBreakpointInstruction(); @@ -178,7 +178,7 @@ public class Breakpoint implements Comparable */ private void reset(Task task) { - ByteBuffer buffer = task.getRawMemory(); + ByteBuffer buffer = ((LinuxPtraceTask)task).getRawMemory(); buffer.position(address); Isa isa = ((LinuxPtraceTask)task).getIsaFIXME(); diff --git a/frysk-core/frysk/proc/live/ChangeLog b/frysk-core/frysk/proc/live/ChangeLog index a4d5ab7..ee234d3 100644 --- a/frysk-core/frysk/proc/live/ChangeLog +++ b/frysk-core/frysk/proc/live/ChangeLog @@ -1,5 +1,12 @@ 2008-01-11 Andrew Cagney + * TestTaskObserverCode.java: Move from + frysk.proc.TestTaskObserverCode. + * LinuxPtraceTask.java (getRawMemory()): Make package-private. + * LiveTask.java (getRawMemory()): Declare. + * Breakpoint.java: Update. + * Instruction.java: Update. + * LiveTask.java (handleAddObservation(TaskObservation)) (handleDeleteObservation(TaskObservation)): Declare. * TaskObservation.java: Move from frysk.proc.TaskObservation. diff --git a/frysk-core/frysk/proc/live/Instruction.java b/frysk-core/frysk/proc/live/Instruction.java index b76760e..6a62978 100644 --- a/frysk-core/frysk/proc/live/Instruction.java +++ b/frysk-core/frysk/proc/live/Instruction.java @@ -141,7 +141,7 @@ public class Instruction */ public void setupExecuteOutOfLine(Task task, long pc, long address) { - ByteBuffer buffer = task.getRawMemory(); + ByteBuffer buffer = ((LinuxPtraceTask)task).getRawMemory(); buffer.position(address); buffer.put(instr); task.setPC(address); diff --git a/frysk-core/frysk/proc/live/LinuxPtraceTask.java b/frysk-core/frysk/proc/live/LinuxPtraceTask.java index a274b42..36ef26c 100644 --- a/frysk-core/frysk/proc/live/LinuxPtraceTask.java +++ b/frysk-core/frysk/proc/live/LinuxPtraceTask.java @@ -103,12 +103,10 @@ public class LinuxPtraceTask extends LiveTask { } } - /** * Return the raw memory byte-buffer. This is the TEXT/DATA area. */ - public ByteBuffer getRawMemory () - { + ByteBuffer getRawMemory() { logger.log(Level.FINE, "Begin fillMemory\n", this); ByteOrder byteOrder = getISA().order(); ByteBuffer memory = new AddressSpaceByteBuffer(getTid(), diff --git a/frysk-core/frysk/proc/live/LiveTask.java b/frysk-core/frysk/proc/live/LiveTask.java index 2fd28b4..692933c 100644 --- a/frysk-core/frysk/proc/live/LiveTask.java +++ b/frysk-core/frysk/proc/live/LiveTask.java @@ -39,6 +39,7 @@ package frysk.proc.live; +import inua.eio.ByteBuffer; import frysk.proc.Task; import frysk.proc.Proc; import frysk.proc.TaskId; @@ -69,4 +70,15 @@ abstract class LiveTask extends Task { * Process the add observation event. */ abstract void handleDeleteObservation(TaskObservation observation); + + /** + * Returns the memory as seen by frysk-core. That includes things + * like inserted breakpoint instructions bytes which are filtered + * out by getMemory() (which is what you normally + * want unless you are interested in frysk-core specifics).

+ * Default implementation calls getMemory(), need to + * be overriden by subclasses for which the raw memory view and + * the logical memory view are different. + */ + abstract ByteBuffer getRawMemory(); } diff --git a/frysk-core/frysk/proc/TestTaskObserverCode.java b/frysk-core/frysk/proc/live/TestTaskObserverCode.java similarity index 95% rename from frysk-core/frysk/proc/TestTaskObserverCode.java rename to frysk-core/frysk/proc/live/TestTaskObserverCode.java index 490f381..6a456b0 100644 --- a/frysk-core/frysk/proc/TestTaskObserverCode.java +++ b/frysk-core/frysk/proc/live/TestTaskObserverCode.java @@ -1,6 +1,6 @@ // This file is part of the program FRYSK. // -// Copyright 2006, 2007 Red Hat Inc. +// Copyright 2006, 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 @@ -37,17 +37,38 @@ // version and license this file solely under the GPL without // exception. -package frysk.proc; - -import inua.eio.*; -import frysk.testbed.*; -import frysk.sys.*; -import frysk.dwfl.*; -import lib.dwfl.*; -import java.util.*; +package frysk.proc.live; +import lib.dwfl.DwarfCommand; +import lib.dwfl.ElfCommand; +import frysk.dwfl.DwflCache; import frysk.testbed.TestLib; import frysk.testbed.DaemonBlockedAtEntry; +import frysk.proc.Task; +import frysk.proc.Proc; +import frysk.sys.Signal; +import lib.dwfl.SymbolBuilder; +import lib.dwfl.Dwfl; +import lib.dwfl.DwflModule; +import lib.dwfl.DwarfDie; +import frysk.proc.TaskObserver; +import frysk.proc.Action; +import java.util.Map; +import java.util.HashMap; +import frysk.testbed.LegacyOffspring; +import inua.eio.ByteBuffer; +import frysk.proc.Manager; +import frysk.proc.MemoryMap; +import java.util.Collection; +import java.util.Arrays; +import java.util.Iterator; +import frysk.testbed.StopEventLoopWhenProcRemoved; +import lib.dwfl.ElfException; +import java.util.ArrayList; +import lib.dwfl.Elf; +import frysk.testbed.Offspring; +import frysk.sys.Errno; +import lib.dwfl.Dwarf; public class TestTaskObserverCode extends TestLib { @@ -470,7 +491,7 @@ public class TestTaskObserverCode extends TestLib assertRunUntilStop("adding AttachedObserver"); ByteBuffer memory = task.getMemory(); - ByteBuffer raw_memory = task.getRawMemory(); + ByteBuffer rawMemory = ((LiveTask)task).getRawMemory(); long address = getFunctionEntryAddress("bp1_func"); DwarfDie func1_die = getFunctionDie("bp1_func"); long func1_start = func1_die.getLowPC(); @@ -483,8 +504,8 @@ public class TestTaskObserverCode extends TestLib bp1_orig = memory.getByte(); byte bp1_orig_raw; - raw_memory.position(address); - bp1_orig_raw = raw_memory.getByte(); + rawMemory.position(address); + bp1_orig_raw = rawMemory.getByte(); assertEquals("orig and raw", bp1_orig, bp1_orig_raw); byte[] func1_orig = new byte[(int) (func1_end - func1_start)]; @@ -492,8 +513,8 @@ public class TestTaskObserverCode extends TestLib memory.get(func1_orig); byte[] func1_orig_raw = new byte[(int) (func1_end - func1_start)]; - raw_memory.position(func1_start); - raw_memory.get(func1_orig_raw); + rawMemory.position(func1_start); + rawMemory.get(func1_orig_raw); assertTrue("func_orig and func_raw", Arrays.equals(func1_orig, func1_orig_raw)); @@ -510,8 +531,8 @@ public class TestTaskObserverCode extends TestLib assertEquals("orig and insert", bp1_orig, bp1_insert); byte bp1_insert_raw; - raw_memory.position(address); - bp1_insert_raw = raw_memory.getByte(); + rawMemory.position(address); + bp1_insert_raw = rawMemory.getByte(); assertTrue("insert and raw", bp1_insert != bp1_insert_raw); byte[] func1_insert = new byte[(int) (func1_end - func1_start)]; @@ -521,8 +542,8 @@ public class TestTaskObserverCode extends TestLib Arrays.equals(func1_orig, func1_insert)); byte[] func1_insert_raw = new byte[(int) (func1_end - func1_start)]; - raw_memory.position(func1_start); - raw_memory.get(func1_insert_raw); + rawMemory.position(func1_start); + rawMemory.get(func1_insert_raw); assertFalse("func_insert and func_insert_raw", Arrays.equals(func1_insert, func1_insert_raw)); @@ -544,14 +565,14 @@ public class TestTaskObserverCode extends TestLib Arrays.equals(func1_orig, func1_new)); byte bp1_new_raw; - raw_memory.position(address); - bp1_new_raw = raw_memory.getByte(); + rawMemory.position(address); + bp1_new_raw = rawMemory.getByte(); assertEquals("new and raw", bp1_new, bp1_new_raw); byte[] func1_new_raw = new byte[(int) (func1_end - func1_start)]; - raw_memory.position(func1_start); - raw_memory.get(func1_new_raw); + rawMemory.position(func1_start); + rawMemory.get(func1_new_raw); assertTrue("func_new and func_new_raw", Arrays.equals(func1_new, func1_new_raw)); } @@ -571,7 +592,7 @@ public class TestTaskObserverCode extends TestLib assertRunUntilStop("adding AttachedObserver"); ByteBuffer memory = task.getMemory(); - ByteBuffer raw_memory = task.getRawMemory(); + ByteBuffer rawMemory = ((LiveTask)task).getRawMemory(); DwarfDie func1_die = getFunctionDie("bp1_func"); long func1_start = func1_die.getLowPC(); @@ -591,8 +612,8 @@ public class TestTaskObserverCode extends TestLib memory.position(map.addressLow); memory.get(mem_orig); - raw_memory.position(map.addressLow); - raw_memory.get(raw_orig); + rawMemory.position(map.addressLow); + rawMemory.get(raw_orig); assertTrue("mem_orig and raw_orig", Arrays.equals(mem_orig, raw_orig)); @@ -634,8 +655,8 @@ public class TestTaskObserverCode extends TestLib memory.position(map.addressLow); memory.get(bp_mem); - raw_memory.position(map.addressLow); - raw_memory.get(bp_raw); + rawMemory.position(map.addressLow); + rawMemory.get(bp_raw); assertTrue("mem_orig and bp_mem", Arrays.equals(mem_orig, bp_mem)); @@ -669,8 +690,8 @@ public class TestTaskObserverCode extends TestLib memory.position(map.addressLow); memory.get(bp_mem); - raw_memory.position(map.addressLow); - raw_memory.get(bp_raw); + rawMemory.position(map.addressLow); + rawMemory.get(bp_raw); assertTrue("deleted mem_orig and bp_mem", Arrays.equals(mem_orig, bp_mem)); hooks/post-receive -- frysk system monitor/debugger