From 532cb32214b68eb1d85cdd37bd6c38d9682aeaef Mon Sep 17 00:00:00 2001 From: Victor Leschuk Date: Sat, 25 Feb 2017 13:15:57 +0000 Subject: [PATCH] [DebugInfo] Skip implicit_const attributes when dumping .debug_info. NFC. 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 | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/DebugInfo/DWARF/DWARFDie.cpp b/lib/DebugInfo/DWARF/DWARFDie.cpp index 6949366323b..bdeff7bd3af 100644 --- a/lib/DebugInfo/DWARF/DWARFDie.cpp +++ b/lib/DebugInfo/DWARF/DWARFDie.cpp @@ -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); } -- 2.50.1