diff options
author | Ingo Molnar <mingo@elte.hu> | 2011-01-22 10:08:52 (GMT) |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2011-01-22 10:08:52 (GMT) |
commit | 01bb2dc4e47639c8e7eddb1718720a051bcdc955 (patch) | |
tree | 8ae801b13346c32fbca5555862411c74be902266 | |
parent | 806839b22cbda90176d7f8d421889bddd7826e93 (diff) | |
parent | ffb5e0fb44d0829021a51f972df90166bc9b700e (diff) | |
download | linux-01bb2dc4e47639c8e7eddb1718720a051bcdc955.tar.xz |
Merge branch 'perf/urgent' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux-2.6 into perf/urgent
-rw-r--r-- | tools/perf/builtin-test.c | 13 | ||||
-rw-r--r-- | tools/perf/util/symbol.c | 7 |
2 files changed, 16 insertions, 4 deletions
diff --git a/tools/perf/builtin-test.c b/tools/perf/builtin-test.c index ed56961..02958d6 100644 --- a/tools/perf/builtin-test.c +++ b/tools/perf/builtin-test.c @@ -380,13 +380,18 @@ static int test__open_syscall_event_on_all_cpus(void) for (cpu = 0; cpu < cpus->nr; ++cpu) { unsigned int ncalls = nr_open_calls + cpu; - CPU_SET(cpu, cpu_set); - sched_setaffinity(0, cpu_set_size, cpu_set); + CPU_SET_S(cpus->map[cpu], cpu_set_size, cpu_set); + if (sched_setaffinity(0, cpu_set_size, cpu_set) < 0) { + pr_debug("sched_setaffinity() failed on CPU %d: %s ", + cpus->map[cpu], + strerror(errno)); + goto out_close_fd; + } for (i = 0; i < ncalls; ++i) { fd = open("/etc/passwd", O_RDONLY); close(fd); } - CPU_CLR(cpu, cpu_set); + CPU_CLR_S(cpus->map[cpu], cpu_set_size, cpu_set); } /* @@ -410,7 +415,7 @@ static int test__open_syscall_event_on_all_cpus(void) expected = nr_open_calls + cpu; if (evsel->counts->cpu[cpu].val != expected) { pr_debug("perf_evsel__read_on_cpu: expected to intercept %d calls on cpu %d, got %Ld\n", - expected, cpu, evsel->counts->cpu[cpu].val); + expected, cpus->map[cpu], evsel->counts->cpu[cpu].val); goto out_close_fd; } } diff --git a/tools/perf/util/symbol.c b/tools/perf/util/symbol.c index 15ccfba..e32478e 100644 --- a/tools/perf/util/symbol.c +++ b/tools/perf/util/symbol.c @@ -1161,6 +1161,13 @@ static int dso__load_sym(struct dso *self, struct map *map, const char *name, section_name = elf_sec__name(&shdr, secstrs); + /* On ARM, symbols for thumb functions have 1 added to + * the symbol address as a flag - remove it */ + if ((ehdr.e_machine == EM_ARM) && + (map->type == MAP__FUNCTION) && + (sym.st_value & 1)) + --sym.st_value; + if (self->kernel != DSO_TYPE_USER || kmodule) { char dso_name[PATH_MAX]; |