summaryrefslogtreecommitdiff
path: root/lib/DebugInfo/DWARFAbbreviationDeclaration.cpp
diff options
context:
space:
mode:
authorBenjamin Kramer <benny.kra@googlemail.com>2011-09-15 04:00:58 +0000
committerBenjamin Kramer <benny.kra@googlemail.com>2011-09-15 04:00:58 +0000
commit42180e83368b42c4ba4ce01d35e6c97d8b9d3b4b (patch)
tree177ee3c0becc2b219d99b0cd07601399d6fc6598 /lib/DebugInfo/DWARFAbbreviationDeclaration.cpp
parent6bc4e712dc35db68a621f54c176f6e0b14f40f97 (diff)
downloadllvm-42180e83368b42c4ba4ce01d35e6c97d8b9d3b4b.tar.gz
llvm-42180e83368b42c4ba4ce01d35e6c97d8b9d3b4b.tar.bz2
llvm-42180e83368b42c4ba4ce01d35e6c97d8b9d3b4b.tar.xz
DWARF: Fail gracefully when encountering unknown values in an abbrev.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139777 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/DebugInfo/DWARFAbbreviationDeclaration.cpp')
-rw-r--r--lib/DebugInfo/DWARFAbbreviationDeclaration.cpp13
1 files changed, 9 insertions, 4 deletions
diff --git a/lib/DebugInfo/DWARFAbbreviationDeclaration.cpp b/lib/DebugInfo/DWARFAbbreviationDeclaration.cpp
index 7bc942f63d..74c975304a 100644
--- a/lib/DebugInfo/DWARFAbbreviationDeclaration.cpp
+++ b/lib/DebugInfo/DWARFAbbreviationDeclaration.cpp
@@ -47,11 +47,16 @@ DWARFAbbreviationDeclaration::extract(DataExtractor data, uint32_t* offset_ptr,
}
void DWARFAbbreviationDeclaration::dump(raw_ostream &OS) const {
- OS << '[' << getCode() << "] " << TagString(getTag()) << "\tDW_CHILDREN_"
+ const char *tagString = TagString(getTag());
+ OS << '[' << getCode() << "] " << (tagString ? tagString : "DW_TAG_Unknown")
+ << "\tDW_CHILDREN_"
<< (hasChildren() ? "yes" : "no") << '\n';
- for (unsigned i = 0, e = Attributes.size(); i != e; ++i)
- OS << '\t' << AttributeString(Attributes[i].getAttribute())
- << '\t' << FormEncodingString(Attributes[i].getForm()) << '\n';
+ for (unsigned i = 0, e = Attributes.size(); i != e; ++i) {
+ const char *attrString = AttributeString(Attributes[i].getAttribute());
+ const char *formString = FormEncodingString(Attributes[i].getForm());
+ OS << '\t' << (attrString ? attrString : "DW_AT_Unknown")
+ << '\t' << (formString ? formString : "DW_FORM_Unknown") << '\n';
+ }
OS << '\n';
}