config: Fix broken SimObject listing
authorAndreas Sandberg <andreas.sandberg@arm.com>
Tue, 1 Dec 2015 13:01:05 +0000 (13:01 +0000)
committerAndreas Sandberg <andreas.sandberg@arm.com>
Tue, 1 Dec 2015 13:01:05 +0000 (13:01 +0000)
The gem5 option '--list-sim-objects' is supposed to list all available
SimObjects and their parameters. It currently chokes on SimObjects
with parameters that have an object instance as their default
value. This is caused by __str__ in SimObject trying to resolve its
complete path. When the path resolution method reaches the parent
object (a MetaSimObject since it hasn't been instantiated), it dies
with a Python exception.

This changeset adds a guard to stop path resolution if the parent
object is a MetaSimObject.

src/python/m5/SimObject.py

index 26463f6446dbd22716dbfd54e44d09a14f928af8..bb834fc0b99f6c22c709af493580f8c70bdffdd5 100644 (file)
@@ -1227,6 +1227,9 @@ class SimObject(object):
     def path(self):
         if not self._parent:
             return '<orphan %s>' % self.__class__
+        elif isinstance(self._parent, MetaSimObject):
+            return str(self.__class__)
+
         ppath = self._parent.path()
         if ppath == 'root':
             return self._name