[Lldb-commits] [lldb] a3252d1 - [lldb][NFC] Move various constructor definitions from .h to .cpp
River Riddle via lldb-commits
lldb-commits at lists.llvm.org
Thu Mar 30 13:26:50 PDT 2023
Author: River Riddle
Date: 2023-03-30T13:25:30-07:00
New Revision: a3252d1a2c568792974a4bc7413b0c61a43053e9
URL: https://github.com/llvm/llvm-project/commit/a3252d1a2c568792974a4bc7413b0c61a43053e9
DIFF: https://github.com/llvm/llvm-project/commit/a3252d1a2c568792974a4bc7413b0c61a43053e9.diff
LOG: [lldb][NFC] Move various constructor definitions from .h to .cpp
I ran into issues with linking downstream language plugin to liblldb in
debug builds, hitting link time errors of form:
```
undefined reference to `vtable for lldb_private::<Insert LLDB class here>'
```
Anchoring the vtable to the .cpp files resolved those issues.
Differential Revision: https://reviews.llvm.org/D147252
Added:
Modified:
lldb/include/lldb/Expression/ExpressionVariable.h
lldb/include/lldb/Expression/Materializer.h
lldb/include/lldb/Symbol/TypeSystem.h
lldb/source/Expression/ExpressionVariable.cpp
lldb/source/Expression/Materializer.cpp
lldb/source/Symbol/TypeSystem.cpp
Removed:
################################################################################
diff --git a/lldb/include/lldb/Expression/ExpressionVariable.h b/lldb/include/lldb/Expression/ExpressionVariable.h
index 27343530780a1..ec18acb94417c 100644
--- a/lldb/include/lldb/Expression/ExpressionVariable.h
+++ b/lldb/include/lldb/Expression/ExpressionVariable.h
@@ -29,8 +29,7 @@ class ExpressionVariable
LLVMCastKind getKind() const { return m_kind; }
- ExpressionVariable(LLVMCastKind kind) : m_flags(0), m_kind(kind) {}
-
+ ExpressionVariable(LLVMCastKind kind);
virtual ~ExpressionVariable();
std::optional<uint64_t> GetByteSize() { return m_frozen_sp->GetByteSize(); }
@@ -208,8 +207,7 @@ class PersistentExpressionState : public ExpressionVariableList {
LLVMCastKind getKind() const { return m_kind; }
- PersistentExpressionState(LLVMCastKind kind) : m_kind(kind) {}
-
+ PersistentExpressionState(LLVMCastKind kind);
virtual ~PersistentExpressionState();
virtual lldb::ExpressionVariableSP
diff --git a/lldb/include/lldb/Expression/Materializer.h b/lldb/include/lldb/Expression/Materializer.h
index aae94f86a71e6..8f850c3f46439 100644
--- a/lldb/include/lldb/Expression/Materializer.h
+++ b/lldb/include/lldb/Expression/Materializer.h
@@ -69,6 +69,7 @@ class Materializer {
class PersistentVariableDelegate {
public:
+ PersistentVariableDelegate();
virtual ~PersistentVariableDelegate();
virtual ConstString GetName() = 0;
virtual void DidDematerialize(lldb::ExpressionVariableSP &variable) = 0;
diff --git a/lldb/include/lldb/Symbol/TypeSystem.h b/lldb/include/lldb/Symbol/TypeSystem.h
index a16f4af2be6d6..dfef87232628b 100644
--- a/lldb/include/lldb/Symbol/TypeSystem.h
+++ b/lldb/include/lldb/Symbol/TypeSystem.h
@@ -77,6 +77,7 @@ class TypeSystem : public PluginInterface,
public std::enable_shared_from_this<TypeSystem> {
public:
// Constructors and Destructors
+ TypeSystem();
~TypeSystem() override;
// LLVM RTTI support
diff --git a/lldb/source/Expression/ExpressionVariable.cpp b/lldb/source/Expression/ExpressionVariable.cpp
index a397a34601d0c..325dd5bc8a2ad 100644
--- a/lldb/source/Expression/ExpressionVariable.cpp
+++ b/lldb/source/Expression/ExpressionVariable.cpp
@@ -15,6 +15,8 @@
using namespace lldb_private;
+ExpressionVariable::ExpressionVariable(LLVMCastKind kind)
+ : m_flags(0), m_kind(kind) {}
ExpressionVariable::~ExpressionVariable() = default;
uint8_t *ExpressionVariable::GetValueBytes() {
@@ -30,6 +32,8 @@ uint8_t *ExpressionVariable::GetValueBytes() {
return nullptr;
}
+PersistentExpressionState::PersistentExpressionState(LLVMCastKind kind)
+ : m_kind(kind) {}
PersistentExpressionState::~PersistentExpressionState() = default;
lldb::addr_t PersistentExpressionState::LookupSymbol(ConstString name) {
diff --git a/lldb/source/Expression/Materializer.cpp b/lldb/source/Expression/Materializer.cpp
index 0932dc6f95b1f..6e344dfd57c4b 100644
--- a/lldb/source/Expression/Materializer.cpp
+++ b/lldb/source/Expression/Materializer.cpp
@@ -1598,5 +1598,7 @@ void Materializer::Dematerializer::Wipe() {
m_process_address = LLDB_INVALID_ADDRESS;
}
+Materializer::PersistentVariableDelegate::PersistentVariableDelegate() =
+ default;
Materializer::PersistentVariableDelegate::~PersistentVariableDelegate() =
default;
diff --git a/lldb/source/Symbol/TypeSystem.cpp b/lldb/source/Symbol/TypeSystem.cpp
index 4eae2c98b12ec..9647102e96c61 100644
--- a/lldb/source/Symbol/TypeSystem.cpp
+++ b/lldb/source/Symbol/TypeSystem.cpp
@@ -36,6 +36,7 @@ size_t LanguageSet::Size() const { return bitvector.count(); }
bool LanguageSet::Empty() const { return bitvector.none(); }
bool LanguageSet::operator[](unsigned i) const { return bitvector[i]; }
+TypeSystem::TypeSystem() = default;
TypeSystem::~TypeSystem() = default;
static TypeSystemSP CreateInstanceHelper(lldb::LanguageType language,
More information about the lldb-commits
mailing list