https://github.com/augusto2112 created https://github.com/llvm/llvm-project/pull/113006
Swift types have mangled names, so there should be a way to read those from the compiler type. This patch upstreams these two changes from swiftlang/llvm-project (which were added there since at least 2016). >From 4f49df5639b2ff7b9d23ba9e494521c5b74fbffc Mon Sep 17 00:00:00 2001 From: Augusto Noronha <anoro...@apple.com> Date: Fri, 18 Oct 2024 16:54:23 -0700 Subject: [PATCH] [lldb] Add GetMangledTypeName to TypeSystem/CompilerType Swift types have mangled names, so there should be a way to read those from the compiler type. This patch upstreams these two changes from swiftlang/llvm-project (which were added there since at least 2016). --- lldb/include/lldb/Symbol/CompilerType.h | 2 ++ lldb/include/lldb/Symbol/TypeSystem.h | 4 ++++ lldb/source/Symbol/CompilerType.cpp | 8 ++++++++ lldb/source/Symbol/TypeSystem.cpp | 4 ++++ 4 files changed, 18 insertions(+) diff --git a/lldb/include/lldb/Symbol/CompilerType.h b/lldb/include/lldb/Symbol/CompilerType.h index 70dacdcb7986fc..096a8f1ab68e8b 100644 --- a/lldb/include/lldb/Symbol/CompilerType.h +++ b/lldb/include/lldb/Symbol/CompilerType.h @@ -279,6 +279,8 @@ class CompilerType { ConstString GetDisplayTypeName() const; + ConstString GetMangledTypeName() const; + uint32_t GetTypeInfo(CompilerType *pointee_or_element_compiler_type = nullptr) const; diff --git a/lldb/include/lldb/Symbol/TypeSystem.h b/lldb/include/lldb/Symbol/TypeSystem.h index 7d48f9b316138c..416445a60bd017 100644 --- a/lldb/include/lldb/Symbol/TypeSystem.h +++ b/lldb/include/lldb/Symbol/TypeSystem.h @@ -237,6 +237,10 @@ class TypeSystem : public PluginInterface, virtual ConstString GetDisplayTypeName(lldb::opaque_compiler_type_t type) = 0; + // Defaults to GetTypeName(type). Override if your language desires + // specialized behavior. + virtual ConstString GetMangledTypeName(lldb::opaque_compiler_type_t type); + virtual uint32_t GetTypeInfo(lldb::opaque_compiler_type_t type, CompilerType *pointee_or_element_compiler_type) = 0; diff --git a/lldb/source/Symbol/CompilerType.cpp b/lldb/source/Symbol/CompilerType.cpp index f8da9ef7b7640d..e9e6e3bf2600ce 100644 --- a/lldb/source/Symbol/CompilerType.cpp +++ b/lldb/source/Symbol/CompilerType.cpp @@ -540,6 +540,14 @@ ConstString CompilerType::GetDisplayTypeName() const { return ConstString("<invalid>"); } +ConstString CompilerType::GetMangledTypeName() const { + if (IsValid()) { + if (auto type_system_sp = GetTypeSystem()) + return type_system_sp->GetMangledTypeName(m_type); + } + return ConstString("<invalid>"); +} + uint32_t CompilerType::GetTypeInfo( CompilerType *pointee_or_element_compiler_type) const { if (IsValid()) diff --git a/lldb/source/Symbol/TypeSystem.cpp b/lldb/source/Symbol/TypeSystem.cpp index 931ce1b0203a93..f7d634ffa2dec5 100644 --- a/lldb/source/Symbol/TypeSystem.cpp +++ b/lldb/source/Symbol/TypeSystem.cpp @@ -157,6 +157,10 @@ bool TypeSystem::IsMeaninglessWithoutDynamicResolution(void *type) { return false; } +ConstString TypeSystem::GetMangledTypeName(void *type) { + return GetTypeName(type, false); +} + ConstString TypeSystem::DeclGetMangledName(void *opaque_decl) { return ConstString(); } _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits