This revision was not accepted when it landed; it landed in state "Needs
Review".
This revision was landed with ongoing or failed builds.
This revision was automatically updated to reflect the committed changes.
Closed by commit rG901ba0fcae36: [lldb] Implement SymbolFile::CopyType
(authored by augusto2112).
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;
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;
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits