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 ¶ms) :
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 ¶ms) :
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