diff options
| author | Florian Tobias Schandinat <FlorianSchandinat@gmx.de> | 2011-10-14 20:14:01 -0400 |
|---|---|---|
| committer | Florian Tobias Schandinat <FlorianSchandinat@gmx.de> | 2011-10-14 20:14:01 -0400 |
| commit | 07aaae44f5a3962c3a410a6dd7936dfa7dece2b9 (patch) | |
| tree | 0cdb5735800ddd63d8850aa26d3a3f1f3334267a /tools/perf | |
| parent | 07a062140372187642003e02a49edc8a2115c1ca (diff) | |
| parent | 976d167615b64e14bc1491ca51d424e2ba9a5e84 (diff) | |
Merge commit 'v3.1-rc9' into fbdev-next
Diffstat (limited to 'tools/perf')
| -rw-r--r-- | tools/perf/Makefile | 9 | ||||
| -rw-r--r-- | tools/perf/arch/arm/util/dwarf-regs.c | 3 | ||||
| -rw-r--r-- | tools/perf/builtin-record.c | 3 | ||||
| -rw-r--r-- | tools/perf/builtin-test.c | 2 | ||||
| -rw-r--r-- | tools/perf/builtin-top.c | 9 | ||||
| -rw-r--r-- | tools/perf/util/event.c | 5 | ||||
| -rw-r--r-- | tools/perf/util/event.h | 2 | ||||
| -rw-r--r-- | tools/perf/util/evlist.c | 13 | ||||
| -rw-r--r-- | tools/perf/util/evlist.h | 1 | ||||
| -rw-r--r-- | tools/perf/util/evsel.c | 57 | ||||
| -rw-r--r-- | tools/perf/util/probe-finder.c | 2 | ||||
| -rw-r--r-- | tools/perf/util/python.c | 2 | ||||
| -rw-r--r-- | tools/perf/util/session.h | 3 | ||||
| -rw-r--r-- | tools/perf/util/sort.c | 10 | ||||
| -rw-r--r-- | tools/perf/util/symbol.c | 153 |
15 files changed, 216 insertions, 58 deletions
diff --git a/tools/perf/Makefile b/tools/perf/Makefile index 3b8f7b80376b..e9d5c271db69 100644 --- a/tools/perf/Makefile +++ b/tools/perf/Makefile | |||
| @@ -30,6 +30,8 @@ endif | |||
| 30 | # Define EXTRA_CFLAGS=-m64 or EXTRA_CFLAGS=-m32 as appropriate for cross-builds. | 30 | # Define EXTRA_CFLAGS=-m64 or EXTRA_CFLAGS=-m32 as appropriate for cross-builds. |
| 31 | # | 31 | # |
| 32 | # Define NO_DWARF if you do not want debug-info analysis feature at all. | 32 | # Define NO_DWARF if you do not want debug-info analysis feature at all. |
| 33 | # | ||
| 34 | # Define WERROR=0 to disable treating any warnings as errors. | ||
| 33 | 35 | ||
| 34 | $(OUTPUT)PERF-VERSION-FILE: .FORCE-PERF-VERSION-FILE | 36 | $(OUTPUT)PERF-VERSION-FILE: .FORCE-PERF-VERSION-FILE |
| 35 | @$(SHELL_PATH) util/PERF-VERSION-GEN $(OUTPUT) | 37 | @$(SHELL_PATH) util/PERF-VERSION-GEN $(OUTPUT) |
| @@ -63,6 +65,11 @@ ifeq ($(ARCH),x86_64) | |||
| 63 | endif | 65 | endif |
| 64 | endif | 66 | endif |
| 65 | 67 | ||
| 68 | # Treat warnings as errors unless directed not to | ||
| 69 | ifneq ($(WERROR),0) | ||
| 70 | CFLAGS_WERROR := -Werror | ||
| 71 | endif | ||
| 72 | |||
| 66 | # | 73 | # |
| 67 | # Include saner warnings here, which can catch bugs: | 74 | # Include saner warnings here, which can catch bugs: |
| 68 | # | 75 | # |
| @@ -95,7 +102,7 @@ ifndef PERF_DEBUG | |||
| 95 | CFLAGS_OPTIMIZE = -O6 | 102 | CFLAGS_OPTIMIZE = -O6 |
| 96 | endif | 103 | endif |
| 97 | 104 | ||
| 98 | CFLAGS = -fno-omit-frame-pointer -ggdb3 -Wall -Wextra -std=gnu99 -Werror $(CFLAGS_OPTIMIZE) -D_FORTIFY_SOURCE=2 $(EXTRA_WARNINGS) $(EXTRA_CFLAGS) | 105 | CFLAGS = -fno-omit-frame-pointer -ggdb3 -Wall -Wextra -std=gnu99 $(CFLAGS_WERROR) $(CFLAGS_OPTIMIZE) -D_FORTIFY_SOURCE=2 $(EXTRA_WARNINGS) $(EXTRA_CFLAGS) |
| 99 | EXTLIBS = -lpthread -lrt -lelf -lm | 106 | EXTLIBS = -lpthread -lrt -lelf -lm |
| 100 | ALL_CFLAGS = $(CFLAGS) -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 | 107 | ALL_CFLAGS = $(CFLAGS) -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 |
| 101 | ALL_LDFLAGS = $(LDFLAGS) | 108 | ALL_LDFLAGS = $(LDFLAGS) |
diff --git a/tools/perf/arch/arm/util/dwarf-regs.c b/tools/perf/arch/arm/util/dwarf-regs.c index fff6450c8c99..e8d5c551c69c 100644 --- a/tools/perf/arch/arm/util/dwarf-regs.c +++ b/tools/perf/arch/arm/util/dwarf-regs.c | |||
| @@ -8,7 +8,10 @@ | |||
| 8 | * published by the Free Software Foundation. | 8 | * published by the Free Software Foundation. |
| 9 | */ | 9 | */ |
| 10 | 10 | ||
| 11 | #include <stdlib.h> | ||
| 12 | #ifndef __UCLIBC__ | ||
| 11 | #include <libio.h> | 13 | #include <libio.h> |
| 14 | #endif | ||
| 12 | #include <dwarf-regs.h> | 15 | #include <dwarf-regs.h> |
| 13 | 16 | ||
| 14 | struct pt_regs_dwarfnum { | 17 | struct pt_regs_dwarfnum { |
diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c index 6b0519f885e4..f4c3fbee4bad 100644 --- a/tools/perf/builtin-record.c +++ b/tools/perf/builtin-record.c | |||
| @@ -161,6 +161,7 @@ static void config_attr(struct perf_evsel *evsel, struct perf_evlist *evlist) | |||
| 161 | struct perf_event_attr *attr = &evsel->attr; | 161 | struct perf_event_attr *attr = &evsel->attr; |
| 162 | int track = !evsel->idx; /* only the first counter needs these */ | 162 | int track = !evsel->idx; /* only the first counter needs these */ |
| 163 | 163 | ||
| 164 | attr->disabled = 1; | ||
| 164 | attr->inherit = !no_inherit; | 165 | attr->inherit = !no_inherit; |
| 165 | attr->read_format = PERF_FORMAT_TOTAL_TIME_ENABLED | | 166 | attr->read_format = PERF_FORMAT_TOTAL_TIME_ENABLED | |
| 166 | PERF_FORMAT_TOTAL_TIME_RUNNING | | 167 | PERF_FORMAT_TOTAL_TIME_RUNNING | |
| @@ -671,6 +672,8 @@ static int __cmd_record(int argc, const char **argv) | |||
| 671 | } | 672 | } |
| 672 | } | 673 | } |
| 673 | 674 | ||
| 675 | perf_evlist__enable(evsel_list); | ||
| 676 | |||
| 674 | /* | 677 | /* |
| 675 | * Let the child rip | 678 | * Let the child rip |
| 676 | */ | 679 | */ |
diff --git a/tools/perf/builtin-test.c b/tools/perf/builtin-test.c index 55f4c76f2821..efe696f936e2 100644 --- a/tools/perf/builtin-test.c +++ b/tools/perf/builtin-test.c | |||
| @@ -561,7 +561,7 @@ static int test__basic_mmap(void) | |||
| 561 | } | 561 | } |
| 562 | 562 | ||
| 563 | err = perf_event__parse_sample(event, attr.sample_type, sample_size, | 563 | err = perf_event__parse_sample(event, attr.sample_type, sample_size, |
| 564 | false, &sample); | 564 | false, &sample, false); |
| 565 | if (err) { | 565 | if (err) { |
| 566 | pr_err("Can't parse sample, err = %d\n", err); | 566 | pr_err("Can't parse sample, err = %d\n", err); |
| 567 | goto out_munmap; | 567 | goto out_munmap; |
diff --git a/tools/perf/builtin-top.c b/tools/perf/builtin-top.c index a43433f08300..d28013b7d61c 100644 --- a/tools/perf/builtin-top.c +++ b/tools/perf/builtin-top.c | |||
| @@ -191,7 +191,8 @@ static void __zero_source_counters(struct sym_entry *syme) | |||
| 191 | symbol__annotate_zero_histograms(sym); | 191 | symbol__annotate_zero_histograms(sym); |
| 192 | } | 192 | } |
| 193 | 193 | ||
| 194 | static void record_precise_ip(struct sym_entry *syme, int counter, u64 ip) | 194 | static void record_precise_ip(struct sym_entry *syme, struct map *map, |
| 195 | int counter, u64 ip) | ||
| 195 | { | 196 | { |
| 196 | struct annotation *notes; | 197 | struct annotation *notes; |
| 197 | struct symbol *sym; | 198 | struct symbol *sym; |
| @@ -205,8 +206,8 @@ static void record_precise_ip(struct sym_entry *syme, int counter, u64 ip) | |||
| 205 | if (pthread_mutex_trylock(¬es->lock)) | 206 | if (pthread_mutex_trylock(¬es->lock)) |
| 206 | return; | 207 | return; |
| 207 | 208 | ||
| 208 | ip = syme->map->map_ip(syme->map, ip); | 209 | ip = map->map_ip(map, ip); |
| 209 | symbol__inc_addr_samples(sym, syme->map, counter, ip); | 210 | symbol__inc_addr_samples(sym, map, counter, ip); |
| 210 | 211 | ||
| 211 | pthread_mutex_unlock(¬es->lock); | 212 | pthread_mutex_unlock(¬es->lock); |
| 212 | } | 213 | } |
| @@ -810,7 +811,7 @@ static void perf_event__process_sample(const union perf_event *event, | |||
| 810 | evsel = perf_evlist__id2evsel(top.evlist, sample->id); | 811 | evsel = perf_evlist__id2evsel(top.evlist, sample->id); |
| 811 | assert(evsel != NULL); | 812 | assert(evsel != NULL); |
| 812 | syme->count[evsel->idx]++; | 813 | syme->count[evsel->idx]++; |
| 813 | record_precise_ip(syme, evsel->idx, ip); | 814 | record_precise_ip(syme, al.map, evsel->idx, ip); |
| 814 | pthread_mutex_lock(&top.active_symbols_lock); | 815 | pthread_mutex_lock(&top.active_symbols_lock); |
| 815 | if (list_empty(&syme->node) || !syme->node.next) { | 816 | if (list_empty(&syme->node) || !syme->node.next) { |
| 816 | static bool first = true; | 817 | static bool first = true; |
diff --git a/tools/perf/util/event.c b/tools/perf/util/event.c index 3c1b8a632101..437f8ca679a0 100644 --- a/tools/perf/util/event.c +++ b/tools/perf/util/event.c | |||
| @@ -169,12 +169,17 @@ static int perf_event__synthesize_mmap_events(union perf_event *event, | |||
| 169 | continue; | 169 | continue; |
| 170 | pbf += n + 3; | 170 | pbf += n + 3; |
| 171 | if (*pbf == 'x') { /* vm_exec */ | 171 | if (*pbf == 'x') { /* vm_exec */ |
| 172 | char anonstr[] = "//anon\n"; | ||
| 172 | char *execname = strchr(bf, '/'); | 173 | char *execname = strchr(bf, '/'); |
| 173 | 174 | ||
| 174 | /* Catch VDSO */ | 175 | /* Catch VDSO */ |
| 175 | if (execname == NULL) | 176 | if (execname == NULL) |
| 176 | execname = strstr(bf, "[vdso]"); | 177 | execname = strstr(bf, "[vdso]"); |
| 177 | 178 | ||
| 179 | /* Catch anonymous mmaps */ | ||
| 180 | if ((execname == NULL) && !strstr(bf, "[")) | ||
| 181 | execname = anonstr; | ||
| 182 | |||
| 178 | if (execname == NULL) | 183 | if (execname == NULL) |
| 179 | continue; | 184 | continue; |
| 180 | 185 | ||
diff --git a/tools/perf/util/event.h b/tools/perf/util/event.h index 1d7f66488a88..357a85b85248 100644 --- a/tools/perf/util/event.h +++ b/tools/perf/util/event.h | |||
| @@ -186,6 +186,6 @@ const char *perf_event__name(unsigned int id); | |||
| 186 | 186 | ||
| 187 | int perf_event__parse_sample(const union perf_event *event, u64 type, | 187 | int perf_event__parse_sample(const union perf_event *event, u64 type, |
| 188 | int sample_size, bool sample_id_all, | 188 | int sample_size, bool sample_id_all, |
| 189 | struct perf_sample *sample); | 189 | struct perf_sample *sample, bool swapped); |
| 190 | 190 | ||
| 191 | #endif /* __PERF_RECORD_H */ | 191 | #endif /* __PERF_RECORD_H */ |
diff - | |||
