perf trace: We need to consider "nr" if "__syscall_nr" is not there
authorArnaldo Carvalho de Melo <acme@redhat.com>
Wed, 5 Dec 2018 16:08:11 +0000 (13:08 -0300)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Mon, 17 Dec 2018 17:57:02 +0000 (14:57 -0300)
To cope with older kernels that don't have this patch backported:

  026842d148b9 ("tracing/syscalls: Rename "/format" tracepoint field name "nr" to "__syscall_nr:")

This makes 'perf trace' work again in RHEL7 kernels.

Cc: Taeung Song <treeze.taeung@gmail.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Wang Nan <wangnan0@huawei.com>
Link: https://lkml.kernel.org/n/tip-6h1syw2isegnhb1bjmtr9x9k@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/builtin-trace.c

index 2a347ed..98aff12 100644 (file)
@@ -258,7 +258,8 @@ static int perf_evsel__init_syscall_tp(struct perf_evsel *evsel)
        struct syscall_tp *sc = evsel->priv = malloc(sizeof(struct syscall_tp));
 
        if (evsel->priv != NULL) {
-               if (perf_evsel__init_tp_uint_field(evsel, &sc->id, "__syscall_nr"))
+               if (perf_evsel__init_tp_uint_field(evsel, &sc->id, "__syscall_nr") &&
+                   perf_evsel__init_tp_uint_field(evsel, &sc->id, "nr"))
                        goto out_delete;
                return 0;
        }