From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 18095 invoked by alias); 15 May 2008 15:30:54 -0000 Received: (qmail 18067 invoked by uid 9639); 15 May 2008 15:30:53 -0000 Date: Thu, 15 May 2008 15:30:00 -0000 Message-ID: <20080515153053.18052.qmail@sourceware.org> From: moore@sourceware.org To: frysk-cvs@sourceware.org Subject: [SCM] master: elfutils based disassembler X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: 68a03f3103ec5a4532507d0a49ae3595151f01bd X-Git-Newrev: 68ecf35fae470a998e8d519094ab623822547b18 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-q2/txt/msg00248.txt.bz2 The branch, master has been updated via 68ecf35fae470a998e8d519094ab623822547b18 (commit) from 68a03f3103ec5a4532507d0a49ae3595151f01bd (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email. - Log ----------------------------------------------------------------- commit 68ecf35fae470a998e8d519094ab623822547b18 Author: Tim Moore Date: Thu May 15 17:14:47 2008 +0200 elfutils based disassembler frysk-common/ChangeLog: 2008-05-15 Tim Moore * Makefile.rules (AM_CXXFLAGS): Add elfutils/{libasm,libebl}. frysk-core/ChangeLog: 2008-05-15 Tim Moore * Makefile.am (GEN_GCJ_LDADD_LIST ADD): Add elfutils/libasm/libasm.a. frysk-core/frysk/bindir/ChangeLog: 2008-05-15 Tim Moore * fstep.java (DummyDisassembler, startTracingTask): Use new disassembler from lib.dwfl. frysk-core/frysk/hpd/ChangeLog: 2008-05-15 Tim Moore * DisassembleCommand.java (Options): New options class. Remove options variables from the DisassembleCommand object. (DisassembleCommand constructor): Change options parsers to use Options object. (reset): Delete. (interpret): Use Options object and lib.dwfl.Disassembler. (printInstructions): Use Options object. frysk-core/frysk/pkglibdir/ChangeLog: 2008-05-15 Tim Moore * funit-scopes-multi-file-b.c: Initialize a pointer to function first to avoid warnings. frysk-gtk/ChangeLog: 2008-05-15 Tim Moore * Makefile.am (GEN_GCJ_LDADD_LIST): Add elfutils/libasm/libasm.a. frysk-gui/ChangeLog: 2008-05-15 Tim Moore * Makefile.am (GEN_GCJ_LDADD_LIST): Add elfutils/libasm/libasm.a. frysk-gui/frysk/gui/ChangeLog: 2008-05-15 Tim Moore * disassembler/DisassemblyWindow.java (setTask, resetTask): Use lib.dwfl.Disassembler. * memory/MemoryWindow.java (setTask, resetTask, refreshList): Ditto. frysk-gui/frysk/gui/srcwin/ChangeLog: 2008-05-15 Tim Moore * SourceBuffer.java (disassemblerFrame): Use lib.dwfl.Disassembler. frysk-imports/ChangeLog: 2008-05-15 Tim Moore * Makefile.am (GEN_GCJ_LDADD_LIST): Added elfutils/libasm/libasm.a. frysk-imports/tests/ChangeLog: 2008-05-15 Tim Moore * Makefile.am (frysk4796_dwfltest_LDADD): Add elfutils/libasm/libasm.a. frysk-sys/ChangeLog: 2008-05-15 Tim Moore * Makefile.am (GEN_GCJ_LDADD_LIST): Add elfutils/libasm/libasm.a. frysk-sys/lib/dwfl/ChangeLog: 2008-05-15 Tim Moore * Disassembler.java: New file. * cni/Disassembler.cxx: New file. * Instruction.java: New file. ----------------------------------------------------------------------- Summary of changes: frysk-common/ChangeLog | 4 + frysk-common/Makefile.rules | 2 + frysk-core/ChangeLog | 4 + frysk-core/Makefile.am | 3 +- frysk-core/frysk/bindir/ChangeLog | 5 + frysk-core/frysk/bindir/fstep.java | 26 ++-- frysk-core/frysk/hpd/ChangeLog | 10 ++ frysk-core/frysk/hpd/DisassembleCommand.java | 74 +++++----- frysk-core/frysk/pkglibdir/ChangeLog | 5 + .../frysk/pkglibdir/funit-scopes-multi-file-b.c | 2 + frysk-gtk/ChangeLog | 4 + frysk-gtk/Makefile.am | 1 + frysk-gui/ChangeLog | 4 + frysk-gui/Makefile.am | 1 + frysk-gui/frysk/gui/ChangeLog | 7 + .../frysk/gui/disassembler/DisassemblyWindow.java | 11 +- frysk-gui/frysk/gui/memory/MemoryWindow.java | 15 +- frysk-gui/frysk/gui/srcwin/ChangeLog | 4 + frysk-gui/frysk/gui/srcwin/SourceBuffer.java | 8 +- frysk-imports/ChangeLog | 4 + frysk-imports/Makefile.am | 1 + frysk-imports/tests/ChangeLog | 4 + frysk-imports/tests/Makefile.am | 3 +- frysk-sys/ChangeLog | 4 + frysk-sys/Makefile.am | 1 + frysk-sys/lib/dwfl/ChangeLog | 6 + frysk-sys/lib/dwfl/Disassembler.java | 78 ++++++++++ frysk-sys/lib/dwfl/Instruction.java | 54 +++++++ frysk-sys/lib/dwfl/cni/Disassembler.cxx | 157 ++++++++++++++++++++ 29 files changed, 439 insertions(+), 63 deletions(-) create mode 100644 frysk-sys/lib/dwfl/Disassembler.java create mode 100644 frysk-sys/lib/dwfl/Instruction.java create mode 100644 frysk-sys/lib/dwfl/cni/Disassembler.cxx First 500 lines of diff: diff --git a/frysk-common/ChangeLog b/frysk-common/ChangeLog index 0064a02..c04030d 100644 --- a/frysk-common/ChangeLog +++ b/frysk-common/ChangeLog @@ -1,3 +1,7 @@ +2008-05-15 Tim Moore + + * Makefile.rules (AM_CXXFLAGS): Add elfutils/{libasm,libebl}. + 2008-05-14 Andrew Cagney * Makefile.gen.sh: Match jnixx/*.cxx. diff --git a/frysk-common/Makefile.rules b/frysk-common/Makefile.rules index c273f77..c15e028 100644 --- a/frysk-common/Makefile.rules +++ b/frysk-common/Makefile.rules @@ -163,6 +163,8 @@ AM_CXXFLAGS = \ -I$(srcdir) \ -I$(srcdir)/../frysk-imports/include \ -I$(top_builddir) \ + -I$(srcdir)/../frysk-imports/elfutils/libasm \ + -I$(srcdir)/../frysk-imports/elfutils/libebl \ -I$(srcdir)/../frysk-imports/elfutils/libelf \ -I$(srcdir)/../frysk-imports/elfutils/libdw \ -I$(srcdir)/../frysk-imports/elfutils/libdwfl \ diff --git a/frysk-core/ChangeLog b/frysk-core/ChangeLog index 9e44b4a..9636242 100644 --- a/frysk-core/ChangeLog +++ b/frysk-core/ChangeLog @@ -1,3 +1,7 @@ +2008-05-15 Tim Moore + + * Makefile.am (GEN_GCJ_LDADD_LIST ADD): Add elfutils/libasm/libasm.a. + 2008-05-09 Sami Wagiaalla * Makefile.am: Corred rule for compiling diff --git a/frysk-core/Makefile.am b/frysk-core/Makefile.am index 6c41855..1dca20c 100644 --- a/frysk-core/Makefile.am +++ b/frysk-core/Makefile.am @@ -52,7 +52,8 @@ GEN_GCJ_LDADD_LIST += ../frysk-imports/libfrysk-jline.a GEN_GCJ_LDADD_LIST += ../frysk-imports/libfrysk-antlr.a GEN_GCJ_LDADD_LIST += ../frysk-imports/libfrysk-junit.a GEN_GCJ_LDADD_LIST += ../frysk-imports/libfrysk-getopt.a -GEN_GCJ_LDADD_LIST += ../frysk-imports/libfrysk-jdom.a +GEN_GCJ_LDADD_LIST += ../frysk-imports/libfrysk-jdom.a +GEN_GCJ_LDADD_LIST += ../frysk-imports/elfutils/libasm/libasm.a GEN_GCJ_LDADD_LIST += ../frysk-imports/elfutils/libdwfl/libdwfl.a GEN_GCJ_LDADD_LIST += ../frysk-imports/elfutils/libdw/libdw.a GEN_GCJ_LDADD_LIST += ../frysk-imports/elfutils/libebl/libebl.a diff --git a/frysk-core/frysk/bindir/ChangeLog b/frysk-core/frysk/bindir/ChangeLog index 0c1c86b..fe9a144 100644 --- a/frysk-core/frysk/bindir/ChangeLog +++ b/frysk-core/frysk/bindir/ChangeLog @@ -1,3 +1,8 @@ +2008-05-15 Tim Moore + + * fstep.java (DummyDisassembler, startTracingTask): Use new + disassembler from lib.dwfl. + 2008-05-14 Petr Machata * ftrace.java: Support address tracing. diff --git a/frysk-core/frysk/bindir/fstep.java b/frysk-core/frysk/bindir/fstep.java index d509347..a32fbca 100644 --- a/frysk-core/frysk/bindir/fstep.java +++ b/frysk-core/frysk/bindir/fstep.java @@ -46,7 +46,9 @@ import java.util.HashMap; import java.util.Iterator; import java.util.List; -import lib.opcodes.Disassembler; +import lib.dwfl.Disassembler; +import lib.dwfl.Dwfl; +import frysk.dwfl.DwflCache; import frysk.isa.signals.Signal; import frysk.proc.Action; import frysk.proc.Auxv; @@ -167,12 +169,11 @@ public class fstep implements ProcRunObserver, */ static class DummyDisassembler extends Disassembler { - private final ByteBuffer memory; - DummyDisassembler(ByteBuffer memory) - { - super(memory); - this.memory = memory; - } + private final ByteBuffer memory; + DummyDisassembler(Dwfl dwfl, ByteBuffer memory) { + super(dwfl, memory); + this.memory = memory; + } public List disassembleInstructions(long address, long count) { @@ -223,10 +224,13 @@ public class fstep implements ProcRunObserver, // We only need one disassembler since all Tasks share their memory. if (disassembler == null) { - if (Disassembler.available()) - disassembler = new Disassembler(task.getMemory()); - else - disassembler = new DummyDisassembler(task.getMemory()); + Dwfl dwfl = DwflCache.getDwfl(task); + try { + disassembler = new Disassembler(dwfl, task.getMemory()); + } + catch (RuntimeException ex) { + disassembler = new DummyDisassembler(dwfl, task.getMemory()); + } } task.requestAddInstructionObserver(this); task.requestAddTerminatedObserver(this); diff --git a/frysk-core/frysk/hpd/ChangeLog b/frysk-core/frysk/hpd/ChangeLog index 907551e..f97cb00 100644 --- a/frysk-core/frysk/hpd/ChangeLog +++ b/frysk-core/frysk/hpd/ChangeLog @@ -1,3 +1,13 @@ +2008-05-15 Tim Moore + + * DisassembleCommand.java (Options): New options class. Remove + options variables from the DisassembleCommand object. + (DisassembleCommand constructor): Change options parsers to use + Options object. + (reset): Delete. + (interpret): Use Options object and lib.dwfl.Disassembler. + (printInstructions): Use Options object. + 2008-05-13 Teresa Thomas * WatchCommand.java (WatchpointObserver.addFailed): diff --git a/frysk-core/frysk/hpd/DisassembleCommand.java b/frysk-core/frysk/hpd/DisassembleCommand.java index 19f19e0..bc64c8f 100644 --- a/frysk-core/frysk/hpd/DisassembleCommand.java +++ b/frysk-core/frysk/hpd/DisassembleCommand.java @@ -42,14 +42,25 @@ package frysk.hpd; import java.util.Iterator; import java.util.List; import frysk.debuginfo.DebugInfoFrame; +import frysk.dwfl.DwflCache; import frysk.proc.Task; import frysk.symtab.Symbol; import frysk.symtab.SymbolFactory; -import lib.opcodes.Disassembler; -import lib.opcodes.Instruction; +import lib.dwfl.Disassembler; +import lib.dwfl.Instruction; public class DisassembleCommand extends ParameterizedCommand { + static private class Options { + boolean allInstructions = true; + boolean full = false; + boolean symbol = true; + } + + Object options() { + return new Options(); + } + public DisassembleCommand() { super("disassemble a section of memory", "disassemble [startAddress] [--] [OPTIONS]||\n" @@ -62,38 +73,26 @@ public class DisassembleCommand extends ParameterizedCommand { "only print the instruction portion not the parameters", "") { void parse(String argument, Object options) { - allInstructions = parseBoolean(argument); + ((Options)options).allInstructions = parseBoolean(argument); } }); add(new CommandOption("full-function", 'f', "disassemble the entire function", "") { void parse(String argument, Object options) { - full = parseBoolean(argument); + ((Options)options).full = parseBoolean(argument); } }); add(new CommandOption("symbol", 's', "print the symbol name", "") { void parse(String argument, Object options) { - symbol = parseBoolean(argument); + ((Options)options).symbol = parseBoolean(argument); } }); } - private boolean allInstructions = true; - - private boolean full = false; - - private boolean symbol = true; - - private void reset() { - allInstructions = true; - full = false; - symbol = true; - } - - void interpret(CLI cli, Input cmd, Object options) { - reset(); + void interpret(CLI cli, Input cmd, Object opts) { + Options options = (Options)opts; PTSet ptset = cli.getCommandPTSet(cmd); Iterator taskDataIter = ptset.getTaskData(); if (cmd.size() > 2) @@ -110,7 +109,8 @@ public class DisassembleCommand extends ParameterizedCommand { long currentInstruction = frame.getAddress(); Symbol symbol = frame.getSymbol(); - Disassembler disassembler = new Disassembler(task.getMemory()); + Disassembler disassembler + = new Disassembler(DwflCache.getDwfl(task), task.getMemory()); cli.outWriter.println("[" + data.getParentID() + "." + data.getID() + "]"); if (cmd.size() == 1) { @@ -143,8 +143,9 @@ public class DisassembleCommand extends ParameterizedCommand { + Long.toHexString(endInstruction) + ":"); List instructions = disassembler .disassembleInstructionsStartEnd(startInstruction, - endInstruction); - printInstructions(cli, task, -1, instructions, true); + endInstruction); + options.full = true; + printInstructions(cli, task, -1, instructions, options); continue; } cli.outWriter.println("Dump of assembler code for function: " @@ -153,14 +154,18 @@ public class DisassembleCommand extends ParameterizedCommand { // XXX: Need a better way of handling symbol size = 0 long padding = 100; if (symbol.getSize() == 0) { - instructions = disassembler.disassembleInstructionsStartEnd( - symbol.getAddress(), (currentInstruction + padding)); + instructions = disassembler + .disassembleInstructionsStartEnd(symbol.getAddress(), + (currentInstruction + + padding)); } else { - instructions = disassembler.disassembleInstructionsStartEnd( - symbol.getAddress(), (symbol.getAddress() + symbol - .getSize())); + instructions = disassembler + .disassembleInstructionsStartEnd(symbol.getAddress(), + (symbol.getAddress() + + symbol.getSize())); } - printInstructions(cli, task, currentInstruction, instructions, full); + printInstructions(cli, task, currentInstruction, instructions, + options); } } @@ -171,22 +176,21 @@ public class DisassembleCommand extends ParameterizedCommand { * @param instructions */ private void printInstructions(CLI cli, Task task, long currentAddress, - List instructions, boolean full) { - + List instructions, Options options) { InstructionPrinter printer; printer = new AddressPrinter(); - if (symbol) + if (options.symbol) printer = new SymbolPrinter(task, printer); - if (allInstructions) + if (options.allInstructions) printer = new InstructionParamsPrinter(printer); else printer = new InstructionOnlyPrinter(printer); int wrapLines = 10; HardList cache = null; - if (!full) + if (!options.full) cache = new HardList(wrapLines * 2); Iterator iter = instructions.iterator(); @@ -198,12 +202,12 @@ public class DisassembleCommand extends ParameterizedCommand { else printInstruction(cli, currentAddress, instruction, printer); - if (instruction.address == currentAddress && !full) { + if (instruction.address == currentAddress && !options.full) { break; } } - if (full) { + if (options.full) { cli.outWriter.println("End of assembly dump"); return; } diff --git a/frysk-core/frysk/pkglibdir/ChangeLog b/frysk-core/frysk/pkglibdir/ChangeLog index efeb6d5..2092dc9 100644 --- a/frysk-core/frysk/pkglibdir/ChangeLog +++ b/frysk-core/frysk/pkglibdir/ChangeLog @@ -1,3 +1,8 @@ +2008-05-15 Tim Moore + + * funit-scopes-multi-file-b.c: Initialize a pointer to function + first to avoid warnings. + 2008-05-14 Sami Wagiaalla * funit-scopes-multi-file-a.c: Moved function first(). diff --git a/frysk-core/frysk/pkglibdir/funit-scopes-multi-file-b.c b/frysk-core/frysk/pkglibdir/funit-scopes-multi-file-b.c index ba1756e..87326a8 100644 --- a/frysk-core/frysk/pkglibdir/funit-scopes-multi-file-b.c +++ b/frysk-core/frysk/pkglibdir/funit-scopes-multi-file-b.c @@ -10,4 +10,6 @@ static void first(){// *this* one should be found first(); } +// Avoid a warning about first not being used. +void (*foo)() = first; diff --git a/frysk-gtk/ChangeLog b/frysk-gtk/ChangeLog index aaee04d..50871b5 100644 --- a/frysk-gtk/ChangeLog +++ b/frysk-gtk/ChangeLog @@ -1,3 +1,7 @@ +2008-05-15 Tim Moore + + * Makefile.am (GEN_GCJ_LDADD_LIST): Add elfutils/libasm/libasm.a. + 2008-04-11 Andrew Cagney * .gitignore: Ignore files.base. diff --git a/frysk-gtk/Makefile.am b/frysk-gtk/Makefile.am index 305a1d7..6e913c4 100644 --- a/frysk-gtk/Makefile.am +++ b/frysk-gtk/Makefile.am @@ -51,6 +51,7 @@ GEN_GCJ_LDADD_LIST += ../frysk-sys/libfrysk-sys.a GEN_GCJ_LDADD_LIST += ../frysk-imports/libfrysk-junit.a GEN_GCJ_LDADD_LIST += ../frysk-imports/libfrysk-getopt.a GEN_GCJ_LDADD_LIST += $(FRYSK_GTK_LIBS) +GEN_GCJ_LDADD_LIST += ../frysk-imports/elfutils/libasm/libasm.a GEN_GCJ_LDADD_LIST += ../frysk-imports/elfutils/libdwfl/libdwfl.a GEN_GCJ_LDADD_LIST += ../frysk-imports/elfutils/libdw/libdw.a GEN_GCJ_LDADD_LIST += ../frysk-imports/elfutils/libebl/libebl.a diff --git a/frysk-gui/ChangeLog b/frysk-gui/ChangeLog index 9e1f4e9..7ddfccd 100644 --- a/frysk-gui/ChangeLog +++ b/frysk-gui/ChangeLog @@ -1,3 +1,7 @@ +2008-05-15 Tim Moore + + * Makefile.am (GEN_GCJ_LDADD_LIST): Add elfutils/libasm/libasm.a. + 2008-05-02 Rick Moseley * Makefile.am: Remove CDTParser. diff --git a/frysk-gui/Makefile.am b/frysk-gui/Makefile.am index 555da28..63b4d88 100644 --- a/frysk-gui/Makefile.am +++ b/frysk-gui/Makefile.am @@ -60,6 +60,7 @@ GEN_GCJ_LDADD_LIST += ../frysk-imports/libfrysk-jdom.a GEN_GCJ_LDADD_LIST += ../frysk-imports/libfrysk-junit.a GEN_GCJ_LDADD_LIST += ../frysk-imports/libfrysk-getopt.a GEN_GCJ_LDADD_LIST += ../frysk-imports/libfrysk-jline.a +GEN_GCJ_LDADD_LIST += ../frysk-imports/elfutils/libasm/libasm.a GEN_GCJ_LDADD_LIST += ../frysk-imports/elfutils/libdwfl/libdwfl.a GEN_GCJ_LDADD_LIST += ../frysk-imports/elfutils/libdw/libdw.a GEN_GCJ_LDADD_LIST += ../frysk-imports/elfutils/libebl/libebl.a diff --git a/frysk-gui/frysk/gui/ChangeLog b/frysk-gui/frysk/gui/ChangeLog index 5a855e9..c21e768 100644 --- a/frysk-gui/frysk/gui/ChangeLog +++ b/frysk-gui/frysk/gui/ChangeLog @@ -1,3 +1,10 @@ +2008-05-15 Tim Moore + + * disassembler/DisassemblyWindow.java (setTask, resetTask): Use + lib.dwfl.Disassembler. + * memory/MemoryWindow.java (setTask, resetTask, refreshList): + Ditto. + 2008-04-17 Andrew Cagney * disassembler/DisassemblyWindowFactory.java: Use diff --git a/frysk-gui/frysk/gui/disassembler/DisassemblyWindow.java b/frysk-gui/frysk/gui/disassembler/DisassemblyWindow.java index 7fae8f1..0f13e94 100644 --- a/frysk-gui/frysk/gui/disassembler/DisassemblyWindow.java +++ b/frysk-gui/frysk/gui/disassembler/DisassemblyWindow.java @@ -76,6 +76,7 @@ import org.gnu.gtk.event.LifeCycleListener; import org.gnu.gtk.event.SpinEvent; import org.gnu.gtk.event.SpinListener; +import frysk.dwfl.DwflCache; import frysk.gui.common.IconManager; import frysk.gui.dialogs.WarnDialog; import frysk.gui.prefs.PreferenceManager; @@ -90,8 +91,8 @@ import frysk.proc.MemoryMap; import frysk.symtab.Symbol; import frysk.symtab.SymbolFactory; -import lib.opcodes.Disassembler; -import lib.opcodes.Instruction; +import lib.dwfl.Disassembler; +import lib.dwfl.Instruction; public class DisassemblyWindow extends Window @@ -271,7 +272,7 @@ public class DisassemblyWindow long pc_inc; final double highestAddress = Math.pow(2.0, (double)(8 * myTask.getISA().wordSize())) - 1.0; - this.diss = new Disassembler(myTask.getMemory()); + this.diss = new Disassembler(DwflCache.getDwfl(myTask), myTask.getMemory()); pc_inc = myTask.getPC(); this.pc = pc_inc; @@ -300,7 +301,7 @@ public class DisassemblyWindow this.segmentCombo.setActive(segmentIndex + 1); this.segmentCombo.showAll(); - this.diss = new Disassembler(myTask.getMemory()); + this.diss = new Disassembler(DwflCache.getDwfl(myTask), myTask.getMemory()); this.fromSpin.setRange(0.0, highestAddress); this.fromSpin.setValue((double) pc_inc); this.fromBox.setText("0x" + Long.toHexString(pc_inc)); @@ -570,7 +571,7 @@ public class DisassemblyWindow long pc_inc; double highestAddress = Math.pow(2.0, (double)(8 * myTask.getISA().wordSize())) - 1.0; - this.diss = new Disassembler(myTask.getMemory()); + this.diss = new Disassembler(DwflCache.getDwfl(myTask), myTask.getMemory()); pc_inc = myTask.getPC(); this.pc = pc_inc; // long end = pc_inc + 20; diff --git a/frysk-gui/frysk/gui/memory/MemoryWindow.java b/frysk-gui/frysk/gui/memory/MemoryWindow.java index 5c3d19a..4f40806 100644 --- a/frysk-gui/frysk/gui/memory/MemoryWindow.java +++ b/frysk-gui/frysk/gui/memory/MemoryWindow.java @@ -82,6 +82,7 @@ import org.gnu.gtk.event.SpinListener; import org.gnu.gtk.event.ContainerListener; import org.gnu.gtk.event.ContainerEvent; +import frysk.dwfl.DwflCache; import frysk.gui.common.IconManager; import frysk.gui.dialogs.WarnDialog; import frysk.gui.prefs.PreferenceManager; @@ -95,8 +96,8 @@ import frysk.stepping.TaskStepEngine; import frysk.symtab.SymbolFactory; import frysk.proc.MemoryMap; -import lib.opcodes.Disassembler; -import lib.opcodes.Instruction; +import lib.dwfl.Disassembler; +import lib.dwfl.Instruction; public class MemoryWindow extends Window @@ -286,7 +287,7 @@ public class MemoryWindow this.mmaps = this.myTask.getProc().getMaps(); - this.diss = new Disassembler(myTask.getMemory()); + this.diss = new Disassembler(DwflCache.getDwfl(myTask), myTask.getMemory()); pc_inc = myTask.getPC(); this.setTitle(this.getTitle() + " - " + this.myTask.getProc().getCommand() + " " + this.myTask.getName()); @@ -316,7 +317,7 @@ public class MemoryWindow this.segmentCombo.showAll(); - this.diss = new Disassembler(myTask.getMemory()); + this.diss = new Disassembler(DwflCache.getDwfl(myTask), myTask.getMemory()); this.fromSpin.setRange(0.0, highestAddress); this.fromSpin.setValue((double) pc_inc); this.fromBox.setText("0x" + Long.toHexString(pc_inc)); @@ -554,7 +555,7 @@ public class MemoryWindow long pc_inc; double highestAddress = Math.pow(2.0, (double)(8 * myTask.getISA().wordSize())) - 1.0; - this.diss = new Disassembler(myTask.getMemory()); + this.diss = new Disassembler(DwflCache.getDwfl(myTask), myTask.getMemory()); pc_inc = myTask.getPC(); @@ -624,8 +625,8 @@ public class MemoryWindow List instructionsList = diss.disassembleInstructions((long) this.lastKnownFrom, - (long) (this.lastKnownTo - - this.lastKnownFrom + 1)); + (int)(this.lastKnownTo + - this.lastKnownFrom + 1)); Iterator li = instructionsList.listIterator(0); Instruction ins = (Instruction) li.next(); diff --git a/frysk-gui/frysk/gui/srcwin/ChangeLog b/frysk-gui/frysk/gui/srcwin/ChangeLog index 81b6545..57fe952 100644 --- a/frysk-gui/frysk/gui/srcwin/ChangeLog +++ b/frysk-gui/frysk/gui/srcwin/ChangeLog hooks/post-receive -- frysk system monitor/debugger