summaryrefslogtreecommitdiff
path: root/tools/perf/builtin-report.c
diff options
context:
space:
mode:
Diffstat (limited to 'tools/perf/builtin-report.c')
-rw-r--r--tools/perf/builtin-report.c30
1 files changed, 12 insertions, 18 deletions
diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c
index 3b81f4b3dc49..95c0bdba6b11 100644
--- a/tools/perf/builtin-report.c
+++ b/tools/perf/builtin-report.c
@@ -245,25 +245,20 @@ static int process_feature_event(const struct perf_tool *tool,
union perf_event *event)
{
struct report *rep = container_of(tool, struct report, tool);
+ int ret = perf_event__process_feature(tool, session, event);
- if (event->feat.feat_id < HEADER_LAST_FEATURE)
- return perf_event__process_feature(session, event);
+ if (ret == 0 && event->header.size == sizeof(struct perf_record_header_feature) &&
+ (int)event->feat.feat_id >= session->header.last_feat) {
+ /*
+ * (feat_id = HEADER_LAST_FEATURE) is the end marker which means
+ * all features are received.
+ */
+ if (rep->header_only)
+ session_done = 1;
- if (event->feat.feat_id != HEADER_LAST_FEATURE) {
- pr_err("failed: wrong feature ID: %" PRI_lu64 "\n",
- event->feat.feat_id);
- return -1;
- } else if (rep->header_only) {
- session_done = 1;
+ setup_forced_leader(rep, session->evlist);
}
-
- /*
- * (feat_id = HEADER_LAST_FEATURE) is the end marker which
- * means all features are received, now we can force the
- * group if needed.
- */
- setup_forced_leader(rep, session->evlist);
- return 0;
+ return ret;
}
static int process_sample_event(const struct perf_tool *tool,
@@ -1416,8 +1411,7 @@ int cmd_report(int argc, const char **argv)
"columns '.' is reserved."),
OPT_BOOLEAN('U', "hide-unresolved", &symbol_conf.hide_unresolved,
"Only display entries resolved to a symbol"),
- OPT_CALLBACK(0, "symfs", NULL, "directory",
- "Look for files with symbols relative to this directory",
+ OPT_CALLBACK(0, "symfs", NULL, "directory[,layout]", SYMFS_HELP,
symbol__config_symfs),
OPT_STRING('C', "cpu", &report.cpu_list, "cpu",
"list of cpus to profile"),