Lines Matching refs:dso

284 static int unwind_spec_ehframe(struct dso *dso, struct machine *machine,  in unwind_spec_ehframe()  argument
292 r = dso__data_read_offset(dso, machine, offset, in unwind_spec_ehframe()
306 struct dso *dso; member
315 if (map__dso(map) == args->dso && map__start(map) - map__pgoff(map) < args->base_addr) in read_unwind_spec_eh_frame_maps_cb()
322 static int read_unwind_spec_eh_frame(struct dso *dso, struct unwind_info *ui, in read_unwind_spec_eh_frame() argument
327 .dso = dso, in read_unwind_spec_eh_frame()
332 if (dso__data(dso)->eh_frame_hdr_offset == 0) { in read_unwind_spec_eh_frame()
333 if (!dso__data_get_fd(dso, ui->machine, &fd)) in read_unwind_spec_eh_frame()
338 &dso__data(dso)->eh_frame_hdr_addr, in read_unwind_spec_eh_frame()
339 &dso__data(dso)->eh_frame_hdr_offset); in read_unwind_spec_eh_frame()
340 dso__data(dso)->elf_base_addr = elf_base_address(fd); in read_unwind_spec_eh_frame()
341 dso__data_put_fd(dso); in read_unwind_spec_eh_frame()
342 if (ret || dso__data(dso)->eh_frame_hdr_offset == 0) in read_unwind_spec_eh_frame()
348 args.base_addr -= dso__data(dso)->elf_base_addr; in read_unwind_spec_eh_frame()
350 *segbase = args.base_addr + dso__data(dso)->eh_frame_hdr_addr; in read_unwind_spec_eh_frame()
351 ret = unwind_spec_ehframe(dso, ui->machine, dso__data(dso)->eh_frame_hdr_offset, in read_unwind_spec_eh_frame()
361 static int read_unwind_spec_debug_frame(struct dso *dso, in read_unwind_spec_debug_frame() argument
365 u64 ofs = dso__data(dso)->debug_frame_offset; in read_unwind_spec_debug_frame()
374 if (dso__data_get_fd(dso, machine, &fd)) { in read_unwind_spec_debug_frame()
376 dso__data_put_fd(dso); in read_unwind_spec_debug_frame()
380 fd = open(dso__symsrc_filename(dso), O_RDONLY); in read_unwind_spec_debug_frame()
397 dso, DSO_BINARY_TYPE__DEBUGLINK, in read_unwind_spec_debug_frame()
408 if (dso__symsrc_filename(dso) != NULL) { in read_unwind_spec_debug_frame()
412 dso__symsrc_filename(dso), in read_unwind_spec_debug_frame()
414 dso__free_symsrc_filename(dso); in read_unwind_spec_debug_frame()
416 dso__set_symsrc_filename(dso, debuglink); in read_unwind_spec_debug_frame()
422 dso__data(dso)->debug_frame_offset = ofs; in read_unwind_spec_debug_frame()
451 struct dso *dso; in find_proc_info() local
460 dso = map__dso(map); in find_proc_info()
461 if (!dso) { in find_proc_info()
466 pr_debug("unwind: find_proc_info dso %s\n", dso__name(dso)); in find_proc_info()
469 if (!read_unwind_spec_eh_frame(dso, ui, &table_data, &segbase, &fde_count)) { in find_proc_info()
485 !read_unwind_spec_debug_frame(dso, ui->machine, &segbase)) { in find_proc_info()
491 if (dso__data_get_fd(dso, ui->machine, &fd)) { in find_proc_info()
492 if (elf_is_exec(fd, dso__name(dso))) in find_proc_info()
494 dso__data_put_fd(dso); in find_proc_info()
497 symfile = dso__symsrc_filename(dso) ?: dso__name(dso); in find_proc_info()
548 struct dso *dso; in access_dso_mem() local
557 dso = map__dso(map); in access_dso_mem()
559 if (!dso) { in access_dso_mem()
564 size = dso__data_read_addr(dso, map, ui->machine, in access_dso_mem()