diff options
author | Ingo Molnar <mingo@elte.hu> | 2012-03-13 11:26:52 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2012-03-13 11:26:52 -0400 |
commit | 47258cf3c4aa5d56e678bafe0dd0d03ddd980b88 (patch) | |
tree | 4856f0fb1185ba97f320a7ed6fb63bf136708a42 /tools/perf/util | |
parent | c308b56b5398779cd3da0f62ab26b0453494c3d4 (diff) | |
parent | fde7d9049e55ab85a390be7f415d74c9f62dd0f9 (diff) |
Merge tag 'v3.3-rc7' into sched/core
Merge reason: merge back final fixes, prepare for the merge window.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'tools/perf/util')
-rw-r--r-- | tools/perf/util/event.c | 1 | ||||
-rw-r--r-- | tools/perf/util/evlist.c | 4 | ||||
-rw-r--r-- | tools/perf/util/probe-event.c | 6 | ||||
-rw-r--r-- | tools/perf/util/probe-finder.c | 12 | ||||
-rw-r--r-- | tools/perf/util/top.h | 1 | ||||
-rw-r--r-- | tools/perf/util/util.c | 2 |
6 files changed, 24 insertions, 2 deletions
diff --git a/tools/perf/util/event.c b/tools/perf/util/event.c index 2044324b755a..2a6f33cd888c 100644 --- a/tools/perf/util/event.c +++ b/tools/perf/util/event.c | |||
@@ -74,6 +74,7 @@ static pid_t perf_event__get_comm_tgid(pid_t pid, char *comm, size_t len) | |||
74 | if (size >= len) | 74 | if (size >= len) |
75 | size = len - 1; | 75 | size = len - 1; |
76 | memcpy(comm, name, size); | 76 | memcpy(comm, name, size); |
77 | comm[size] = '\0'; | ||
77 | 78 | ||
78 | } else if (memcmp(bf, "Tgid:", 5) == 0) { | 79 | } else if (memcmp(bf, "Tgid:", 5) == 0) { |
79 | char *tgids = bf + 5; | 80 | char *tgids = bf + 5; |
diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c index 3f16e08a5c8d..ea32a061f1c8 100644 --- a/tools/perf/util/evlist.c +++ b/tools/perf/util/evlist.c | |||
@@ -349,6 +349,10 @@ struct perf_evsel *perf_evlist__id2evsel(struct perf_evlist *evlist, u64 id) | |||
349 | hlist_for_each_entry(sid, pos, head, node) | 349 | hlist_for_each_entry(sid, pos, head, node) |
350 | if (sid->id == id) | 350 | if (sid->id == id) |
351 | return sid->evsel; | 351 | return sid->evsel; |
352 | |||
353 | if (!perf_evlist__sample_id_all(evlist)) | ||
354 | return list_entry(evlist->entries.next, struct perf_evsel, node); | ||
355 | |||
352 | return NULL; | 356 | return NULL; |
353 | } | 357 | } |
354 | 358 | ||
diff --git a/tools/perf/util/probe-event.c b/tools/perf/util/probe-event.c index 29cb65459811..e33554a562b3 100644 --- a/tools/perf/util/probe-event.c +++ b/tools/perf/util/probe-event.c | |||
@@ -1867,6 +1867,12 @@ static int convert_to_probe_trace_events(struct perf_probe_event *pev, | |||
1867 | tev->point.symbol); | 1867 | tev->point.symbol); |
1868 | ret = -ENOENT; | 1868 | ret = -ENOENT; |
1869 | goto error; | 1869 | goto error; |
1870 | } else if (tev->point.offset > sym->end - sym->start) { | ||
1871 | pr_warning("Offset specified is greater than size of %s\n", | ||
1872 | tev->point.symbol); | ||
1873 | ret = -ENOENT; | ||
1874 | goto error; | ||
1875 | |||
1870 | } | 1876 | } |
1871 | 1877 | ||
1872 | return 1; | 1878 | return 1; |
diff --git a/tools/perf/util/probe-finder.c b/tools/perf/util/probe-finder.c index 5d732621a462..74bd2e63c4b4 100644 --- a/tools/perf/util/probe-finder.c +++ b/tools/perf/util/probe-finder.c | |||
@@ -672,7 +672,7 @@ static int find_variable(Dwarf_Die *sc_die, struct probe_finder *pf) | |||
672 | static int convert_to_trace_point(Dwarf_Die *sp_die, Dwarf_Addr paddr, | 672 | static int convert_to_trace_point(Dwarf_Die *sp_die, Dwarf_Addr paddr, |
673 | bool retprobe, struct probe_trace_point *tp) | 673 | bool retprobe, struct probe_trace_point *tp) |
674 | { | 674 | { |
675 | Dwarf_Addr eaddr; | 675 | Dwarf_Addr eaddr, highaddr; |
676 | const char *name; | 676 | const char *name; |
677 | 677 | ||
678 | /* Copy the name of probe point */ | 678 | /* Copy the name of probe point */ |
@@ -683,6 +683,16 @@ static int convert_to_trace_point(Dwarf_Die *sp_die, Dwarf_Addr paddr, | |||
683 | dwarf_diename(sp_die)); | 683 | dwarf_diename(sp_die)); |
684 | return -ENOENT; | 684 | return -ENOENT; |
685 | } | 685 | } |
686 | if (dwarf_highpc(sp_die, &highaddr) != 0) { | ||
687 | pr_warning("Failed to get end address of %s\n", | ||
688 | dwarf_diename(sp_die)); | ||
689 | return -ENOENT; | ||
690 | } | ||
691 | if (paddr > highaddr) { | ||
692 | pr_warning("Offset specified is greater than size of %s\n", | ||
693 | dwarf_diename(sp_die)); | ||
694 | return -EINVAL; | ||
695 | } | ||
686 | tp->symbol = strdup(name); | 696 | tp->symbol = strdup(name); |
687 | if (tp->symbol == NULL) | 697 | if (tp->symbol == NULL) |
688 | return -ENOMEM; | 698 | return -ENOMEM; |
diff --git a/tools/perf/util/top.h b/tools/perf/util/top.h index a248f3c2c60d..f2eab81435ae 100644 --- a/tools/perf/util/top.h +++ b/tools/perf/util/top.h | |||
@@ -34,6 +34,7 @@ struct perf_top { | |||
34 | bool inherit; | 34 | bool inherit; |
35 | bool group; | 35 | bool group; |
36 | bool sample_id_all_avail; | 36 | bool sample_id_all_avail; |
37 | bool exclude_guest_missing; | ||
37 | bool dump_symtab; | 38 | bool dump_symtab; |
38 | const char *cpu_list; | 39 | const char *cpu_list; |
39 | struct hist_entry *sym_filter_entry; | 40 | struct hist_entry *sym_filter_entry; |
diff --git a/tools/perf/util/util.c b/tools/perf/util/util.c index 813141047fc2..fb25d1329218 100644 --- a/tools/perf/util/util.c +++ b/tools/perf/util/util.c | |||
@@ -6,7 +6,7 @@ | |||
6 | * XXX We need to find a better place for these things... | 6 | * XXX We need to find a better place for these things... |
7 | */ | 7 | */ |
8 | bool perf_host = true; | 8 | bool perf_host = true; |
9 | bool perf_guest = true; | 9 | bool perf_guest = false; |
10 | 10 | ||
11 | void event_attr_init(struct perf_event_attr *attr) | 11 | void event_attr_init(struct perf_event_attr *attr) |
12 | { | 12 | { |