]> granicus.if.org Git - llvm/commitdiff
[DebugInfo] Skip implicit_const attributes when dumping .debug_info. NFC.
authorVictor Leschuk <vleschuk@accesssoftek.com>
Sat, 25 Feb 2017 13:15:57 +0000 (13:15 +0000)
committerVictor Leschuk <vleschuk@accesssoftek.com>
Sat, 25 Feb 2017 13:15:57 +0000 (13:15 +0000)
When dumping .debug_info section we loop through all attributes mentioned in
.debug_abbrev section and dump values using DWARFFormValue::extractValue().
We need to skip implicit_const attributes here as their values are not
really located in .debug_info but directly in .debug_abbrev. This patch fixes
triggered assert() in DWARFFormValue::extractValue() caused by trying to
access implicit_const values from .debug_info.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@296253 91177308-0d34-0410-b5e6-96231b3b80d8

lib/DebugInfo/DWARF/DWARFDie.cpp

index 6949366323b773d3d89614f121dd3e81ab69dc4a..bdeff7bd3af32e7c033298b5af9fd4088d5466f6 100644 (file)
@@ -329,6 +329,12 @@ void DWARFDie::dump(raw_ostream &OS, unsigned RecurseDepth,
         
         // Dump all data in the DIE for the attributes.
         for (const auto &AttrSpec : AbbrevDecl->attributes()) {
+          if (AttrSpec.Form == DW_FORM_implicit_const) {
+            // We are dumping .debug_info section ,
+            // implicit_const attribute values are not really stored here,
+            // but in .debug_abbrev section. So we just skip such attrs.
+            continue;
+          }
           dumpAttribute(OS, *this, &offset, AttrSpec.Attr, AttrSpec.Form,
                         Indent);
         }