a2l 147 tools/perf/util/dso.h void *a2l; a2l 158 tools/perf/util/srcline.c static int slurp_symtab(bfd *abfd, struct a2l_data *a2l) a2l 187 tools/perf/util/srcline.c a2l->syms = syms; a2l 195 tools/perf/util/srcline.c struct a2l_data *a2l = data; a2l 198 tools/perf/util/srcline.c if (a2l->found) a2l 209 tools/perf/util/srcline.c pc = a2l->addr; a2l 224 tools/perf/util/srcline.c a2l->found = bfd_find_nearest_line(abfd, section, a2l->syms, pc - vma, a2l 225 tools/perf/util/srcline.c &a2l->filename, &a2l->funcname, a2l 226 tools/perf/util/srcline.c &a2l->line); a2l 228 tools/perf/util/srcline.c if (a2l->filename && !strlen(a2l->filename)) a2l 229 tools/perf/util/srcline.c a2l->filename = NULL; a2l 235 tools/perf/util/srcline.c struct a2l_data *a2l = NULL; a2l 244 tools/perf/util/srcline.c a2l = zalloc(sizeof(*a2l)); a2l 245 tools/perf/util/srcline.c if (a2l == NULL) a2l 248 tools/perf/util/srcline.c a2l->abfd = abfd; a2l 249 tools/perf/util/srcline.c a2l->input = strdup(path); a2l 250 tools/perf/util/srcline.c if (a2l->input == NULL) a2l 253 tools/perf/util/srcline.c if (slurp_symtab(abfd, a2l)) a2l 256 tools/perf/util/srcline.c return a2l; a2l 259 tools/perf/util/srcline.c if (a2l) { a2l 260 tools/perf/util/srcline.c zfree((char **)&a2l->input); a2l 261 tools/perf/util/srcline.c free(a2l); a2l 267 tools/perf/util/srcline.c static void addr2line_cleanup(struct a2l_data *a2l) a2l 269 tools/perf/util/srcline.c if (a2l->abfd) a2l 270 tools/perf/util/srcline.c bfd_close(a2l->abfd); a2l 271 tools/perf/util/srcline.c zfree((char **)&a2l->input); a2l 272 tools/perf/util/srcline.c zfree(&a2l->syms); a2l 273 tools/perf/util/srcline.c free(a2l); a2l 282 tools/perf/util/srcline.c struct a2l_data *a2l = dso->a2l; a2l 283 tools/perf/util/srcline.c struct symbol *inline_sym = new_inline_sym(dso, sym, a2l->funcname); a2l 286 tools/perf/util/srcline.c if (a2l->filename) a2l 287 tools/perf/util/srcline.c srcline = srcline_from_fileline(a2l->filename, a2l->line); a2l 298 tools/perf/util/srcline.c struct a2l_data *a2l = dso->a2l; a2l 300 tools/perf/util/srcline.c if (!a2l) { a2l 301 tools/perf/util/srcline.c dso->a2l = addr2line_init(dso_name); a2l 302 tools/perf/util/srcline.c a2l = dso->a2l; a2l 305 tools/perf/util/srcline.c if (a2l == NULL) { a2l 311 tools/perf/util/srcline.c a2l->addr = addr; a2l 312 tools/perf/util/srcline.c a2l->found = false; a2l 314 tools/perf/util/srcline.c bfd_map_over_sections(a2l->abfd, find_address_in_section, a2l); a2l 316 tools/perf/util/srcline.c if (!a2l->found) a2l 325 tools/perf/util/srcline.c while (bfd_find_inliner_info(a2l->abfd, &a2l->filename, a2l 326 tools/perf/util/srcline.c &a2l->funcname, &a2l->line) && a2l 329 tools/perf/util/srcline.c if (a2l->filename && !strlen(a2l->filename)) a2l 330 tools/perf/util/srcline.c a2l->filename = NULL; a2l 342 tools/perf/util/srcline.c *file = a2l->filename ? strdup(a2l->filename) : NULL; a2l 347 tools/perf/util/srcline.c *line = a2l->line; a2l 354 tools/perf/util/srcline.c struct a2l_data *a2l = dso->a2l; a2l 356 tools/perf/util/srcline.c if (!a2l) a2l 359 tools/perf/util/srcline.c addr2line_cleanup(a2l); a2l 361 tools/perf/util/srcline.c dso->a2l = NULL;