tools lib traceevent: Fix use of multiple options in processing field
authorSteven Rostedt <rostedt@goodmis.org>
Mon, 18 Nov 2013 19:23:14 +0000 (14:23 -0500)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Tue, 19 Nov 2013 13:34:39 +0000 (10:34 -0300)
commiteff2c92f86c2ac2a0eab3749d58be39592293c3a
treeeba26538043d78a5bdb7a1b3b08ff185d0b3435f
parent50a2740b839ece03b305facd3fc07cdc3b74247c
tools lib traceevent: Fix use of multiple options in processing field

Jiri Olsa reported that the scsi_dispatch_cmd_done event failed to parse
with:

  Error: expected type 5 but read 4
  Error: expected type 5 but read 4

The problem is with this part of the print_fmt:

  __print_symbolic(((REC->result) >> 24) & 0xff, ...

The __print_symbolic() helper function's first parameter is the field to
use to determine what symbol to print based on the value of the result.
The parser can handle one operation, but it can not handle multiple
operations ('>>' and '&').

Add code to process all operations for the field argument for
__print_symbolic() as well as __print_flags().

Reported-by: Jiri Olsa <jolsa@redhat.com>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Link: http://lkml.kernel.org/r/20131118142314.27ca334b@gandalf.local.home
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/lib/traceevent/event-parse.c