Index: frysk-core/frysk/debuginfo/DebugInfo.java =================================================================== RCS file: /cvs/frysk/frysk-core/frysk/debuginfo/DebugInfo.java,v retrieving revision 1.10 diff -u -r1.10 DebugInfo.java --- frysk-core/frysk/debuginfo/DebugInfo.java 14 Jun 2007 03:20:33 -0000 1.10 +++ frysk-core/frysk/debuginfo/DebugInfo.java 25 Jun 2007 17:44:11 -0000 @@ -507,4 +507,9 @@ return debugInfoEvaluator[0].getValue(die); } + public Value get(DwarfDie die) + { + return debugInfoEvaluator[0].get(die); + } + } Index: frysk-core/frysk/debuginfo/DebugInfoEvaluator.java =================================================================== RCS file: /cvs/frysk/frysk-core/frysk/debuginfo/DebugInfoEvaluator.java,v retrieving revision 1.14 diff -u -r1.14 DebugInfoEvaluator.java --- frysk-core/frysk/debuginfo/DebugInfoEvaluator.java 22 Jun 2007 15:07:22 -0000 1.14 +++ frysk-core/frysk/debuginfo/DebugInfoEvaluator.java 25 Jun 2007 17:44:12 -0000 @@ -252,10 +252,10 @@ pc = currentFrame.getAdjustedAddress(); - List ops = varDieP.getAddr(); + List ops = varDieP.getAddr(); if (ops.size() == 0 || ((DwarfDie.DwarfOp)ops.get(0)).operator == -1) - return 0; + return 0; if (((DwarfDie.DwarfOp)ops.get(0)).operator == DwOpEncodings.DW_OP_addr_) { setSuccessful(true); @@ -274,7 +274,6 @@ // DW_OP_fbreg setSuccessful(true); Isa isa = currentFrame.getTask().getIsa(); - if (isa instanceof frysk.proc.IsaIA32) regval = swapBytes(currentFrame.getReg(x86regnumbers[reg])); else if (isa instanceof frysk.proc.IsaX8664) @@ -411,7 +410,7 @@ setSuccessful(true); if (isa instanceof frysk.proc.IsaIA32) reg = x86regnumbers[(int)reg]; - + return reg; } @@ -758,24 +757,35 @@ } } + + public Value get (String s) + { + DwarfDie varDie = getDie(s); + if (varDie == null) + return (null); + + return get(varDie); + } + /* * (non-Javadoc) * * @see frysk.expr.CppSymTab#get(java.lang.String) */ - public Value get (String s) + public Value get (DwarfDie varDie) { VariableAccessor[] variableAccessor = { new AccessDW_FORM_block(), new AccessDW_FORM_data() }; ByteOrder byteorder = task.getIsa().getByteOrder(); - DwarfDie varDie = getDie(s); if (varDie == null) return (null); + String s = varDie.getName(); + for (int i = 0; i < variableAccessor.length; i++) { - try + try { DwarfDie type = varDie.getUltimateType(); // if there is no type then setup a sentinel @@ -793,6 +803,7 @@ case BaseTypes.baseTypeInteger: case BaseTypes.baseTypeUnsignedInteger: { + int intVal = variableAccessor[i].getInt(varDie, 0); if (variableAccessor[i].isSuccessful() == false) continue;