free(dso->long_name);
dso_cache__free(&dso->cache);
dso__free_a2l(dso);
+ free(dso->symsrc_filename);
free(dso);
}
struct rb_root symbol_names[MAP__NR_TYPES];
struct rb_root cache;
void *a2l;
+ char *symsrc_filename;
enum dso_kernel_type kernel;
enum dso_swap_type needs_swap;
enum dso_binary_type symtab_type;
char *file = NULL;
unsigned line = 0;
char *srcline;
- char *dso_name = dso->long_name;
+ char *dso_name;
if (!dso->has_srcline)
return SRCLINE_UNKNOWN;
+ if (dso->symsrc_filename)
+ dso_name = dso->symsrc_filename;
+ else
+ dso_name = dso->long_name;
+
if (dso_name[0] == '[')
goto out;
if (!syms_ss && symsrc__has_symtab(ss)) {
syms_ss = ss;
next_slot = true;
+ if (!dso->symsrc_filename)
+ dso->symsrc_filename = strdup(name);
}
if (!runtime_ss && symsrc__possibly_runtime(ss)) {