diff options
Diffstat (limited to 'lib/DebugInfo')
-rw-r--r-- | lib/DebugInfo/DWARFDebugInfoEntry.cpp | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/lib/DebugInfo/DWARFDebugInfoEntry.cpp b/lib/DebugInfo/DWARFDebugInfoEntry.cpp index 0bf8b69611..f8c89fde93 100644 --- a/lib/DebugInfo/DWARFDebugInfoEntry.cpp +++ b/lib/DebugInfo/DWARFDebugInfoEntry.cpp @@ -31,9 +31,13 @@ void DWARFDebugInfoEntryMinimal::dump(raw_ostream &OS, OS << format("\n0x%8.8x: ", Offset); if (abbrCode) { if (AbbrevDecl) { - OS.indent(indent) << TagString(AbbrevDecl->getTag()) - << format(" [%u] %c\n", abbrCode, - AbbrevDecl->hasChildren() ? '*': ' '); + const char *tagString = TagString(getTag()); + if (tagString) + OS.indent(indent) << tagString; + else + OS.indent(indent) << format("DW_TAG_Unknown_%x", getTag()); + OS << format(" [%u] %c\n", abbrCode, + AbbrevDecl->hasChildren() ? '*' : ' '); // Dump all data in the .debug_info for the attributes const uint32_t numAttributes = AbbrevDecl->getNumAttributes(); @@ -67,8 +71,17 @@ void DWARFDebugInfoEntryMinimal::dumpAttribute(raw_ostream &OS, uint16_t form, unsigned indent) const { OS << format("0x%8.8x: ", *offset_ptr); - OS.indent(indent+2) << AttributeString(attr) - << " [" << FormEncodingString(form) << ']'; + OS.indent(indent+2); + const char *attrString = AttributeString(attr); + if (attrString) + OS << attrString; + else + OS << format("DW_AT_Unknown_%x", attr); + const char *formString = FormEncodingString(form); + if (formString) + OS << " [" << formString << ']'; + else + OS << format(" [DW_FORM_Unknown_%x]", form); DWARFFormValue formValue(form); |