Dear gem5 faculties:
I am still learning gem5 and when I try compiling the original code in gem5
Tutorial (
Creating SimObjects in the memory system), there is the compiling error for
this code. I use the original code for SimObjects in the memory system
except I change from "from MemObject import MemObject" to "from
m5.objects.MemObject import MemObject" . Here is the error of compiling:
In file included from
build/X86/learning_gem5/simple_memobj/simple_memobj.cc:31:
build/X86/learning_gem5/simple_memobj/simple_memobj.hh:55:5: error:
expected class-name before '{' token
   55 |     {
      |     ^
build/X86/learning_gem5/simple_memobj/simple_memobj.hh:64:9: error:
'PacketPtr' does not name a type
   64 |         PacketPtr blockedPacket;
      |         ^~~~~~~~~
build/X86/learning_gem5/simple_memobj/simple_memobj.hh:81:25: error:
'PacketPtr' has not been declared
   81 |         void sendPacket(PacketPtr pkt);
      |                         ^~~~~~~~~
build/X86/learning_gem5/simple_memobj/simple_memobj.hh:90:9: error:
'AddrRangeList' does not name a type
   90 |         AddrRangeList getAddrRanges() const override;
      |         ^~~~~~~~~~~~~
build/X86/learning_gem5/simple_memobj/simple_memobj.hh:103:25: error:
'PacketPtr' has not been declared
  103 |         Tick recvAtomic(PacketPtr pkt) override
      |                         ^~~~~~~~~
build/X86/learning_gem5/simple_memobj/simple_memobj.hh:112:29: error:
'PacketPtr' has not been declared
  112 |         void recvFunctional(PacketPtr pkt) override;
      |                             ^~~~~~~~~
build/X86/learning_gem5/simple_memobj/simple_memobj.hh:122:28: error:
'PacketPtr' has not been declared
  122 |         bool recvTimingReq(PacketPtr pkt) override;
      |                            ^~~~~~~~~
build/X86/learning_gem5/simple_memobj/simple_memobj.hh:103:14: error: 'Tick
SimpleMemobj::CPUSidePort::recvAtomic(int)' marked 'override', but does not
override
  103 |         Tick recvAtomic(PacketPtr pkt) override
      |              ^~~~~~~~~~
build/X86/learning_gem5/simple_memobj/simple_memobj.hh:112:14: error: 'void
SimpleMemobj::CPUSidePort::recvFunctional(int)' marked 'override', but does
not override
  112 |         void recvFunctional(PacketPtr pkt) override;
      |              ^~~~~~~~~~~~~~
build/X86/learning_gem5/simple_memobj/simple_memobj.hh:122:14: error: 'bool
SimpleMemobj::CPUSidePort::recvTimingReq(int)' marked 'override', but does
not override
  122 |         bool recvTimingReq(PacketPtr pkt) override;
      |              ^~~~~~~~~~~~~
build/X86/learning_gem5/simple_memobj/simple_memobj.hh:129:14: error: 'void
SimpleMemobj::CPUSidePort::recvRespRetry()' marked 'override', but does not
override
  129 |         void recvRespRetry() override;
      |              ^~~~~~~~~~~~~
build/X86/learning_gem5/simple_memobj/simple_memobj.hh:137:5: error:
expected class-name before '{' token
  137 |     {
      |     ^
build/X86/learning_gem5/simple_memobj/simple_memobj.hh:143:9: error:
'PacketPtr' does not name a type
  143 |         PacketPtr blockedPacket;
      |         ^~~~~~~~~
build/X86/learning_gem5/simple_memobj/simple_memobj.hh:159:25: error:
'PacketPtr' has not been declared
  159 |         void sendPacket(PacketPtr pkt);
      |                         ^~~~~~~~~
build/X86/learning_gem5/simple_memobj/simple_memobj.hh:165:29: error:
'PacketPtr' has not been declared
  165 |         bool recvTimingResp(PacketPtr pkt) override;
      |                             ^~~~~~~~~
build/X86/learning_gem5/simple_memobj/simple_memobj.hh:165:14: error: 'bool
SimpleMemobj::MemSidePort::recvTimingResp(int)' marked 'override', but does
not override
  165 |         bool recvTimingResp(PacketPtr pkt) override;
      |              ^~~~~~~~~~~~~~
build/X86/learning_gem5/simple_memobj/simple_memobj.hh:172:14: error: 'void
SimpleMemobj::MemSidePort::recvReqRetry()' marked 'override', but does not
override
  172 |         void recvReqRetry() override;
      |              ^~~~~~~~~~~~
build/X86/learning_gem5/simple_memobj/simple_memobj.hh:181:14: error: 'void
SimpleMemobj::MemSidePort::recvRangeChange()' marked 'override', but does
not override
  181 |         void recvRangeChange() override;
      |              ^~~~~~~~~~~~~~~
build/X86/learning_gem5/simple_memobj/simple_memobj.hh:191:24: error:
'PacketPtr' has not been declared
  191 |     bool handleRequest(PacketPtr pkt);
      |                        ^~~~~~~~~
build/X86/learning_gem5/simple_memobj/simple_memobj.hh:200:25: error:
'PacketPtr' has not been declared
  200 |     bool handleResponse(PacketPtr pkt);
      |                         ^~~~~~~~~
build/X86/learning_gem5/simple_memobj/simple_memobj.hh:208:27: error:
'PacketPtr' has not been declared
  208 |     void handleFunctional(PacketPtr pkt);
      |                           ^~~~~~~~~
build/X86/learning_gem5/simple_memobj/simple_memobj.hh:216:5: error:
'AddrRangeList' does not name a type
  216 |     AddrRangeList getAddrRanges() const;
      |     ^~~~~~~~~~~~~
build/X86/learning_gem5/simple_memobj/simple_memobj.hh:249:5: error:
'BaseMasterPort' does not name a type
  249 |     BaseMasterPort& getMasterPort(const std::string& if_name,
      |     ^~~~~~~~~~~~~~
build/X86/learning_gem5/simple_memobj/simple_memobj.hh:262:5: error:
'BaseSlavePort' does not name a type
  262 |     BaseSlavePort& getSlavePort(const std::string& if_name,
      |     ^~~~~~~~~~~~~
build/X86/learning_gem5/simple_memobj/simple_memobj.hh: In constructor
'SimpleMemobj::CPUSidePort::CPUSidePort(const string&, SimpleMemobj*)':
build/X86/learning_gem5/simple_memobj/simple_memobj.hh:71:13: error: class
'SimpleMemobj::CPUSidePort' does not have any field named 'SlavePort'
   71 |             SlavePort(name, owner), owner(owner), needRetry(false),
      |             ^~~~~~~~~
build/X86/learning_gem5/simple_memobj/simple_memobj.hh:72:13: error: class
'SimpleMemobj::CPUSidePort' does not have any field named 'blockedPacket'
   72 |             blockedPacket(nullptr)
      |             ^~~~~~~~~~~~~
build/X86/learning_gem5/simple_memobj/simple_memobj.hh: In constructor
'SimpleMemobj::MemSidePort::MemSidePort(const string&, SimpleMemobj*)':
build/X86/learning_gem5/simple_memobj/simple_memobj.hh:150:13: error: class
'SimpleMemobj::MemSidePort' does not have any field named 'MasterPort'
  150 |             MasterPort(name, owner), owner(owner),
blockedPacket(nullptr)
      |             ^~~~~~~~~~
build/X86/learning_gem5/simple_memobj/simple_memobj.hh:150:52: error: class
'SimpleMemobj::MemSidePort' does not have any field named 'blockedPacket'
  150 |             MasterPort(name, owner), owner(owner),
blockedPacket(nullptr)
      |                                                    ^~~~~~~~~~~~~
build/X86/learning_gem5/simple_memobj/simple_memobj.cc: In constructor
'SimpleMemobj::SimpleMemobj(SimpleMemobjParams*)':
build/X86/learning_gem5/simple_memobj/simple_memobj.cc:40:18: error: no
matching function for call to 'MemObject::MemObject(SimpleMemobjParams*&)'
   40 |     blocked(false)
      |                  ^
In file included from
build/X86/learning_gem5/simple_memobj/simple_memobj.hh:36,
                 from
build/X86/learning_gem5/simple_memobj/simple_memobj.cc:31:
build/X86/mem/mem_object.hh:60:9: note: candidate:
'MemObject::MemObject(const MemObjectParams&)'
   60 |         MemObject(const MemObjectParams &params) :
ClockedObject(params)
      |         ^~~~~~~~~
build/X86/mem/mem_object.hh:60:42: note:   no known conversion for argument
1 from 'SimpleMemobjParams*' to 'const MemObjectParams&'
   60 |         MemObject(const MemObjectParams &params) :
ClockedObject(params)
      |                   ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~
build/X86/learning_gem5/simple_memobj/simple_memobj.cc: At global scope:
build/X86/learning_gem5/simple_memobj/simple_memobj.cc:44:1: error:
'BaseMasterPort' does not name a type
   44 | BaseMasterPort&
      | ^~~~~~~~~~~~~~
build/X86/learning_gem5/simple_memobj/simple_memobj.cc:58:1: error:
'BaseSlavePort' does not name a type
   58 | BaseSlavePort&
      | ^~~~~~~~~~~~~
build/X86/learning_gem5/simple_memobj/simple_memobj.cc:75:39: error:
variable or field 'sendPacket' declared void
   75 | SimpleMemobj::CPUSidePort::sendPacket(PacketPtr pkt)
      |                                       ^~~~~~~~~
build/X86/learning_gem5/simple_memobj/simple_memobj.cc:75:1: error: 'class
SimpleMemobj::CPUSidePort' is private within this context
   75 | SimpleMemobj::CPUSidePort::sendPacket(PacketPtr pkt)
      | ^~~~~~~~~~~~
In file included from
build/X86/learning_gem5/simple_memobj/simple_memobj.cc:31:
build/X86/learning_gem5/simple_memobj/simple_memobj.hh:54:11: note:
declared private here
   54 |     class CPUSidePort : public SlavePort
      |           ^~~~~~~~~~~
build/X86/learning_gem5/simple_memobj/simple_memobj.cc:75:39: error:
'PacketPtr' was not declared in this scope
   75 | SimpleMemobj::CPUSidePort::sendPacket(PacketPtr pkt)
      |                                       ^~~~~~~~~
build/X86/learning_gem5/simple_memobj/simple_memobj.cc:87:1: error:
'AddrRangeList' does not name a type
   87 | AddrRangeList
      | ^~~~~~~~~~~~~
build/X86/learning_gem5/simple_memobj/simple_memobj.cc: In member function
'void SimpleMemobj::CPUSidePort::trySendRetry()':
build/X86/learning_gem5/simple_memobj/simple_memobj.cc:96:22: error:
'blockedPacket' was not declared in this scope
   96 |     if (needRetry && blockedPacket == nullptr) {
      |                      ^~~~~~~~~~~~~
build/X86/learning_gem5/simple_memobj/simple_memobj.cc:99:29: error:
expected primary-expression before ',' token
   99 |         DPRINTF(SimpleMemobj, "Sending retry req for %d\n", id);
      |                             ^
build/X86/learning_gem5/simple_memobj/simple_memobj.cc:99:61: error: 'id'
was not declared in this scope; did you mean 'find'?
   99 |         DPRINTF(SimpleMemobj, "Sending retry req for %d\n", id);
      |                                                             ^~
      |                                                             find
build/X86/learning_gem5/simple_memobj/simple_memobj.cc:99:9: error:
'DPRINTF' was not declared in this scope
   99 |         DPRINTF(SimpleMemobj, "Sending retry req for %d\n", id);
      |         ^~~~~~~
build/X86/learning_gem5/simple_memobj/simple_memobj.cc:100:9: error:
'sendRetryReq' was not declared in this scope
  100 |         sendRetryReq();
      |         ^~~~~~~~~~~~
build/X86/learning_gem5/simple_memobj/simple_memobj.cc: At global scope:
build/X86/learning_gem5/simple_memobj/simple_memobj.cc:105:43: error:
variable or field 'recvFunctional' declared void
  105 | SimpleMemobj::CPUSidePort::recvFunctional(PacketPtr pkt)
      |                                           ^~~~~~~~~
build/X86/learning_gem5/simple_memobj/simple_memobj.cc:105:1: error: 'class
SimpleMemobj::CPUSidePort' is private within this context
  105 | SimpleMemobj::CPUSidePort::recvFunctional(PacketPtr pkt)
      | ^~~~~~~~~~~~
In file included from
build/X86/learning_gem5/simple_memobj/simple_memobj.cc:31:
build/X86/learning_gem5/simple_memobj/simple_memobj.hh:54:11: note:
declared private here
   54 |     class CPUSidePort : public SlavePort
      |           ^~~~~~~~~~~
build/X86/learning_gem5/simple_memobj/simple_memobj.cc:105:43: error:
'PacketPtr' was not declared in this scope
  105 | SimpleMemobj::CPUSidePort::recvFunctional(PacketPtr pkt)
      |                                           ^~~~~~~~~
build/X86/learning_gem5/simple_memobj/simple_memobj.cc:112:1: error: 'bool
SimpleMemobj::CPUSidePort::recvTimingReq' is not a static data member of
'class SimpleMemobj::CPUSidePort'
  112 | SimpleMemobj::CPUSidePort::recvTimingReq(PacketPtr pkt)
      | ^~~~~~~~~~~~
build/X86/learning_gem5/simple_memobj/simple_memobj.cc:112:42: error:
'PacketPtr' was not declared in this scope
  112 | SimpleMemobj::CPUSidePort::recvTimingReq(PacketPtr pkt)
      |                                          ^~~~~~~~~
In file included from /usr/include/c++/9/cassert:44,
                 from build/X86/sim/eventq.hh:39,
                 from build/X86/sim/sim_object.hh:55,
                 from build/X86/sim/clock_domain.hh:53,
                 from build/X86/sim/clocked_object.hh:50,
                 from build/X86/mem/mem_object.hh:50,
                 from
build/X86/learning_gem5/simple_memobj/simple_memobj.hh:36,
                 from
build/X86/learning_gem5/simple_memobj/simple_memobj.cc:31:
build/X86/learning_gem5/simple_memobj/simple_memobj.cc: In member function
'void SimpleMemobj::CPUSidePort::recvRespRetry()':
build/X86/learning_gem5/simple_memobj/simple_memobj.cc:127:12: error:
'blockedPacket' was not declared in this scope
  127 |     assert(blockedPacket != nullptr);
      |            ^~~~~~~~~~~~~
build/X86/learning_gem5/simple_memobj/simple_memobj.cc:130:5: error:
'PacketPtr' was not declared in this scope
  130 |     PacketPtr pkt = blockedPacket;
      |     ^~~~~~~~~
build/X86/learning_gem5/simple_memobj/simple_memobj.cc:134:16: error: 'pkt'
was not declared in this scope
  134 |     sendPacket(pkt);
      |                ^~~
build/X86/learning_gem5/simple_memobj/simple_memobj.cc: At global scope:
build/X86/learning_gem5/simple_memobj/simple_memobj.cc:138:39: error:
variable or field 'sendPacket' declared void
  138 | SimpleMemobj::MemSidePort::sendPacket(PacketPtr pkt)
      |                                       ^~~~~~~~~
build/X86/learning_gem5/simple_memobj/simple_memobj.cc:138:1: error: 'class
SimpleMemobj::MemSidePort' is private within this context
  138 | SimpleMemobj::MemSidePort::sendPacket(PacketPtr pkt)
      | ^~~~~~~~~~~~
In file included from
build/X86/learning_gem5/simple_memobj/simple_memobj.cc:31:
build/X86/learning_gem5/simple_memobj/simple_memobj.hh:136:11: note:
declared private here
  136 |     class MemSidePort : public MasterPort
      |           ^~~~~~~~~~~
build/X86/learning_gem5/simple_memobj/simple_memobj.cc:138:39: error:
'PacketPtr' was not declared in this scope
  138 | SimpleMemobj::MemSidePort::sendPacket(PacketPtr pkt)
      |                                       ^~~~~~~~~
build/X86/learning_gem5/simple_memobj/simple_memobj.cc:151:1: error: 'bool
SimpleMemobj::MemSidePort::recvTimingResp' is not a static data member of
'class SimpleMemobj::MemSidePort'
  151 | SimpleMemobj::MemSidePort::recvTimingResp(PacketPtr pkt)
      | ^~~~~~~~~~~~
build/X86/learning_gem5/simple_memobj/simple_memobj.cc:151:43: error:
'PacketPtr' was not declared in this scope
  151 | SimpleMemobj::MemSidePort::recvTimingResp(PacketPtr pkt)
      |                                           ^~~~~~~~~
In file included from /usr/include/c++/9/cassert:44,
                 from build/X86/sim/eventq.hh:39,
                 from build/X86/sim/sim_object.hh:55,
                 from build/X86/sim/clock_domain.hh:53,
                 from build/X86/sim/clocked_object.hh:50,
                 from build/X86/mem/mem_object.hh:50,
                 from
build/X86/learning_gem5/simple_memobj/simple_memobj.hh:36,
                 from
build/X86/learning_gem5/simple_memobj/simple_memobj.cc:31:
build/X86/learning_gem5/simple_memobj/simple_memobj.cc: In member function
'void SimpleMemobj::MemSidePort::recvReqRetry()':
build/X86/learning_gem5/simple_memobj/simple_memobj.cc:161:12: error:
'blockedPacket' was not declared in this scope
  161 |     assert(blockedPacket != nullptr);
      |            ^~~~~~~~~~~~~
build/X86/learning_gem5/simple_memobj/simple_memobj.cc:164:5: error:
'PacketPtr' was not declared in this scope
  164 |     PacketPtr pkt = blockedPacket;
      |     ^~~~~~~~~
build/X86/learning_gem5/simple_memobj/simple_memobj.cc:168:16: error: 'pkt'
was not declared in this scope
  168 |     sendPacket(pkt);
      |                ^~~
build/X86/learning_gem5/simple_memobj/simple_memobj.cc: At global scope:
build/X86/learning_gem5/simple_memobj/simple_memobj.cc:178:1: error: 'bool
SimpleMemobj::handleRequest' is not a static data member of 'class
SimpleMemobj'
  178 | SimpleMemobj::handleRequest(PacketPtr pkt)
      | ^~~~~~~~~~~~
build/X86/learning_gem5/simple_memobj/simple_memobj.cc:178:29: error:
'PacketPtr' was not declared in this scope
  178 | SimpleMemobj::handleRequest(PacketPtr pkt)
      |                             ^~~~~~~~~
build/X86/learning_gem5/simple_memobj/simple_memobj.cc:197:1: error: 'bool
SimpleMemobj::handleResponse' is not a static data member of 'class
SimpleMemobj'
  197 | SimpleMemobj::handleResponse(PacketPtr pkt)
      | ^~~~~~~~~~~~
build/X86/learning_gem5/simple_memobj/simple_memobj.cc:197:30: error:
'PacketPtr' was not declared in this scope
  197 | SimpleMemobj::handleResponse(PacketPtr pkt)
      |                              ^~~~~~~~~
build/X86/learning_gem5/simple_memobj/simple_memobj.cc:224:32: error:
variable or field 'handleFunctional' declared void
  224 | SimpleMemobj::handleFunctional(PacketPtr pkt)
      |                                ^~~~~~~~~
build/X86/learning_gem5/simple_memobj/simple_memobj.cc:224:32: error:
'PacketPtr' was not declared in this scope
build/X86/learning_gem5/simple_memobj/simple_memobj.cc:230:1: error:
'AddrRangeList' does not name a type
  230 | AddrRangeList
      | ^~~~~~~~~~~~~
build/X86/learning_gem5/simple_memobj/simple_memobj.cc: In member function
'void SimpleMemobj::sendRangeChange()':
build/X86/learning_gem5/simple_memobj/simple_memobj.cc:241:14: error:
'class SimpleMemobj::CPUSidePort' has no member named 'sendRangeChange'
  241 |     instPort.sendRangeChange();
      |              ^~~~~~~~~~~~~~~
build/X86/learning_gem5/simple_memobj/simple_memobj.cc:242:14: error:
'class SimpleMemobj::CPUSidePort' has no member named 'sendRangeChange'
  242 |     dataPort.sendRangeChange();
      |              ^~~~~~~~~~~~~~~
build/X86/learning_gem5/simple_memobj/simple_memobj.cc: At global scope:
build/X86/learning_gem5/simple_memobj/simple_memobj.cc:248:1: error: no
declaration matches 'SimpleMemobj* SimpleMemobjParams::create()'
  248 | SimpleMemobjParams::create()
      | ^~~~~~~~~~~~~~~~~~
In file included from
build/X86/learning_gem5/simple_memobj/simple_memobj.hh:37,
                 from
build/X86/learning_gem5/simple_memobj/simple_memobj.cc:31:
build/X86/params/SimpleMemobj.hh:11:20: note: candidate is: 'SimpleMemobj*
SimpleMemobjParams::create() const'
   11 |     SimpleMemobj * create() const;
      |                    ^~~~~~
build/X86/params/SimpleMemobj.hh:8:8: note: 'struct SimpleMemobjParams'
defined here
    8 | struct SimpleMemobjParams
      |        ^~~~~~~~~~~~~~~~~~
scons: *** [build/X86/learning_gem5/simple_memobj/simple_memobj.o] Error 1
scons: building terminated because of errors.

All files except the config file including SConscript are all in the same
directory.

liqi@LQSs-MacBook-Pro ~/D/g/s/l/simple_memobj (stable)> ls
SConscript       SimpleMemobj.py  simple_memobj.cc simple_memobj.hh

I want to figure out how to make compilation successful.
_______________________________________________
gem5-users mailing list -- [email protected]
To unsubscribe send an email to [email protected]
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

Reply via email to