llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-lldb Author: Michael Buch (Michael137) <details> <summary>Changes</summary> Depends on https://github.com/llvm/llvm-project/pull/120225 With `llvm-gcc` support being removed from LLDB, these APIs are now trivial and can be removed too. --- Full diff: https://github.com/llvm/llvm-project/pull/120226.diff 14 Files Affected: - (modified) lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp (+1-2) - (modified) lldb/source/Plugins/SymbolFile/DWARF/DWARFBaseDIE.cpp (-4) - (modified) lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.cpp (-16) - (modified) lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.h (-5) - (modified) lldb/source/Plugins/SymbolFile/DWARF/DebugNamesDWARFIndex.cpp (-5) - (modified) lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp (+2-35) - (modified) lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.h (-3) - (modified) lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp (+2-19) - (modified) lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.h (-3) - (modified) lldb/test/API/functionalities/conditional_break/TestConditionalBreak.py (+1-1) - (modified) lldb/test/API/functionalities/data-formatter/data-formatter-cpp/TestDataFormatterCpp.py (+1-1) - (modified) lldb/test/API/functionalities/data-formatter/data-formatter-skip-summary/TestDataFormatterSkipSummary.py (-21) - (modified) lldb/test/API/lang/cpp/namespace/TestNamespace.py (+1-1) - (modified) lldb/unittests/SymbolFile/DWARF/DWARFUnitTest.cpp (-35) ``````````diff diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp b/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp index 58f7b805abe2fd..03b0e9caee623c 100644 --- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp +++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp @@ -1726,8 +1726,7 @@ DWARFASTParserClang::ParseStructureLikeDIE(const SymbolContext &sc, if ((attrs.class_language == eLanguageTypeObjC || attrs.class_language == eLanguageTypeObjC_plus_plus) && - !attrs.is_complete_objc_class && - die.Supports_DW_AT_APPLE_objc_complete_type()) { + !attrs.is_complete_objc_class) { // We have a valid eSymbolTypeObjCClass class symbol whose name // matches the current objective C class that we are trying to find // and this DIE isn't the complete definition (we checked diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFBaseDIE.cpp b/lldb/source/Plugins/SymbolFile/DWARF/DWARFBaseDIE.cpp index c2ebeed4c860d4..d245fecd891e14 100644 --- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFBaseDIE.cpp +++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFBaseDIE.cpp @@ -107,10 +107,6 @@ bool DWARFBaseDIE::HasChildren() const { return m_die && m_die->HasChildren(); } -bool DWARFBaseDIE::Supports_DW_AT_APPLE_objc_complete_type() const { - return IsValid() && GetDWARF()->Supports_DW_AT_APPLE_objc_complete_type(m_cu); -} - DWARFAttributes DWARFBaseDIE::GetAttributes(Recurse recurse) const { if (IsValid()) return m_die->GetAttributes(m_cu, recurse); diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.cpp b/lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.cpp index 07de23f9de2fd6..1ceeef76f7cc3f 100644 --- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.cpp +++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.cpp @@ -736,16 +736,6 @@ bool DWARFUnit::LinkToSkeletonUnit(DWARFUnit &skeleton_unit) { return false; // Already linked to a different unit. } -bool DWARFUnit::Supports_DW_AT_APPLE_objc_complete_type() { - return GetProducer() != eProducerLLVMGCC; -} - -bool DWARFUnit::DW_AT_decl_file_attributes_are_invalid() { - // llvm-gcc makes completely invalid decl file attributes and won't ever be - // fixed, so we need to know to ignore these. - return GetProducer() == eProducerLLVMGCC; -} - bool DWARFUnit::Supports_unnamed_objc_bitfields() { if (GetProducer() == eProducerClang) return GetProducerVersion() >= llvm::VersionTuple(425, 0, 13); @@ -768,10 +758,6 @@ void DWARFUnit::ParseProducerInfo() { llvm::StringRef(R"(swiftlang-([0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?))")); static const RegularExpression g_clang_version_regex( llvm::StringRef(R"(clang-([0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?))")); - static const RegularExpression g_llvm_gcc_regex( - llvm::StringRef(R"(4\.[012]\.[01] )" - R"(\(Based on Apple Inc\. build [0-9]+\) )" - R"(\(LLVM build [\.0-9]+\)$)")); llvm::SmallVector<llvm::StringRef, 3> matches; if (g_swiftlang_version_regex.Execute(producer, &matches)) { @@ -783,8 +769,6 @@ void DWARFUnit::ParseProducerInfo() { m_producer = eProducerClang; } else if (producer.contains("GNU")) { m_producer = eProducerGCC; - } else if (g_llvm_gcc_regex.Execute(producer)) { - m_producer = eProducerLLVMGCC; } } diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.h b/lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.h index 0a0019c25836b4..ba142ae86fe0e5 100644 --- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.h +++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.h @@ -34,7 +34,6 @@ enum DWARFProducer { eProducerInvalid = 0, eProducerClang, eProducerGCC, - eProducerLLVMGCC, eProducerSwift, eProducerOther }; @@ -173,10 +172,6 @@ class DWARFUnit : public UserID { bool LinkToSkeletonUnit(DWARFUnit &skeleton_unit); - bool Supports_DW_AT_APPLE_objc_complete_type(); - - bool DW_AT_decl_file_attributes_are_invalid(); - bool Supports_unnamed_objc_bitfields(); SymbolFileDWARF &GetSymbolFileDWARF() const { return m_dwarf; } diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DebugNamesDWARFIndex.cpp b/lldb/source/Plugins/SymbolFile/DWARF/DebugNamesDWARFIndex.cpp index c71c2dd47344a7..e8c621957ef384 100644 --- a/lldb/source/Plugins/SymbolFile/DWARF/DebugNamesDWARFIndex.cpp +++ b/lldb/source/Plugins/SymbolFile/DWARF/DebugNamesDWARFIndex.cpp @@ -271,11 +271,6 @@ void DebugNamesDWARFIndex::GetCompleteObjCClass( // Report invalid continue; } - DWARFUnit *cu = die.GetCU(); - if (!cu->Supports_DW_AT_APPLE_objc_complete_type()) { - incomplete_types.push_back(die); - continue; - } if (die.GetAttributeValueAsUnsigned(DW_AT_APPLE_objc_complete_type, 0)) { // If we find the complete version we're done. diff --git a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp index 68e50902d641a2..000776d746706a 100644 --- a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp +++ b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp @@ -472,8 +472,7 @@ SymbolFileDWARF::SymbolFileDWARF(ObjectFileSP objfile_sp, : SymbolFileCommon(std::move(objfile_sp)), m_debug_map_module_wp(), m_debug_map_symfile(nullptr), m_context(m_objfile_sp->GetModule()->GetSectionList(), dwo_section_list), - m_fetched_external_modules(false), - m_supports_DW_AT_APPLE_objc_complete_type(eLazyBoolCalculate) {} + m_fetched_external_modules(false) {} SymbolFileDWARF::~SymbolFileDWARF() = default; @@ -2920,37 +2919,6 @@ Symbol *SymbolFileDWARF::GetObjCClassSymbol(ConstString objc_class_name) { return objc_class_symbol; } -// Some compilers don't emit the DW_AT_APPLE_objc_complete_type attribute. If -// they don't then we can end up looking through all class types for a complete -// type and never find the full definition. We need to know if this attribute -// is supported, so we determine this here and cache th result. We also need to -// worry about the debug map -// DWARF file -// if we are doing darwin DWARF in .o file debugging. -bool SymbolFileDWARF::Supports_DW_AT_APPLE_objc_complete_type(DWARFUnit *cu) { - if (m_supports_DW_AT_APPLE_objc_complete_type == eLazyBoolCalculate) { - m_supports_DW_AT_APPLE_objc_complete_type = eLazyBoolNo; - if (cu && cu->Supports_DW_AT_APPLE_objc_complete_type()) - m_supports_DW_AT_APPLE_objc_complete_type = eLazyBoolYes; - else { - DWARFDebugInfo &debug_info = DebugInfo(); - const uint32_t num_compile_units = GetNumCompileUnits(); - for (uint32_t cu_idx = 0; cu_idx < num_compile_units; ++cu_idx) { - DWARFUnit *dwarf_cu = debug_info.GetUnitAtIndex(cu_idx); - if (dwarf_cu != cu && - dwarf_cu->Supports_DW_AT_APPLE_objc_complete_type()) { - m_supports_DW_AT_APPLE_objc_complete_type = eLazyBoolYes; - break; - } - } - } - if (m_supports_DW_AT_APPLE_objc_complete_type == eLazyBoolNo && - GetDebugMapSymfile()) - return m_debug_map_symfile->Supports_DW_AT_APPLE_objc_complete_type(this); - } - return m_supports_DW_AT_APPLE_objc_complete_type == eLazyBoolYes; -} - // This function can be used when a DIE is found that is a forward declaration // DIE and we want to try and find a type that has the complete definition. TypeSP SymbolFileDWARF::FindCompleteObjCDefinitionTypeForDIE( @@ -2968,8 +2936,7 @@ TypeSP SymbolFileDWARF::FindCompleteObjCDefinitionTypeForDIE( if (type_die == die || !IsStructOrClassTag(type_die.Tag())) return true; - if (must_be_implementation && - type_die.Supports_DW_AT_APPLE_objc_complete_type()) { + if (must_be_implementation) { const bool try_resolving_type = type_die.GetAttributeValueAsUnsigned( DW_AT_APPLE_objc_complete_type, 0); if (!try_resolving_type) diff --git a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.h b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.h index 76f4188fdf4afb..6ecc8855380411 100644 --- a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.h +++ b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.h @@ -223,8 +223,6 @@ class SymbolFileDWARF : public SymbolFileCommon { virtual void GetObjCMethods(ConstString class_name, llvm::function_ref<bool(DWARFDIE die)> callback); - bool Supports_DW_AT_APPLE_objc_complete_type(DWARFUnit *cu); - DebugMacrosSP ParseDebugMacros(lldb::offset_t *offset); static DWARFDIE GetParentSymbolContextDIE(const DWARFDIE &die); @@ -524,7 +522,6 @@ class SymbolFileDWARF : public SymbolFileCommon { ExternalTypeModuleMap m_external_type_modules; std::unique_ptr<DWARFIndex> m_index; bool m_fetched_external_modules : 1; - LazyBool m_supports_DW_AT_APPLE_objc_complete_type; typedef std::set<DIERef> DIERefSet; typedef llvm::StringMap<DIERefSet> NameToOffsetMap; diff --git a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp index 08ea4c6d1645ad..cbe077bfbaef52 100644 --- a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp +++ b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp @@ -248,9 +248,8 @@ SymbolFile *SymbolFileDWARFDebugMap::CreateInstance(ObjectFileSP objfile_sp) { } SymbolFileDWARFDebugMap::SymbolFileDWARFDebugMap(ObjectFileSP objfile_sp) - : SymbolFileCommon(std::move(objfile_sp)), m_flags(), m_compile_unit_infos(), - m_func_indexes(), m_glob_indexes(), - m_supports_DW_AT_APPLE_objc_complete_type(eLazyBoolCalculate) {} + : SymbolFileCommon(std::move(objfile_sp)), m_flags(), + m_compile_unit_infos(), m_func_indexes(), m_glob_indexes() {} SymbolFileDWARFDebugMap::~SymbolFileDWARFDebugMap() = default; @@ -1157,22 +1156,6 @@ DWARFDIE SymbolFileDWARFDebugMap::FindDefinitionDIE(const DWARFDIE &die) { return result; } -bool SymbolFileDWARFDebugMap::Supports_DW_AT_APPLE_objc_complete_type( - SymbolFileDWARF *skip_dwarf_oso) { - if (m_supports_DW_AT_APPLE_objc_complete_type == eLazyBoolCalculate) { - m_supports_DW_AT_APPLE_objc_complete_type = eLazyBoolNo; - ForEachSymbolFile([&](SymbolFileDWARF *oso_dwarf) { - if (skip_dwarf_oso != oso_dwarf && - oso_dwarf->Supports_DW_AT_APPLE_objc_complete_type(nullptr)) { - m_supports_DW_AT_APPLE_objc_complete_type = eLazyBoolYes; - return IterationAction::Stop; - } - return IterationAction::Continue; - }); - } - return m_supports_DW_AT_APPLE_objc_complete_type == eLazyBoolYes; -} - TypeSP SymbolFileDWARFDebugMap::FindCompleteObjCDefinitionTypeForDIE( const DWARFDIE &die, ConstString type_name, bool must_be_implementation) { diff --git a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.h b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.h index 34cb52e5b601c4..0ebcad2866a72e 100644 --- a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.h +++ b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.h @@ -279,8 +279,6 @@ class SymbolFileDWARFDebugMap : public SymbolFileCommon { DWARFDIE FindDefinitionDIE(const DWARFDIE &die); - bool Supports_DW_AT_APPLE_objc_complete_type(SymbolFileDWARF *skip_dwarf_oso); - lldb::TypeSP FindCompleteObjCDefinitionTypeForDIE( const DWARFDIE &die, ConstString type_name, bool must_be_implementation); @@ -331,7 +329,6 @@ class SymbolFileDWARFDebugMap : public SymbolFileCommon { llvm::DenseMap<lldb::opaque_compiler_type_t, DIERef> m_forward_decl_compiler_type_to_die; UniqueDWARFASTTypeMap m_unique_ast_type_map; - LazyBool m_supports_DW_AT_APPLE_objc_complete_type; DebugMap m_debug_map; // When an object file from the debug map gets parsed in diff --git a/lldb/test/API/functionalities/conditional_break/TestConditionalBreak.py b/lldb/test/API/functionalities/conditional_break/TestConditionalBreak.py index 725e5d4722dd18..9852df883ff277 100644 --- a/lldb/test/API/functionalities/conditional_break/TestConditionalBreak.py +++ b/lldb/test/API/functionalities/conditional_break/TestConditionalBreak.py @@ -10,7 +10,7 @@ # rdar://problem/8532131 # lldb not able to digest the clang-generated debug info correctly with respect to function name # -# This class currently fails for clang as well as llvm-gcc. +# This class currently fails for clang. class ConditionalBreakTestCase(TestBase): diff --git a/lldb/test/API/functionalities/data-formatter/data-formatter-cpp/TestDataFormatterCpp.py b/lldb/test/API/functionalities/data-formatter/data-formatter-cpp/TestDataFormatterCpp.py index 6fa15d9e5ee606..8d840a03d064af 100644 --- a/lldb/test/API/functionalities/data-formatter/data-formatter-cpp/TestDataFormatterCpp.py +++ b/lldb/test/API/functionalities/data-formatter/data-formatter-cpp/TestDataFormatterCpp.py @@ -67,7 +67,7 @@ def cleanup(): ) # gcc4.2 on Mac OS X skips typedef chains in the DWARF output - if self.getCompiler() in ["clang", "llvm-gcc"]: + if self.getCompiler() in ["clang"] self.expect( "frame variable", patterns=[ diff --git a/lldb/test/API/functionalities/data-formatter/data-formatter-skip-summary/TestDataFormatterSkipSummary.py b/lldb/test/API/functionalities/data-formatter/data-formatter-skip-summary/TestDataFormatterSkipSummary.py index aac18e13bf54f2..2c0a89f9839941 100644 --- a/lldb/test/API/functionalities/data-formatter/data-formatter-skip-summary/TestDataFormatterSkipSummary.py +++ b/lldb/test/API/functionalities/data-formatter/data-formatter-skip-summary/TestDataFormatterSkipSummary.py @@ -157,27 +157,6 @@ def cleanup(): ], ) - # Bad debugging info on SnowLeopard gcc (Apple Inc. build 5666). - # Skip the following tests if the condition is met. - if self.getCompiler().endswith("gcc") and not self.getCompiler().endswith( - "llvm-gcc" - ): - import re - - gcc_version_output = system([[lldbutil.which(self.getCompiler()), "-v"]]) - self.trace("my output:", gcc_version_output) - for line in gcc_version_output.split(os.linesep): - m = re.search("\(Apple Inc\. build ([0-9]+)\)", line) - self.trace("line:", line) - if m: - gcc_build = int(m.group(1)) - self.trace("gcc build:", gcc_build) - if gcc_build >= 5666: - # rdar://problem/9804600" - self.skipTest( - "rdar://problem/9804600 wrong namespace for std::string in debug info" - ) - # Expand same expression, skipping 3 layers of summaries self.expect( "frame variable data1.m_child1->m_child2 --show-types --no-summary-depth=3", diff --git a/lldb/test/API/lang/cpp/namespace/TestNamespace.py b/lldb/test/API/lang/cpp/namespace/TestNamespace.py index 8b013d928f9ca5..40cbff9cb3c949 100644 --- a/lldb/test/API/lang/cpp/namespace/TestNamespace.py +++ b/lldb/test/API/lang/cpp/namespace/TestNamespace.py @@ -161,7 +161,7 @@ def test_with_run_command(self): # On Mac OS X, gcc 4.2 emits the wrong debug info with respect to # types. slist = ["(int) a = 12", "anon_uint", "a_uint", "b_uint", "y_uint"] - if self.platformIsDarwin() and self.getCompiler() in ["clang", "llvm-gcc"]: + if self.platformIsDarwin() and self.getCompiler() in ["clang"]: slist = [ "(int) a = 12", "::my_uint_t", diff --git a/lldb/unittests/SymbolFile/DWARF/DWARFUnitTest.cpp b/lldb/unittests/SymbolFile/DWARF/DWARFUnitTest.cpp index 91354494155e6b..e847b3d39ebd66 100644 --- a/lldb/unittests/SymbolFile/DWARF/DWARFUnitTest.cpp +++ b/lldb/unittests/SymbolFile/DWARF/DWARFUnitTest.cpp @@ -122,41 +122,6 @@ TEST(DWARFUnitTest, ClangProducer) { EXPECT_EQ(unit->GetProducerVersion(), llvm::VersionTuple(1300, 0, 29, 3)); } -TEST(DWARFUnitTest, LLVMGCCProducer) { - const char *yamldata = R"( ---- !ELF -FileHeader: - Class: ELFCLASS64 - Data: ELFDATA2LSB - Type: ET_EXEC - Machine: EM_386 -DWARF: - debug_str: - - 'i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00)' - debug_abbrev: - - Table: - - Code: 0x00000001 - Tag: DW_TAG_compile_unit - Children: DW_CHILDREN_yes - Attributes: - - Attribute: DW_AT_producer - Form: DW_FORM_strp - debug_info: - - Version: 4 - AddrSize: 8 - Entries: - - AbbrCode: 0x1 - Values: - - Value: 0x0 - - AbbrCode: 0x0 -)"; - - YAMLModuleTester t(yamldata); - DWARFUnit *unit = t.GetDwarfUnit(); - ASSERT_TRUE((bool)unit); - EXPECT_EQ(unit->GetProducer(), eProducerLLVMGCC); -} - TEST(DWARFUnitTest, SwiftProducer) { const char *yamldata = R"( --- !ELF `````````` </details> https://github.com/llvm/llvm-project/pull/120226 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits