summary refs log tree commit diff stats
path: root/scripts/tracetool/__init__.py
diff options
context:
space:
mode:
authorLluís Vilanova <vilanova@ac.upc.edu>2014-08-18 15:02:07 +0200
committerStefan Hajnoczi <stefanha@redhat.com>2014-09-26 09:34:38 +0100
commit2321442920ab67a1c196d4a53dd564726370946d (patch)
treeb237b6c9e7a236d176f9b2fdaf8bf8b793c1e83d /scripts/tracetool/__init__.py
parent1ba50f4ea01b26abe9dac95ba531533e17109826 (diff)
downloadfocaccia-qemu-2321442920ab67a1c196d4a53dd564726370946d.tar.gz
focaccia-qemu-2321442920ab67a1c196d4a53dd564726370946d.zip
trace: [ust] Fix format string computation in tcg-enabled events
TCG-enabled events start with two format strings. Delay per-argument format
computation until requested ('Event.formats').

Signed-off-by: Lluís Vilanova <vilanova@ac.upc.edu>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Diffstat (limited to 'scripts/tracetool/__init__.py')
-rw-r--r--scripts/tracetool/__init__.py19
1 files changed, 10 insertions, 9 deletions
diff --git a/scripts/tracetool/__init__.py b/scripts/tracetool/__init__.py
index 36c789de8f..854fb9e0dd 100644
--- a/scripts/tracetool/__init__.py
+++ b/scripts/tracetool/__init__.py
@@ -136,8 +136,7 @@ class Event(object):
         Properties of the event.
     args : Arguments
         The event arguments.
-    arg_fmts : str
-        The format strings for each argument.
+
     """
 
     _CRE = re.compile("((?P<props>.*)\s+)?"
@@ -146,11 +145,10 @@ class Event(object):
                       "\s*"
                       "(?:(?:(?P<fmt_trans>\".+),)?\s*(?P<fmt>\".+))?"
                       "\s*")
-    _FMT = re.compile("(%\w+|%.*PRI\S+)")
 
     _VALID_PROPS = set(["disable", "tcg", "tcg-trans", "tcg-exec"])
 
-    def __init__(self, name, props, fmt, args, arg_fmts, orig=None):
+    def __init__(self, name, props, fmt, args, orig=None):
         """
         Parameters
         ----------
@@ -162,8 +160,6 @@ class Event(object):
             Event printing format (or formats).
         args : Arguments
             Event arguments.
-        arg_fmts : list of str
-            Format strings for each argument.
         orig : Event or None
             Original Event before transformation.
 
@@ -172,7 +168,6 @@ class Event(object):
         self.properties = props
         self.fmt = fmt
         self.args = args
-        self.arg_fmts = arg_fmts
 
         if orig is None:
             self.original = weakref.ref(self)
@@ -210,7 +205,6 @@ class Event(object):
         if len(fmt_trans) > 0:
             fmt = [fmt_trans, fmt]
         args = Arguments.build(groups["args"])
-        arg_fmts = Event._FMT.findall(fmt)
 
         if "tcg-trans" in props:
             raise ValueError("Invalid property 'tcg-trans'")
@@ -221,7 +215,7 @@ class Event(object):
         if "tcg" in props and isinstance(fmt, str):
             raise ValueError("Events with 'tcg' property must have two formats")
 
-        return Event(name, props, fmt, args, arg_fmts)
+        return Event(name, props, fmt, args)
 
     def __repr__(self):
         """Evaluable string representation for this object."""
@@ -234,6 +228,13 @@ class Event(object):
                                           self.args,
                                           fmt)
 
+    _FMT = re.compile("(%\w+|%.*PRI\S+)")
+
+    def formats(self):
+        """List of argument print formats."""
+        assert not isinstance(self.fmt, list)
+        return self._FMT.findall(self.fmt)
+
     QEMU_TRACE               = "trace_%(name)s"
     QEMU_TRACE_TCG           = QEMU_TRACE + "_tcg"