X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=lttng%2Forg.eclipse.tracecompass.lttng2.ust.core%2Fsrc%2Forg%2Feclipse%2Ftracecompass%2Finternal%2Flttng2%2Fust%2Fcore%2Fanalysis%2Fdebuginfo%2FFileOffsetMapper.java;h=d6700046d216c57145fa101fa2138b8ee10141d5;hb=574eedca5174aef6f51d57703f8e78e65a4073fe;hp=7717955aef228758a21cc671fc288788b5ab01af;hpb=a68074e4c4bc61923d89b8157aa947226b678096;p=deliverable%2Ftracecompass.git diff --git a/lttng/org.eclipse.tracecompass.lttng2.ust.core/src/org/eclipse/tracecompass/internal/lttng2/ust/core/analysis/debuginfo/FileOffsetMapper.java b/lttng/org.eclipse.tracecompass.lttng2.ust.core/src/org/eclipse/tracecompass/internal/lttng2/ust/core/analysis/debuginfo/FileOffsetMapper.java index 7717955aef..d6700046d2 100644 --- a/lttng/org.eclipse.tracecompass.lttng2.ust.core/src/org/eclipse/tracecompass/internal/lttng2/ust/core/analysis/debuginfo/FileOffsetMapper.java +++ b/lttng/org.eclipse.tracecompass.lttng2.ust.core/src/org/eclipse/tracecompass/internal/lttng2/ust/core/analysis/debuginfo/FileOffsetMapper.java @@ -163,6 +163,12 @@ public final class FileOffsetMapper { // Utility methods making use of 'addr2line' // ------------------------------------------------------------------------ + /** + * Value used in addr2line output to represent unknown function names or + * source files. + */ + private static final String UNKNOWN_VALUE = "??"; //$NON-NLS-1$ + /** * Cache of all calls to 'addr2line', so that we can avoid recalling the * external process repeatedly. @@ -252,25 +258,26 @@ public final class FileOffsetMapper { if (oddLine) { /* This is a line indicating the function name */ - currentFunctionName = outputLine; + if (outputLine.equals(UNKNOWN_VALUE)) { + currentFunctionName = null; + } else { + currentFunctionName = outputLine; + } } else { /* This is a line indicating a call site */ String[] elems = outputLine.split(":"); //$NON-NLS-1$ String fileName = elems[0]; - if (fileName.equals("??")) { //$NON-NLS-1$ - continue; + if (fileName.equals(UNKNOWN_VALUE)) { + fileName = null; } + Long lineNumber; try { - long lineNumber = Long.parseLong(elems[1]); - callsites.add(new Addr2lineInfo(fileName, currentFunctionName, lineNumber)); - + lineNumber = Long.valueOf(elems[1]); } catch (NumberFormatException e) { - /* - * Probably a '?' output, meaning unknown line number. - * Ignore this entry. - */ - continue; + /* Probably a '?' output, meaning unknown line number. */ + lineNumber = null; } + callsites.add(new Addr2lineInfo(fileName, currentFunctionName, lineNumber)); } }