[Lldb-commits] [lldb] f176388 - [lldb][DWARF] Remove obsolete calls to Supports_DW_AT_APPLE_objc_complete_type and DW_AT_decl_file_attributes_are_invalid (#120226)
via lldb-commits
lldb-commits at lists.llvm.org
Tue Dec 17 05:32:29 PST 2024
Author: Michael Buch
Date: 2024-12-17T13:32:25Z
New Revision: f1763888bb96c9c4069d8d069083371965561111
URL: https://github.com/llvm/llvm-project/commit/f1763888bb96c9c4069d8d069083371965561111
DIFF: https://github.com/llvm/llvm-project/commit/f1763888bb96c9c4069d8d069083371965561111.diff
LOG: [lldb][DWARF] Remove obsolete calls to Supports_DW_AT_APPLE_objc_complete_type and DW_AT_decl_file_attributes_are_invalid (#120226)
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.
Added:
Modified:
lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp
lldb/source/Plugins/SymbolFile/DWARF/DWARFBaseDIE.cpp
lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.cpp
lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.h
lldb/source/Plugins/SymbolFile/DWARF/DebugNamesDWARFIndex.cpp
lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.h
lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp
lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.h
Removed:
################################################################################
diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp b/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp
index 3f49ad25710a9f..e9cc7cc781cc3b 100644
--- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp
+++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp
@@ -1712,8 +1712,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 50f2b0e2a279b7..1ceeef76f7cc3f 100644
--- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.cpp
+++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.cpp
@@ -736,10 +736,6 @@ bool DWARFUnit::LinkToSkeletonUnit(DWARFUnit &skeleton_unit) {
return false; // Already linked to a
diff erent unit.
}
-bool DWARFUnit::Supports_DW_AT_APPLE_objc_complete_type() { return true; }
-
-bool DWARFUnit::DW_AT_decl_file_attributes_are_invalid() { return false; }
-
bool DWARFUnit::Supports_unnamed_objc_bitfields() {
if (GetProducer() == eProducerClang)
return GetProducerVersion() >= llvm::VersionTuple(425, 0, 13);
diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.h b/lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.h
index 5d032fefb2a206..ba142ae86fe0e5 100644
--- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.h
+++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.h
@@ -172,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
More information about the lldb-commits
mailing list