Hi All,
In the process of adding full system support to Ruby I came across an
issue with an error message from the new python SLICC ast files. In
particular, the MemberExprAST didn't not generate the correct error
message. Instead I encountered the following python stack. The fix
seems fairly easy (see patch below as well), but before I check this in,
I wonder if the other usages of the error() should also call the
self.error(). There appears to be many AST files that fall in this
category.
Brad
=== Patch ===
diff -r d72798476e5f -r de11533c371c src/mem/slicc/ast/MemberExprAST.py
--- a/src/mem/slicc/ast/MemberExprAST.py Sun Oct 25 17:48:45 2009
-0700
+++ b/src/mem/slicc/ast/MemberExprAST.py Sun Oct 25 17:57:03 2009
-0700
@@ -47,9 +47,9 @@
# Verify that this is a valid field name for this type
if self.field not in return_type.data_members:
- error("Invalid object field: " +
- "Type '%s' does not have data member %s" % \
- (return_type, self.field))
+ self.error("Invalid object field: " +
+ "Type '%s' does not have data member %s" % \
+ (return_type, self.field))
# Return the type of the field
return return_type.data_members[self.field].type
=== Python Stack ===
g++ -o /tmp/bbeckman/m5/build/ALPHA_FS_MI_example/mem/physical.do -c
-Wno-deprecated -pipe -fno-strict-aliasing -Wall -Wno-sign-compare
-Wundef -gg
db3 -Werror -DDEBUG -DTRACING_ON=1 -I/tmp/bbeckman/m5/build/gzstream
-I/tmp/bbeckman/m5/build/libelf -Iext
-I/tool/pandora64/.package/python-2.5.4-
a/include/python2.5 -I/tmp/bbeckman/m5/build/ALPHA_FS_MI_example
/tmp/bbeckman/m5/build/ALPHA_FS_MI_example/mem/physical.cc
makeDefinesPyFile(["/tmp/bbeckman/m5/build/ALPHA_FS_MI_example/python/m5
/defines.py"], ["[('NO_VECTOR_BOUNDS_CHECKS', True), ('RUBY_DEBUG',
True),
('GEMS_ROOT', '/proj/radl_extra/users/bbeckman/new-m5/src/mem'),
('RUBY_TSO_CHECKER', False), ('FULL_SYSTEM', True), ('USE_FENV', True),
('USE_MYSQ
L', False), ('NO_FAST_ALLOC', True), ('FAST_ALLOC_DEBUG', False),
('FAST_ALLOC_STATS', False), ('SS_COMPATIBLE_FP', False),
('USE_CHECKER', False),
('TARGET_ISA', 'alpha'), ('CP_ANNOTATE', False)]", "'b1561bcc9ba6+
6704+ default qtip tip brad/ruby_fs_support2'"])
scons: ***
[/tmp/bbeckman/m5/build/ALPHA_FS_MI_example/mem/protocol/AccessModeType.
hh] Exception
Traceback (most recent call last):
File
"/tool/pandora64/.package/scons-0.98.1/lib/scons-0.98.1/SCons/Taskmaster
.py", line 222, in execute
self.targets[0].build()
File
"/tool/pandora64/.package/scons-0.98.1/lib/scons-0.98.1/SCons/Node/__ini
t__.py", line 372, in build
apply(self.get_executor(), (self,), kw)
File
"/tool/pandora64/.package/scons-0.98.1/lib/scons-0.98.1/SCons/Executor.p
y", line 145, in __call__
return self.do_execute(target, kw)
File
"/tool/pandora64/.package/scons-0.98.1/lib/scons-0.98.1/SCons/Executor.p
y", line 131, in do_execute
status = apply(act, (self.targets, self.get_sources(), env), kw)
File
"/tool/pandora64/.package/scons-0.98.1/lib/scons-0.98.1/SCons/Action.py"
, line 465, in __call__
stat = self.execute(target, source, env)
File
"/tool/pandora64/.package/scons-0.98.1/lib/scons-0.98.1/SCons/Action.py"
, line 837, in execute
result = self.execfunction(target=target, source=rsources, env=env)
File
"/tmp/bbeckman/m5/build/ALPHA_FS_MI_example/mem/protocol/SConscript",
line 98, in slicc_action
slicc.generate()
File "/proj/radl_extra/users/bbeckman/new-m5/src/mem/slicc/parser.py",
line 106, in generate
decl_list.generate()
File
"/proj/radl_extra/users/bbeckman/new-m5/src/mem/slicc/ast/DeclListAST.py
", line 47, in generate
decl.generate()
File
"/proj/radl_extra/users/bbeckman/new-m5/src/mem/slicc/ast/MachineAST.py"
, line 65, in generate
self.decls.generate()
File
"/proj/radl_extra/users/bbeckman/new-m5/src/mem/slicc/ast/DeclListAST.py
", line 47, in generate
decl.generate()
File
"/proj/radl_extra/users/bbeckman/new-m5/src/mem/slicc/ast/ActionDeclAST.
py", line 59, in generate
self.statement_list.generate(code, None)
File
"/proj/radl_extra/users/bbeckman/new-m5/src/mem/slicc/ast/StatementListA
ST.py", line 42, in generate
statement.generate(code, return_type)
File
"/proj/radl_extra/users/bbeckman/new-m5/src/mem/slicc/ast/PeekStatementA
ST.py", line 68, in generate
self.statements.generate(code, return_type)
File
"/proj/radl_extra/users/bbeckman/new-m5/src/mem/slicc/ast/StatementListA
ST.py", line 42, in generate
statement.generate(code, return_type)
File
"/proj/radl_extra/users/bbeckman/new-m5/src/mem/slicc/ast/AssignStatemen
tAST.py", line 46, in generate
rtype = self.rvalue.generate(rcode)
File
"/proj/radl_extra/users/bbeckman/new-m5/src/mem/slicc/ast/MemberExprAST.
py", line 50, in generate
error("Invalid object field: " +
NameError: global name 'error' is not defined
scons: building terminated because of errors.
scons: *** Found dependency cycle(s):
Internal Error: no cycle found for node
/tmp/bbeckman/m5/build/ALPHA_FS_MI_example/python/m5/defines.py.do
(<SCons.Node.FS.File instance at 0x2a9
ae1a560>)
File
"/tool/pandora64/.package/scons-0.98.1/lib/scons-0.98.1/SCons/Taskmaster
.py", line 779, in cleanup
_______________________________________________
m5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/m5-dev