diff options
author | Benjamin Kramer <benny.kra@googlemail.com> | 2011-09-15 05:43:00 +0000 |
---|---|---|
committer | Benjamin Kramer <benny.kra@googlemail.com> | 2011-09-15 05:43:00 +0000 |
commit | 9bca64ff2a12cef2759a8f6deb2d28c270e872ab (patch) | |
tree | 5e0763495f93183ac4fbc3f83f020f7bfd99ca5a /llvm/lib/DebugInfo/DWARFDebugInfoEntry.cpp | |
parent | e8cdaddcf8b197bd3f8ffa801ea8efe8f26a9cbc (diff) | |
download | bcm5719-llvm-9bca64ff2a12cef2759a8f6deb2d28c270e872ab.tar.gz bcm5719-llvm-9bca64ff2a12cef2759a8f6deb2d28c270e872ab.zip |
DWARF: Make DIE printing more bulletproof.
llvm-svn: 139786
Diffstat (limited to 'llvm/lib/DebugInfo/DWARFDebugInfoEntry.cpp')
-rw-r--r-- | llvm/lib/DebugInfo/DWARFDebugInfoEntry.cpp | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/llvm/lib/DebugInfo/DWARFDebugInfoEntry.cpp b/llvm/lib/DebugInfo/DWARFDebugInfoEntry.cpp index 0bf8b69611f..f8c89fde932 100644 --- a/llvm/lib/DebugInfo/DWARFDebugInfoEntry.cpp +++ b/llvm/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); |