python: Don't try to bind a stat group to the NULL simobject.
authorGabe Black <gabeblack@google.com>
Thu, 19 Sep 2019 03:27:13 +0000 (20:27 -0700)
committerGabe Black <gabeblack@google.com>
Thu, 19 Sep 2019 18:31:43 +0000 (18:31 +0000)
That is a SimObject like object which is used when a SimObject
parameter is purposefully left empty, vs. being accidentally left
empty through a typo or accidental ommission.

It doesn't have a getCCObject method, and attempting to use it anyway
causes gem5 to crash.

Change-Id: Ie86321fbdbcc41cf88b7009184423acd7b64484b
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/21059
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Anthony Gutierrez <anthony.gutierrez@amd.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>
src/python/m5/stats/__init__.py

index 4b118ea13e7c9726f484eab763ae6d37d056f355..ab11a9d61d42b5f5f187e15573132cca3f21f8da 100644 (file)
@@ -47,6 +47,7 @@ import m5
 
 import _m5.stats
 from m5.objects import Root
+from m5.params import isNullPointer
 from m5.util import attrdict, fatal
 
 # Stat exports
@@ -253,6 +254,8 @@ def _visit_stats(visitor, root=None):
 
 def _bindStatHierarchy(root):
     def _bind_obj(name, obj):
+        if isNullPointer(obj):
+            return
         if m5.SimObject.isSimObjectVector(obj):
             for idx, obj in enumerate(obj):
                 _bind_obj("{}{}".format(name, idx), obj)