diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIAsm.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIAsm.java index e964347a842..cc304fdee9a 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIAsm.java +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIAsm.java @@ -70,16 +70,28 @@ public class MIAsm { MIValue value = results[i].getMIValue(); String str = ""; + // Recurse. if (value instanceof MITuple) { parse((MITuple)value); continue; } + if (value != null && value instanceof MIConst) { str = ((MIConst)value).getCString(); } - if (var.equals("address")) { + if (var.equals("line_asm_insn")) { + if (value instanceof MIList) { + MIList l = (MIList)value; + MIValue[] values = l.getMIValues(); + for (int j = 0; j < values.length; j++) { + if (values[j] instanceof MITuple) { + parse((MITuple)values[j]); + } + } + } + } else if (var.equals("address")) { try { address = Long.decode(str.trim()).longValue(); } catch (NumberFormatException e) { diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIDataDisassembleInfo.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIDataDisassembleInfo.java index 237f96644a1..0953a421656 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIDataDisassembleInfo.java +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIDataDisassembleInfo.java @@ -26,6 +26,15 @@ public class MIDataDisassembleInfo extends MIInfo { return asms; } + public String toString() { + MIAsm[] asms = getAsm(); + StringBuffer buffer = new StringBuffer(); + for (int i = 0; i < asms.length; i++) { + buffer.append(asms[i].toString()); + } + return buffer.toString(); + } + void parse() { List aList = new ArrayList(); if (isDone()) { @@ -49,6 +58,8 @@ public class MIDataDisassembleInfo extends MIInfo { void parse(MIList list, List aList) { // src and assenbly is different + + // Mixed mode. MIResult[] results = list.getMIResults(); if (results != null && results.length > 0) { for (int i = 0; i < results.length; i++) { @@ -62,6 +73,7 @@ public class MIDataDisassembleInfo extends MIInfo { } } + // Non Mixed with source MIValue[] values = list.getMIValues(); if (values != null && values.length > 0) { for (int i = 0; i < values.length; i++) {