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;
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 lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits