misc: Fix a number of unitialised variables and members
authorAndreas Hansson <andreas.hansson@arm.com>
Tue, 9 Sep 2014 08:36:31 +0000 (04:36 -0400)
committerAndreas Hansson <andreas.hansson@arm.com>
Tue, 9 Sep 2014 08:36:31 +0000 (04:36 -0400)
Static analysis unearther a bunch of uninitialised variables and
members, and this patch addresses the problem. In all cases these
omissions seem benign in the end, but at least fixing them means less
false positives next time round.

20 files changed:
src/base/cprintf_formats.hh
src/base/debug.hh
src/base/loader/elf_object.cc
src/base/pollevent.cc
src/base/statistics.hh
src/base/vnc/vncserver.cc
src/cpu/testers/networktest/networktest.cc
src/cpu/testers/traffic_gen/generators.hh
src/cpu/testers/traffic_gen/traffic_gen.cc
src/mem/cache/base.cc
src/mem/cache/prefetch/base.cc
src/mem/cache/prefetch/base.hh
src/mem/cache/tags/base.cc
src/mem/cache/tags/base_set_assoc.cc
src/mem/cache/tags/fa_lru.cc
src/mem/packet.hh
src/mem/request.hh
src/sim/dvfs_handler.hh
src/sim/eventq.hh
src/sim/system.cc

index 6bf6b2b66ae07933ef1e39637c5f38d77ec3ce86..991238deec7b78154c51d8cf9be7aab8c3bcda27 100644 (file)
@@ -65,6 +65,7 @@ struct Format
         uppercase = false;
         base = dec;
         format = none;
+        float_format = best;
         precision = -1;
         width = 0;
         get_precision = false;
index 1cd64cfc28782463b8ef4910ae124b603a095c67..20bf8e76dc1d02b1ba2c201f0749f000b1934af6 100644 (file)
@@ -66,7 +66,7 @@ class SimpleFlag : public Flag
 
   public:
     SimpleFlag(const char *name, const char *desc)
-        : Flag(name, desc)
+        : Flag(name, desc), _status(false)
     { }
 
     bool status() const { return _status; }
index 9445f1df9cd3f790e00ddbd14ee2fabf616943c0..4abf0a4324139359257f21bb3f765bea7b9eb048 100644 (file)
@@ -239,7 +239,8 @@ ElfObject::tryFile(const string &fname, int fd, size_t len, uint8_t *data)
 ElfObject::ElfObject(const string &_filename, int _fd,
                      size_t _len, uint8_t *_data,
                      Arch _arch, OpSys _opSys)
-    : ObjectFile(_filename, _fd, _len, _data, _arch, _opSys)
+    : ObjectFile(_filename, _fd, _len, _data, _arch, _opSys),
+      _programHeaderTable(0), _programHeaderSize(0), _programHeaderCount(0)
 
 {
     Elf *elf;
index 9ed6df4fe5d365754ae959b6073f1bf1e07a3dad..fb28d63d61f380d80951df44a3a8b981c519eb4c 100644 (file)
@@ -57,6 +57,7 @@ PollEvent::PollEvent(int _fd, int _events)
 {
     pfd.fd = _fd;
     pfd.events = _events;
+    pfd.revents = 0;
 }
 
 PollEvent::~PollEvent()
index fbf8ee7698ed26d19afe5208a20604ef3aef1660..8d6644284001b9a70615790be1be90af8912dfb4 100644 (file)
@@ -1092,7 +1092,7 @@ class VectorBase : public DataWrapVec<Derived, VectorInfoProxy>
 
   public:
     VectorBase()
-        : storage(NULL)
+        : storage(nullptr), _size(0)
     {}
 
     ~VectorBase()
@@ -1232,7 +1232,7 @@ class Vector2dBase : public DataWrapVec2d<Derived, Vector2dInfoProxy>
 
   public:
     Vector2dBase()
-        : storage(NULL)
+        : x(0), y(0), _size(0), storage(nullptr)
     {}
 
     ~Vector2dBase()
@@ -1505,7 +1505,7 @@ class HistStor
         /** The number of buckets.. */
         size_type buckets;
 
-        Params() : DistParams(Hist) {}
+        Params() : DistParams(Hist), buckets(0) {}
     };
 
   private:
index 9ca575915d1dd91933b7d47d9aca784106d2d004..d1130887573ac755b2370f4e50471ff0ad23d453 100644 (file)
@@ -106,7 +106,8 @@ VncServer::DataEvent::process(int revent)
  */
 VncServer::VncServer(const Params *p)
     : VncInput(p), listenEvent(NULL), dataEvent(NULL), number(p->number),
-      dataFd(-1), sendUpdate(false)
+      dataFd(-1), sendUpdate(false),
+      supportsRawEnc(false), supportsResizeEnc(false)
 {
     if (p->port)
         listen(p->port);
index c2d34489b543b4882b78e0308f2956400b1057da..94dedf648de2b86c79da04381a4f3d929a264072 100644 (file)
@@ -84,6 +84,7 @@ NetworkTest::NetworkTest(const Params *p)
       simCycles(p->sim_cycles),
       fixedPkts(p->fixed_pkts),
       maxPackets(p->max_packets),
+      numPacketsSent(0),
       trafficType(p->traffic_type),
       injRate(p->inj_rate),
       precision(p->precision),
index 498ef8f37bd200f4765dca1bfd40c559246473ca..a3b7e005a145bda1c594dcf6e23ea9aa84d6f25f 100644 (file)
@@ -190,7 +190,7 @@ class LinearGen : public BaseGen
           startAddr(start_addr), endAddr(end_addr),
           blocksize(_blocksize), minPeriod(min_period),
           maxPeriod(max_period), readPercent(read_percent),
-          dataLimit(data_limit)
+          dataLimit(data_limit), nextAddr(startAddr), dataManipulated(0)
     { }
 
     void enter();
@@ -267,7 +267,7 @@ class RandomGen : public BaseGen
           startAddr(start_addr), endAddr(end_addr),
           blocksize(_blocksize), minPeriod(min_period),
           maxPeriod(max_period), readPercent(read_percent),
-          dataLimit(data_limit)
+          dataLimit(data_limit), dataManipulated(0)
     { }
 
     void enter();
@@ -348,7 +348,7 @@ class DramGen : public RandomGen
             unsigned int addr_mapping)
         : RandomGen(_name, master_id, _duration, start_addr, end_addr,
           _blocksize, min_period, max_period, read_percent, data_limit),
-          numSeqPkts(num_seq_pkts), countNumSeqPkts(0),
+          numSeqPkts(num_seq_pkts), countNumSeqPkts(0), addr(0),
           isRead(true), pageSize(page_size),
           pageBits(floorLog2(page_size / _blocksize)),
           bankBits(floorLog2(nbr_of_banks_DRAM)),
index cbff712bc97851d68d5a942b8c3b77df93d5424a..f865a00b18953ded631823b81255abf5f828c6f9 100644 (file)
@@ -59,6 +59,7 @@ TrafficGen::TrafficGen(const TrafficGenParams* p)
       elasticReq(p->elastic_req),
       nextTransitionTick(0),
       nextPacketTick(0),
+      currState(0),
       port(name() + ".port", *this),
       retryPkt(NULL),
       retryPktTick(0),
index 70d1b4167b27d5a9cf13c3dfa1582b18e4c022ed..faa000c09f1ba24b33c47641e7bffa09138eaae3 100644 (file)
@@ -67,6 +67,7 @@ BaseCache::CacheSlavePort::CacheSlavePort(const std::string &_name,
 
 BaseCache::BaseCache(const Params *p)
     : MemObject(p),
+      cpuSidePort(nullptr), memSidePort(nullptr),
       mshrQueue("MSHRs", p->mshrs, 4, MSHRQueue_MSHRs),
       writeBuffer("write buffer", p->write_buffers, p->mshrs+1000,
                   MSHRQueue_WriteBuffer),
@@ -77,6 +78,7 @@ BaseCache::BaseCache(const Params *p)
       forwardSnoops(p->forward_snoops),
       isTopLevel(p->is_top_level),
       blocked(0),
+      order(0),
       noTargetMSHR(NULL),
       missCount(p->max_miss_count),
       addrRanges(p->addr_ranges.begin(), p->addr_ranges.end()),
index 57c1424bf7e466ef72fb55755a8512d10e1137a1..971ecf5b0d888395afb3ff0aedc3b6a3d4f923ee 100644 (file)
@@ -57,7 +57,8 @@
 #include "sim/system.hh"
 
 BasePrefetcher::BasePrefetcher(const Params *p)
-    : ClockedObject(p), size(p->size), latency(p->latency), degree(p->degree),
+    : ClockedObject(p), size(p->size), cache(nullptr), blkSize(0),
+      latency(p->latency), degree(p->degree),
       useMasterId(p->use_master_id), pageStop(!p->cross_pages),
       serialSquash(p->serial_squash), onlyData(p->data_accesses_only),
       onMissOnly(p->on_miss_only), onReadOnly(p->on_read_only),
@@ -69,6 +70,7 @@ BasePrefetcher::BasePrefetcher(const Params *p)
 void
 BasePrefetcher::setCache(BaseCache *_cache)
 {
+    assert(!cache);
     cache = _cache;
     blkSize = cache->getBlockSize();
 }
index fc0dd0b36c855c83a5e6ebda056b5781c1d334c9..22a4c68f68d2c11f2d763f1805ebee93dc74a165 100644 (file)
@@ -83,7 +83,7 @@ class BasePrefetcher : public ClockedObject
     BaseCache* cache;
 
     /** The block size of the parent cache. */
-    int blkSize;
+    unsigned blkSize;
 
     /** The latency before a prefetch is issued */
     const Cycles latency;
index 446c1ea49a6b5af33f1c2dca60d8d4dd15d0ac62..2ec1379b00a0e7ec01d8c73ff8c94ad9bc1fff65 100644 (file)
@@ -56,13 +56,15 @@ using namespace std;
 
 BaseTags::BaseTags(const Params *p)
     : ClockedObject(p), blkSize(p->block_size), size(p->size),
-      hitLatency(p->hit_latency)
+      hitLatency(p->hit_latency), cache(nullptr), warmupBound(0),
+      warmedUp(false), numBlocks(0)
 {
 }
 
 void
 BaseTags::setCache(BaseCache *_cache)
 {
+    assert(!cache);
     cache = _cache;
 }
 
index 637edd5570f0fc91bf8fbe42fbe7cf5eee1fd743..0d955255a94eafe8a6a617c85055cad6ad491ce6 100644 (file)
@@ -76,7 +76,6 @@ BaseSetAssoc::BaseSetAssoc(const Params *p)
     setShift = floorLog2(blkSize);
     setMask = numSets - 1;
     tagShift = setShift + floorLog2(numSets);
-    warmedUp = false;
     /** @todo Make warmup percentage a parameter. */
     warmupBound = numSets * assoc;
 
index 6526aadb803a669d2fc37c8427889db3d0ab3a35..6a63da673c78666fbf45328dea906d7688a13ff0 100644 (file)
@@ -55,7 +55,7 @@
 using namespace std;
 
 FALRU::FALRU(const Params *p)
-    : BaseTags(p)
+    : BaseTags(p), cacheBoundaries(nullptr)
 {
     if (!isPowerOf2(blkSize))
         fatal("cache block size (in bytes) `%d' must be a power of two",
@@ -74,7 +74,6 @@ FALRU::FALRU(const Params *p)
         cacheMask = 0;
     }
 
-    warmedUp = false;
     warmupBound = size/blkSize;
     numBlocks = size/blkSize;
 
index 155a7ff82cc82ba252d2ca8b7089a041975b64bc..c070eaea776fb57a797d02eec4f5d6bd3ee8b185 100644 (file)
@@ -601,7 +601,7 @@ class Packet : public Printable
      * not be valid. The command must be supplied.
      */
     Packet(Request *_req, MemCmd _cmd)
-        :  cmd(_cmd), req(_req), data(NULL),
+        :  cmd(_cmd), req(_req), data(nullptr), addr(0), _isSecure(false),
            src(InvalidPortID), dest(InvalidPortID),
            bytesValidStart(0), bytesValidEnd(0),
            busFirstWordDelay(0), busLastWordDelay(0),
@@ -624,7 +624,7 @@ class Packet : public Printable
      * req.  this allows for overriding the size/addr of the req.
      */
     Packet(Request *_req, MemCmd _cmd, int _blkSize)
-        :  cmd(_cmd), req(_req), data(NULL),
+        :  cmd(_cmd), req(_req), data(nullptr), addr(0), _isSecure(false),
            src(InvalidPortID), dest(InvalidPortID),
            bytesValidStart(0), bytesValidEnd(0),
            busFirstWordDelay(0), busLastWordDelay(0),
index e84a77272a9a8682559009a79a4e91b94eb918b1..a064e0b05099de044543dca36867f56e133b4c51 100644 (file)
@@ -259,8 +259,10 @@ class Request
      *  default constructor.)
      */
     Request()
-        : _taskId(ContextSwitchTaskId::Unknown),
-        translateDelta(0), accessDelta(0), depth(0)
+        : _paddr(0), _size(0), _masterId(invldMasterId), _time(0),
+          _taskId(ContextSwitchTaskId::Unknown), _asid(0), _vaddr(0),
+          _extraData(0), _contextId(0), _threadId(0), _pc(0),
+          translateDelta(0), accessDelta(0), depth(0)
     {}
 
     /**
@@ -269,19 +271,28 @@ class Request
      * These fields are adequate to perform a request. 
      */
     Request(Addr paddr, int size, Flags flags, MasterID mid)
-        : _taskId(ContextSwitchTaskId::Unknown)
+        : _paddr(0), _size(0), _masterId(invldMasterId), _time(0),
+          _taskId(ContextSwitchTaskId::Unknown), _asid(0), _vaddr(0),
+          _extraData(0), _contextId(0), _threadId(0), _pc(0),
+          translateDelta(0), accessDelta(0), depth(0)
     {
         setPhys(paddr, size, flags, mid);
     }
 
     Request(Addr paddr, int size, Flags flags, MasterID mid, Tick time)
-        : _taskId(ContextSwitchTaskId::Unknown)
+        : _paddr(0), _size(0), _masterId(invldMasterId), _time(0),
+          _taskId(ContextSwitchTaskId::Unknown), _asid(0), _vaddr(0),
+          _extraData(0), _contextId(0), _threadId(0), _pc(0),
+          translateDelta(0), accessDelta(0), depth(0)
     {
         setPhys(paddr, size, flags, mid, time);
     }
 
     Request(Addr paddr, int size, Flags flags, MasterID mid, Tick time, Addr pc)
-        : _taskId(ContextSwitchTaskId::Unknown)
+        : _paddr(0), _size(0), _masterId(invldMasterId), _time(0),
+          _taskId(ContextSwitchTaskId::Unknown), _asid(0), _vaddr(0),
+          _extraData(0), _contextId(0), _threadId(0), _pc(0),
+          translateDelta(0), accessDelta(0), depth(0)
     {
         setPhys(paddr, size, flags, mid, time);
         privateFlags.set(VALID_PC);
@@ -290,7 +301,10 @@ class Request
 
     Request(int asid, Addr vaddr, int size, Flags flags, MasterID mid, Addr pc,
             int cid, ThreadID tid)
-        : _taskId(ContextSwitchTaskId::Unknown)
+        : _paddr(0), _size(0), _masterId(invldMasterId), _time(0),
+          _taskId(ContextSwitchTaskId::Unknown), _asid(0), _vaddr(0),
+          _extraData(0), _contextId(0), _threadId(0), _pc(0),
+          translateDelta(0), accessDelta(0), depth(0)
     {
         setVirt(asid, vaddr, size, flags, mid, pc);
         setThreadContext(cid, tid);
index ba8ed3e8e44467d01a64f3903c14ae2069395ec0..c8d9621335aa0c790fd64a1b72b04a9fa8d4aa3b 100644 (file)
@@ -191,7 +191,8 @@ class DVFSHandler : public SimObject
      * for a future call to change a domain's performance level.
      */
     struct UpdateEvent : public Event {
-        UpdateEvent() : Event(DVFS_Update_Pri) {}
+        UpdateEvent() : Event(DVFS_Update_Pri), domainIDToSet(0),
+                        perfLevelToSet(0) {}
 
         /**
          * Static pointer to the single DVFS hander for all the update events
index eaefdb2e2947e0df8b6706b0822ede4bdc77b6e1..e238785f67c527a7437e9f8c14e9c4f45a6fe1df 100644 (file)
@@ -287,7 +287,7 @@ class Event : public EventBase, public Serializable
      * @param queue that the event gets scheduled on
      */
     Event(Priority p = Default_Pri, Flags f = 0)
-        : nextBin(NULL), nextInBin(NULL), _priority(p),
+        : nextBin(nullptr), nextInBin(nullptr), _when(0), _priority(p),
           flags(Initialized | f)
     {
         assert(f.noneSet(~PublicWrite));
index ffab19c990f63609a289a8cfd91b7fba2903e214..cabb358b33906f907655760a97e92d2a43ccbe0f 100644 (file)
@@ -78,6 +78,8 @@ System::System(Params *p)
       pagePtr(0),
       init_param(p->init_param),
       physProxy(_systemPort, p->cache_line_size),
+      kernelSymtab(nullptr),
+      kernel(nullptr),
       loadAddrMask(p->load_addr_mask),
       loadAddrOffset(p->load_offset),
       nextPID(0),
@@ -118,8 +120,6 @@ System::System(Params *p)
         if (params()->kernel == "") {
             inform("No kernel set for full system simulation. "
                    "Assuming you know what you're doing\n");
-
-            kernel = NULL;
         } else {
             // Get the kernel code
             kernel = createObjectFile(params()->kernel);