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