Author: Michael Buch Date: 2023-02-10T23:02:57Z New Revision: d2cc2c5610ffa78736aa99512bc85a85417efb0a
URL: https://github.com/llvm/llvm-project/commit/d2cc2c5610ffa78736aa99512bc85a85417efb0a DIFF: https://github.com/llvm/llvm-project/commit/d2cc2c5610ffa78736aa99512bc85a85417efb0a.diff LOG: Revert "[lldb][DWARFASTParserClang] Attach linkage name to ctors/dtors if missing" This reverts commit b296ddd91cb8e7676b3c38ca7f6d7bdbd84eb4af. Added: Modified: lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp Removed: lldb/test/API/lang/cpp/external_ctor_dtor_lookup/Makefile lldb/test/API/lang/cpp/external_ctor_dtor_lookup/TestExternalCtorDtorLookup.py lldb/test/API/lang/cpp/external_ctor_dtor_lookup/lib.h lldb/test/API/lang/cpp/external_ctor_dtor_lookup/main.cpp ################################################################################ diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp b/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp index 0aacfd1bb0cf8..4429b4fcae2a0 100644 --- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp +++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp @@ -888,45 +888,6 @@ ConvertDWARFCallingConventionToClang(const ParsedDWARFTypeAttributes &attrs) { return clang::CC_C; } -/// Given a DIE with an external definition (and thus no linkage name) -/// find the definitions by lookup into the DWARF name index. -/// We check the DW_AT_specification for each DIE in the index with -/// the same name as the specified 'die' until we find one that references -/// 'die'. Then return that linkage name. If no such DIE is found in the index, -/// returns nullptr. -static char const *FindLinkageName(DWARFDIE die) { - auto *dwarf = die.GetDWARF(); - if (!dwarf) - return nullptr; - - ConstString func_name(die.GetName()); - if (!func_name) - return nullptr; - - SymbolContextList sc_list; - Module::LookupInfo lookup_info(func_name, - FunctionNameType::eFunctionNameTypeMethod | - FunctionNameType::eFunctionNameTypeFull, - LanguageType::eLanguageTypeUnknown); - dwarf->FindFunctions(lookup_info, {}, true, sc_list); - - for (auto const &sc : sc_list.SymbolContexts()) { - if (auto *func = sc.function) { - auto func_die = dwarf->GetDIE(func->GetID()); - if (!func_die.IsValid()) - continue; - - auto spec_die = - func_die.GetAttributeValueAsReferenceDIE(DW_AT_specification); - if (spec_die.IsValid() && spec_die == die) { - return func->GetMangled().GetMangledName().AsCString(); - } - } - } - - return nullptr; -} - TypeSP DWARFASTParserClang::ParseSubroutine(const DWARFDIE &die, ParsedDWARFTypeAttributes &attrs) { Log *log = GetLog(DWARFLog::TypeCompletion | DWARFLog::Lookups); @@ -1155,12 +1116,6 @@ TypeSP DWARFASTParserClang::ParseSubroutine(const DWARFDIE &die, if (attrs.accessibility == eAccessNone) attrs.accessibility = eAccessPublic; - // Make sure we find the linkage name here so it gets - // attached to the member function inside - // AddMethodToCXXRecordType below. - if (!attrs.mangled_name && attrs.storage == clang::SC_Extern) - attrs.mangled_name = FindLinkageName(die); - clang::CXXMethodDecl *cxx_method_decl = m_ast.AddMethodToCXXRecordType( class_opaque_type.GetOpaqueQualType(), diff --git a/lldb/test/API/lang/cpp/external_ctor_dtor_lookup/Makefile b/lldb/test/API/lang/cpp/external_ctor_dtor_lookup/Makefile deleted file mode 100644 index 99998b20bcb05..0000000000000 --- a/lldb/test/API/lang/cpp/external_ctor_dtor_lookup/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -CXX_SOURCES := main.cpp - -include Makefile.rules diff --git a/lldb/test/API/lang/cpp/external_ctor_dtor_lookup/TestExternalCtorDtorLookup.py b/lldb/test/API/lang/cpp/external_ctor_dtor_lookup/TestExternalCtorDtorLookup.py deleted file mode 100644 index 027fd8e39d078..0000000000000 --- a/lldb/test/API/lang/cpp/external_ctor_dtor_lookup/TestExternalCtorDtorLookup.py +++ /dev/null @@ -1,30 +0,0 @@ -""" -Test that we can constructors/destructors -without a linkage name because they are -marked DW_AT_external and the fallback -mangled-name-guesser in LLDB doesn't account -for ABI tags. -""" - -import lldb -from lldbsuite.test.decorators import * -from lldbsuite.test.lldbtest import * -from lldbsuite.test import lldbutil - -class ExternalCtorDtorLookupTestCase(TestBase): - - def test(self): - self.build() - lldbutil.run_to_source_breakpoint(self, 'b\.getWrapper\(\)', - lldb.SBFileSpec('main.cpp', False)) - - self.expect_expr('b.sinkWrapper(b.getWrapper())', result_type='int', result_value='-1') - self.filecheck("target module dump ast", __file__) -# CHECK: ClassTemplateSpecializationDecl {{.*}} class Wrapper definition -# CHECK: |-TemplateArgument type 'Foo' -# CHECK: | `-RecordType {{.*}} 'Foo' -# CHECK: | `-CXXRecord {{.*}} 'Foo' -# CHECK: |-CXXConstructorDecl {{.*}} Wrapper 'void ()' -# CHECK-NEXT: | `-AsmLabelAttr {{.*}} Implicit "_ZN7WrapperI3FooEC1B4testEv" -# CHECK-NEXT: `-CXXDestructorDecl {{.*}} ~Wrapper 'void ()' -# CHECK-NEXT: `-AsmLabelAttr {{.*}} Implicit "_ZN7WrapperI3FooED1B4testEv" diff --git a/lldb/test/API/lang/cpp/external_ctor_dtor_lookup/lib.h b/lldb/test/API/lang/cpp/external_ctor_dtor_lookup/lib.h deleted file mode 100644 index 070ba7ba74734..0000000000000 --- a/lldb/test/API/lang/cpp/external_ctor_dtor_lookup/lib.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef LIB_H_IN -#define LIB_H_IN - -template <typename T> class Wrapper { -public: - [[gnu::abi_tag("test")]] Wrapper(){}; - - [[gnu::abi_tag("test")]] ~Wrapper(){}; -}; - -#endif // _H_IN diff --git a/lldb/test/API/lang/cpp/external_ctor_dtor_lookup/main.cpp b/lldb/test/API/lang/cpp/external_ctor_dtor_lookup/main.cpp deleted file mode 100644 index 1503ae3f7da7b..0000000000000 --- a/lldb/test/API/lang/cpp/external_ctor_dtor_lookup/main.cpp +++ /dev/null @@ -1,13 +0,0 @@ -#include "lib.h" - -struct Foo {}; - -struct Bar { - Wrapper<Foo> getWrapper() { return Wrapper<Foo>(); } - int sinkWrapper(Wrapper<Foo>) { return -1; } -}; - -int main() { - Bar b; - return b.sinkWrapper(b.getWrapper()); -} _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits