[Lldb-commits] [PATCH] D142052: [lldb] Implement SymbolFile::CopyType
Augusto Noronha via Phabricator via lldb-commits
lldb-commits at lists.llvm.org
Fri Jan 20 13:01:43 PST 2023
augusto2112 updated this revision to Diff 490951.
augusto2112 added a comment.
Added check for same symbol file
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D142052/new/
https://reviews.llvm.org/D142052
Files:
lldb/include/lldb/Symbol/SymbolFile.h
lldb/include/lldb/Symbol/SymbolFileOnDemand.h
lldb/include/lldb/Symbol/Type.h
Index: lldb/include/lldb/Symbol/Type.h
===================================================================
--- lldb/include/lldb/Symbol/Type.h
+++ lldb/include/lldb/Symbol/Type.h
@@ -241,6 +241,14 @@
// This makes an invalid type. Used for functions that return a Type when
// they get an error.
Type();
+
+ Type(Type &t) = default;
+
+ Type(Type &&t) = default;
+
+ Type &operator=(const Type &t) = default;
+
+ Type &operator=(Type &&t) = default;
};
// the two classes here are used by the public API as a backend to the SBType
Index: lldb/include/lldb/Symbol/SymbolFileOnDemand.h
===================================================================
--- lldb/include/lldb/Symbol/SymbolFileOnDemand.h
+++ lldb/include/lldb/Symbol/SymbolFileOnDemand.h
@@ -241,6 +241,10 @@
compiler_qual_type, compiler_type_resolve_state, opaque_payload);
}
+ lldb::TypeSP CopyType(const lldb::TypeSP &other_type) override {
+ return m_sym_file_impl->CopyType(other_type);
+ }
+
private:
Log *GetLog() const { return ::lldb_private::GetLog(LLDBLog::OnDemand); }
Index: lldb/include/lldb/Symbol/SymbolFile.h
===================================================================
--- lldb/include/lldb/Symbol/SymbolFile.h
+++ lldb/include/lldb/Symbol/SymbolFile.h
@@ -421,6 +421,8 @@
Type::ResolveState compiler_type_resolve_state,
uint32_t opaque_payload = 0) = 0;
+ virtual lldb::TypeSP CopyType(const lldb::TypeSP &other_type) = 0;
+
protected:
void AssertModuleLock();
@@ -521,6 +523,15 @@
return type_sp;
}
+ lldb::TypeSP CopyType(const lldb::TypeSP &other_type) override {
+ // Make sure the real symbol file matches when copying types.
+ if (GetBackingSymbolFile() != other_type->GetSymbolFile())
+ return lldb::TypeSP();
+ lldb::TypeSP type_sp(new Type(*other_type));
+ m_type_list.Insert(type_sp);
+ return type_sp;
+ }
+
protected:
virtual uint32_t CalculateNumCompileUnits() = 0;
virtual lldb::CompUnitSP ParseCompileUnitAtIndex(uint32_t idx) = 0;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D142052.490951.patch
Type: text/x-patch
Size: 2058 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20230120/ae4e4f63/attachment.bin>
More information about the lldb-commits
mailing list