diff options
Diffstat (limited to 'tools/perf/util/symbol.c')
| -rw-r--r-- | tools/perf/util/symbol.c | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/tools/perf/util/symbol.c b/tools/perf/util/symbol.c index 323c0aea0a9..c458c4a371d 100644 --- a/tools/perf/util/symbol.c +++ b/tools/perf/util/symbol.c | |||
| @@ -163,9 +163,17 @@ void dso__set_long_name(struct dso *self, char *name) | |||
| 163 | self->long_name_len = strlen(name); | 163 | self->long_name_len = strlen(name); |
| 164 | } | 164 | } |
| 165 | 165 | ||
| 166 | static void dso__set_short_name(struct dso *self, const char *name) | ||
| 167 | { | ||
| 168 | if (name == NULL) | ||
| 169 | return; | ||
| 170 | self->short_name = name; | ||
| 171 | self->short_name_len = strlen(name); | ||
| 172 | } | ||
| 173 | |||
| 166 | static void dso__set_basename(struct dso *self) | 174 | static void dso__set_basename(struct dso *self) |
| 167 | { | 175 | { |
| 168 | self->short_name = basename(self->long_name); | 176 | dso__set_short_name(self, basename(self->long_name)); |
| 169 | } | 177 | } |
| 170 | 178 | ||
| 171 | struct dso *dso__new(const char *name) | 179 | struct dso *dso__new(const char *name) |
| @@ -176,7 +184,7 @@ struct dso *dso__new(const char *name) | |||
| 176 | int i; | 184 | int i; |
| 177 | strcpy(self->name, name); | 185 | strcpy(self->name, name); |
| 178 | dso__set_long_name(self, self->name); | 186 | dso__set_long_name(self, self->name); |
| 179 | self->short_name = self->name; | 187 | dso__set_short_name(self, self->name); |
| 180 | for (i = 0; i < MAP__NR_TYPES; ++i) | 188 | for (i = 0; i < MAP__NR_TYPES; ++i) |
| 181 | self->symbols[i] = self->symbol_names[i] = RB_ROOT; | 189 | self->symbols[i] = self->symbol_names[i] = RB_ROOT; |
| 182 | self->slen_calculated = 0; | 190 | self->slen_calculated = 0; |
| @@ -897,7 +905,6 @@ static int dso__load_sym(struct dso *self, struct map *map, const char *name, | |||
| 897 | struct kmap *kmap = self->kernel ? map__kmap(map) : NULL; | 905 | struct kmap *kmap = self->kernel ? map__kmap(map) : NULL; |
| 898 | struct map *curr_map = map; | 906 | struct map *curr_map = map; |
| 899 | struct dso *curr_dso = self; | 907 | struct dso *curr_dso = self; |
| 900 | size_t dso_name_len = strlen(self->short_name); | ||
| 901 | Elf_Data *symstrs, *secstrs; | 908 | Elf_Data *symstrs, *secstrs; |
| 902 | uint32_t nr_syms; | 909 | uint32_t nr_syms; |
| 903 | int err = -1; | 910 | int err = -1; |
| @@ -987,7 +994,8 @@ static int dso__load_sym(struct dso *self, struct map *map, const char *name, | |||
| 987 | char dso_name[PATH_MAX]; | 994 | char dso_name[PATH_MAX]; |
| 988 | 995 | ||
| 989 | if (strcmp(section_name, | 996 | if (strcmp(section_name, |
| 990 | curr_dso->short_name + dso_name_len) == 0) | 997 | (curr_dso->short_name + |
| 998 | self->short_name_len)) == 0) | ||
| 991 | goto new_symbol; | 999 | goto new_symbol; |
| 992 | 1000 | ||
| 993 | if (strcmp(section_name, ".text") == 0) { | 1001 | if (strcmp(section_name, ".text") == 0) { |
| @@ -1782,7 +1790,7 @@ struct dso *dso__new_kernel(const char *name) | |||
| 1782 | struct dso *self = dso__new(name ?: "[kernel.kallsyms]"); | 1790 | struct dso *self = dso__new(name ?: "[kernel.kallsyms]"); |
| 1783 | 1791 | ||
| 1784 | if (self != NULL) { | 1792 | if (self != NULL) { |
| 1785 | self->short_name = "[kernel]"; | 1793 | dso__set_short_name(self, "[kernel]"); |
| 1786 | self->kernel = 1; | 1794 | self->kernel = 1; |
| 1787 | } | 1795 | } |
| 1788 | 1796 | ||
