diff options
Diffstat (limited to 'tools/perf/builtin-record.c')
-rw-r--r-- | tools/perf/builtin-record.c | 35 |
1 files changed, 21 insertions, 14 deletions
diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c index ac989e9ba8fe..0ff67d1c4752 100644 --- a/tools/perf/builtin-record.c +++ b/tools/perf/builtin-record.c | |||
@@ -560,11 +560,12 @@ static int __cmd_record(int argc, const char **argv) | |||
560 | return err; | 560 | return err; |
561 | } | 561 | } |
562 | 562 | ||
563 | if (raw_samples) { | 563 | if (raw_samples && have_tracepoints(attrs, nr_counters)) { |
564 | perf_header__set_feat(&session->header, HEADER_TRACE_INFO); | 564 | perf_header__set_feat(&session->header, HEADER_TRACE_INFO); |
565 | } else { | 565 | } else { |
566 | for (i = 0; i < nr_counters; i++) { | 566 | for (i = 0; i < nr_counters; i++) { |
567 | if (attrs[i].sample_type & PERF_SAMPLE_RAW) { | 567 | if (attrs[i].sample_type & PERF_SAMPLE_RAW && |
568 | attrs[i].type == PERF_TYPE_TRACEPOINT) { | ||
568 | perf_header__set_feat(&session->header, HEADER_TRACE_INFO); | 569 | perf_header__set_feat(&session->header, HEADER_TRACE_INFO); |
569 | break; | 570 | break; |
570 | } | 571 | } |
@@ -662,19 +663,25 @@ static int __cmd_record(int argc, const char **argv) | |||
662 | return err; | 663 | return err; |
663 | } | 664 | } |
664 | 665 | ||
665 | err = event__synthesize_tracing_data(output, attrs, | 666 | if (have_tracepoints(attrs, nr_counters)) { |
666 | nr_counters, | 667 | /* |
667 | process_synthesized_event, | 668 | * FIXME err <= 0 here actually means that |
668 | session); | 669 | * there were no tracepoints so its not really |
669 | /* | 670 | * an error, just that we don't need to |
670 | * FIXME err <= 0 here actually means that there were no tracepoints | 671 | * synthesize anything. We really have to |
671 | * so its not really an error, just that we don't need to synthesize | 672 | * return this more properly and also |
672 | * anything. | 673 | * propagate errors that now are calling die() |
673 | * We really have to return this more properly and also propagate | 674 | */ |
674 | * errors that now are calling die() | 675 | err = event__synthesize_tracing_data(output, attrs, |
675 | */ | 676 | nr_counters, |
676 | if (err > 0) | 677 | process_synthesized_event, |
678 | session); | ||
679 | if (err <= 0) { | ||
680 | pr_err("Couldn't record tracing data.\n"); | ||
681 | return err; | ||
682 | } | ||
677 | advance_output(err); | 683 | advance_output(err); |
684 | } | ||
678 | } | 685 | } |
679 | 686 | ||
680 | machine = perf_session__find_host_machine(session); | 687 | machine = perf_session__find_host_machine(session); |