diff options
Diffstat (limited to 'tools')
-rw-r--r-- | tools/perf/util/symbol.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/tools/perf/util/symbol.c b/tools/perf/util/symbol.c index 15ccfba8cdf8..e32478effed8 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, | |||
1161 | 1161 | ||
1162 | section_name = elf_sec__name(&shdr, secstrs); | 1162 | section_name = elf_sec__name(&shdr, secstrs); |
1163 | 1163 | ||
1164 | /* On ARM, symbols for thumb functions have 1 added to | ||
1165 | * the symbol address as a flag - remove it */ | ||
1166 | if ((ehdr.e_machine == EM_ARM) && | ||
1167 | (map->type == MAP__FUNCTION) && | ||
1168 | (sym.st_value & 1)) | ||
1169 | --sym.st_value; | ||
1170 | |||
1164 | if (self->kernel != DSO_TYPE_USER || kmodule) { | 1171 | if (self->kernel != DSO_TYPE_USER || kmodule) { |
1165 | char dso_name[PATH_MAX]; | 1172 | char dso_name[PATH_MAX]; |
1166 | 1173 | ||