diff options
author | Nikos Nikoleris <nikos.nikoleris@arm.com> | 2018-11-28 08:16:33 +0000 |
---|---|---|
committer | Nikos Nikoleris <nikos.nikoleris@arm.com> | 2018-12-04 10:02:29 +0000 |
commit | 7f2d7fe4ef622d861e55517279f193cdf8acfc99 (patch) | |
tree | 45c8c30781ac1c9d0e4ff39b9317bd1282bc4764 /src | |
parent | 22ce855108cb8a1ebadbd28448b623c470f86d5c (diff) | |
download | gem5-7f2d7fe4ef622d861e55517279f193cdf8acfc99.tar.xz |
base, sim: Add missing destructors
Derived classes with virtual functions need to define a virtual
destructor or a protected destructor otherwise calling the base class
destructor has undefined behavior. This change adds a virtual
distructor in the base class.
Change-Id: I1c855aa56dff6585ff99b9147bdb4eb9729a0a53
Signed-off-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/14815
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/base/statistics.hh | 2 | ||||
-rw-r--r-- | src/cpu/minor/buffers.hh | 4 | ||||
-rw-r--r-- | src/cpu/testers/traffic_gen/stream_gen.hh | 2 | ||||
-rw-r--r-- | src/mem/qos/q_policy.hh | 2 | ||||
-rw-r--r-- | src/sim/faults.hh | 2 |
5 files changed, 10 insertions, 2 deletions
diff --git a/src/base/statistics.hh b/src/base/statistics.hh index 404bdf15a..8a5420f05 100644 --- a/src/base/statistics.hh +++ b/src/base/statistics.hh @@ -2090,6 +2090,8 @@ class Node * */ virtual std::string str() const = 0; + + virtual ~Node() {}; }; /** Shared pointer to a function Node. */ diff --git a/src/cpu/minor/buffers.hh b/src/cpu/minor/buffers.hh index edf87dec5..a32e37493 100644 --- a/src/cpu/minor/buffers.hh +++ b/src/cpu/minor/buffers.hh @@ -381,6 +381,8 @@ class Reservable /** Free a reserved slot */ virtual void freeReservation() = 0; + + virtual ~Reservable() {}; }; /** Wrapper for a queue type to act as a pipeline stage input queue. @@ -418,8 +420,6 @@ class Queue : public Named, public Reservable dataName(data_name) { } - virtual ~Queue() { } - public: /** Push an element into the buffer if it isn't a bubble. Bubbles are * just discarded. It is assummed that any push into a queue with diff --git a/src/cpu/testers/traffic_gen/stream_gen.hh b/src/cpu/testers/traffic_gen/stream_gen.hh index df9d7b75e..b579f1b1d 100644 --- a/src/cpu/testers/traffic_gen/stream_gen.hh +++ b/src/cpu/testers/traffic_gen/stream_gen.hh @@ -63,6 +63,8 @@ class StreamGen } public: + virtual ~StreamGen() {}; + virtual uint32_t pickStreamID() = 0; virtual uint32_t pickSubStreamID() = 0; diff --git a/src/mem/qos/q_policy.hh b/src/mem/qos/q_policy.hh index 3e455e89c..ba36b43b7 100644 --- a/src/mem/qos/q_policy.hh +++ b/src/mem/qos/q_policy.hh @@ -99,6 +99,8 @@ class QueuePolicy */ void setMemCtrl(MemCtrl* mem) { memCtrl = mem; }; + virtual ~QueuePolicy() {}; + protected: QueuePolicy(const QoSMemCtrlParams* p) : memCtrl(nullptr) diff --git a/src/sim/faults.hh b/src/sim/faults.hh index be7aab582..747597152 100644 --- a/src/sim/faults.hh +++ b/src/sim/faults.hh @@ -47,6 +47,8 @@ class FaultBase virtual FaultName name() const = 0; virtual void invoke(ThreadContext * tc, const StaticInstPtr &inst = StaticInst::nullStaticInstPtr); + + virtual ~FaultBase() {}; }; class UnimpFault : public FaultBase |