From ea5df1049bffa7bef8528c24f24b491f594f1ea0 Mon Sep 17 00:00:00 2001 From: Greg Clayton Date: Mon, 24 Jul 2017 18:40:33 +0000 Subject: [PATCH] Don't allow .debug_types to be parsed as LLDB can crash when enums are not able to be found. Differential Revision: https://reviews.llvm.org/D35734 llvm-svn: 308911 --- .../Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp index ef18c2b5d3ba..7a4d894af104 100644 --- a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp +++ b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp @@ -497,6 +497,21 @@ uint32_t SymbolFileDWARF::CalculateAbilities() { if (section_list == NULL) return 0; + // On non Apple platforms we might have .debug_types debug info that + // is created by using "-fdebug-types-section". LLDB currently will try + // to load this debug info, but it causes crashes during debugging when + // types are missing since it doesn't know how to parse the info in + // the .debug_types type units. This causes all complex debug info + // types to be unresolved. Because this causes LLDB to crash and since + // it really doesn't provide a solid debuggiung experience, we should + // disable trying to debug this kind of DWARF until support gets + // added or deprecated. + if (section_list->FindSectionByName(ConstString(".debug_types"))) { + m_obj_file->GetModule()->ReportWarning( + "lldb doesn’t support .debug_types debug info"); + return 0; + } + uint64_t debug_abbrev_file_size = 0; uint64_t debug_info_file_size = 0; uint64_t debug_line_file_size = 0;