aboutsummaryrefslogtreecommitdiffstats
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.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c
index 99274cec0adb..8b2ec882e6e0 100644
--- a/tools/perf/builtin-report.c
+++ b/tools/perf/builtin-report.c
@@ -38,6 +38,7 @@ static char *dso_list_str, *comm_list_str, *sym_list_str,
38static struct strlist *dso_list, *comm_list, *sym_list; 38static struct strlist *dso_list, *comm_list, *sym_list;
39static char *field_sep; 39static char *field_sep;
40 40
41static int force;
41static int input; 42static int input;
42static int show_mask = SHOW_KERNEL | SHOW_USER | SHOW_HV; 43static int show_mask = SHOW_KERNEL | SHOW_USER | SHOW_HV;
43 44
@@ -1526,11 +1527,11 @@ process_sample_event(event_t *event, unsigned long offset, unsigned long head)
1526 more_data += sizeof(u64); 1527 more_data += sizeof(u64);
1527 } 1528 }
1528 1529
1529 dprintf("%p [%p]: PERF_EVENT_SAMPLE (IP, %d): %d: %p period: %Ld\n", 1530 dprintf("%p [%p]: PERF_EVENT_SAMPLE (IP, %d): %d/%d: %p period: %Ld\n",
1530 (void *)(offset + head), 1531 (void *)(offset + head),
1531 (void *)(long)(event->header.size), 1532 (void *)(long)(event->header.size),
1532 event->header.misc, 1533 event->header.misc,
1533 event->ip.pid, 1534 event->ip.pid, event->ip.tid,
1534 (void *)(long)ip, 1535 (void *)(long)ip,
1535 (long long)period); 1536 (long long)period);
1536 1537
@@ -1590,10 +1591,11 @@ process_sample_event(event_t *event, unsigned long offset, unsigned long head)
1590 if (show & show_mask) { 1591 if (show & show_mask) {
1591 struct symbol *sym = resolve_symbol(thread, &map, &dso, &ip); 1592 struct symbol *sym = resolve_symbol(thread, &map, &dso, &ip);
1592 1593
1593 if (dso_list && dso && dso->name && !strlist__has_entry(dso_list, dso->name)) 1594 if (dso_list && (!dso || !dso->name ||
1595 !strlist__has_entry(dso_list, dso->name)))
1594 return 0; 1596 return 0;
1595 1597
1596 if (sym_list && sym && !strlist__has_entry(sym_list, sym->name)) 1598 if (sym_list && (!sym || !strlist__has_entry(sym_list, sym->name)))
1597 return 0; 1599 return 0;
1598 1600
1599 if (hist_entry__add(thread, map, dso, sym, ip, chain, level, period)) { 1601 if (hist_entry__add(thread, map, dso, sym, ip, chain, level, period)) {
@@ -1612,10 +1614,11 @@ process_mmap_event(event_t *event, unsigned long offset, unsigned long head)
1612 struct thread *thread = threads__findnew(event->mmap.pid); 1614 struct thread *thread = threads__findnew(event->mmap.pid);
1613 struct map *map = map__new(&event->mmap); 1615 struct map *map = map__new(&event->mmap);
1614 1616
1615 dprintf("%p [%p]: PERF_EVENT_MMAP %d: [%p(%p) @ %p]: %s\n", 1617 dprintf("%p [%p]: PERF_EVENT_MMAP %d/%d: [%p(%p) @ %p]: %s\n",
1616 (void *)(offset + head), 1618 (void *)(offset + head),
1617 (void *)(long)(event->header.size), 1619 (void *)(long)(event->header.size),
1618 event->mmap.pid, 1620 event->mmap.pid,
1621 event->mmap.tid,
1619 (void *)(long)event->mmap.start, 1622 (void *)(long)event->mmap.start,
1620 (void *)(long)event->mmap.len, 1623 (void *)(long)event->mmap.len,
1621 (void *)(long)event->mmap.pgoff, 1624 (void *)(long)event->mmap.pgoff,
@@ -1854,6 +1857,11 @@ static int __cmd_report(void)
1854 exit(-1); 1857 exit(-1);
1855 } 1858 }
1856 1859
1860 if (!force && (stat.st_uid != geteuid())) {
1861 fprintf(stderr, "file: %s not owned by current user\n", input_name);
1862 exit(-1);
1863 }
1864
1857 if (!stat.st_size) { 1865 if (!stat.st_size) {
1858 fprintf(stderr, "zero-sized file, nothing to do!\n"); 1866 fprintf(stderr, "zero-sized file, nothing to do!\n");
1859 exit(0); 1867 exit(0);
@@ -2062,6 +2070,7 @@ static const struct option options[] = {
2062 OPT_BOOLEAN('D', "dump-raw-trace", &dump_trace, 2070 OPT_BOOLEAN('D', "dump-raw-trace", &dump_trace,
2063 "dump raw trace in ASCII"), 2071 "dump raw trace in ASCII"),
2064 OPT_STRING('k', "vmlinux", &vmlinux, "file", "vmlinux pathname"), 2072 OPT_STRING('k', "vmlinux", &vmlinux, "file", "vmlinux pathname"),
2073 OPT_BOOLEAN('f', "force", &force, "don't complain, do it"),
2065 OPT_BOOLEAN('m', "modules", &modules, 2074 OPT_BOOLEAN('m', "modules", &modules,
2066 "load module symbols - WARNING: use only with -k and LIVE kernel"), 2075 "load module symbols - WARNING: use only with -k and LIVE kernel"),
2067 OPT_BOOLEAN('n', "show-nr-samples", &show_nr_samples, 2076 OPT_BOOLEAN('n', "show-nr-samples", &show_nr_samples,