[trace] Fix destructor declaration
authorWalter Erquinigo <wallace@fb.com>
Tue, 29 Sep 2020 20:08:22 +0000 (13:08 -0700)
committerWalter Erquinigo <wallace@fb.com>
Tue, 29 Sep 2020 20:09:52 +0000 (13:09 -0700)
The destructor must be defined in the implementation class so that it
can be called, as Vedant Kumar pointed out in:

'''
What were your thoughts, re:

+class Trace : public PluginInterface {
+public:
+  ~Trace() override = default;

   Does this need to be `virtual ~Trace() = ...`?

      Otherwise, when a std::shared_ptr<Trace> is destroyed, the
      destructor for the derived TraceIntelPT instance won't run.
'''

lldb/include/lldb/Target/Trace.h
lldb/source/Plugins/Trace/intel-pt/TraceIntelPT.h

index e4e9b1a..0aa2da7 100644 (file)
@@ -35,8 +35,6 @@ namespace lldb_private {
 /// this information.
 class Trace : public PluginInterface {
 public:
-  ~Trace() override = default;
-
   /// Dump the trace data that this plug-in has access to.
   ///
   /// This function will dump all of the trace data for all threads in a user
index edc781e..d221caf 100644 (file)
@@ -20,6 +20,8 @@ class TraceIntelPT : public lldb_private::Trace {
 public:
   void Dump(lldb_private::Stream *s) const override;
 
+  ~TraceIntelPT() override = default;
+
   /// PluginInterface protocol
   /// \{
   lldb_private::ConstString GetPluginName() override;