Lines Matching refs:a2l
51 static int slurp_symtab(bfd *abfd, struct a2l_data *a2l) in slurp_symtab() argument
80 a2l->syms = syms; in slurp_symtab()
88 struct a2l_data *a2l = data; in find_address_in_section() local
90 if (a2l->found) in find_address_in_section()
96 pc = a2l->addr; in find_address_in_section()
103 a2l->found = bfd_find_nearest_line(abfd, section, a2l->syms, pc - vma, in find_address_in_section()
104 &a2l->filename, &a2l->funcname, in find_address_in_section()
105 &a2l->line); in find_address_in_section()
111 struct a2l_data *a2l = NULL; in addr2line_init() local
120 a2l = zalloc(sizeof(*a2l)); in addr2line_init()
121 if (a2l == NULL) in addr2line_init()
124 a2l->abfd = abfd; in addr2line_init()
125 a2l->input = strdup(path); in addr2line_init()
126 if (a2l->input == NULL) in addr2line_init()
129 if (slurp_symtab(abfd, a2l)) in addr2line_init()
132 return a2l; in addr2line_init()
135 if (a2l) { in addr2line_init()
136 zfree((char **)&a2l->input); in addr2line_init()
137 free(a2l); in addr2line_init()
143 static void addr2line_cleanup(struct a2l_data *a2l) in addr2line_cleanup() argument
145 if (a2l->abfd) in addr2line_cleanup()
146 bfd_close(a2l->abfd); in addr2line_cleanup()
147 zfree((char **)&a2l->input); in addr2line_cleanup()
148 zfree(&a2l->syms); in addr2line_cleanup()
149 free(a2l); in addr2line_cleanup()
159 struct a2l_data *a2l = dso->a2l; in addr2line() local
161 if (!a2l) { in addr2line()
162 dso->a2l = addr2line_init(dso_name); in addr2line()
163 a2l = dso->a2l; in addr2line()
166 if (a2l == NULL) { in addr2line()
171 a2l->addr = addr; in addr2line()
172 a2l->found = false; in addr2line()
174 bfd_map_over_sections(a2l->abfd, find_address_in_section, a2l); in addr2line()
176 if (a2l->found && unwind_inlines) { in addr2line()
179 while (bfd_find_inliner_info(a2l->abfd, &a2l->filename, in addr2line()
180 &a2l->funcname, &a2l->line) && in addr2line()
185 if (a2l->found && a2l->filename) { in addr2line()
186 *file = strdup(a2l->filename); in addr2line()
187 *line = a2l->line; in addr2line()
198 struct a2l_data *a2l = dso->a2l; in dso__free_a2l() local
200 if (!a2l) in dso__free_a2l()
203 addr2line_cleanup(a2l); in dso__free_a2l()
205 dso->a2l = NULL; in dso__free_a2l()