Lines Matching refs:elf
75 static int elf_getphdrnum(Elf *elf, size_t *dst) in elf_getphdrnum() argument
80 ehdr = gelf_getehdr(elf, &gehdr); in elf_getphdrnum()
91 static int elf_getshdrstrndx(Elf *elf __maybe_unused, size_t *dst __maybe_unused) in elf_getshdrstrndx()
188 static size_t elf_addr_to_index(Elf *elf, GElf_Addr addr) in elf_addr_to_index() argument
194 while ((sec = elf_nextscn(elf, sec)) != NULL) { in elf_addr_to_index()
207 Elf_Scn *elf_section_by_name(Elf *elf, GElf_Ehdr *ep, in elf_section_by_name() argument
214 if (!elf_rawdata(elf_getscn(elf, ep->e_shstrndx), NULL)) in elf_section_by_name()
217 while ((sec = elf_nextscn(elf, sec)) != NULL) { in elf_section_by_name()
221 str = elf_strptr(elf, ep->e_shstrndx, shp->sh_name); in elf_section_by_name()
294 Elf *elf; in dso__synthesize_plt_symbols() local
300 elf = ss->elf; in dso__synthesize_plt_symbols()
310 scn_plt_rel = elf_section_by_name(elf, &ehdr, &shdr_rel_plt, in dso__synthesize_plt_symbols()
313 scn_plt_rel = elf_section_by_name(elf, &ehdr, &shdr_rel_plt, in dso__synthesize_plt_symbols()
324 if (elf_section_by_name(elf, &ehdr, &shdr_plt, ".plt", NULL) == NULL) in dso__synthesize_plt_symbols()
339 scn_symstrs = elf_getscn(elf, shdr_dynsym.sh_link); in dso__synthesize_plt_symbols()
454 static int elf_read_build_id(Elf *elf, void *bf, size_t size) in elf_read_build_id() argument
467 ek = elf_kind(elf); in elf_read_build_id()
471 if (gelf_getehdr(elf, &ehdr) == NULL) { in elf_read_build_id()
483 sec = elf_section_by_name(elf, &ehdr, &shdr, in elf_read_build_id()
488 sec = elf_section_by_name(elf, &ehdr, &shdr, in elf_read_build_id()
493 sec = elf_section_by_name(elf, &ehdr, &shdr, in elf_read_build_id()
536 Elf *elf; in filename__read_build_id() local
545 elf = elf_begin(fd, PERF_ELF_C_READ_MMAP, NULL); in filename__read_build_id()
546 if (elf == NULL) { in filename__read_build_id()
551 err = elf_read_build_id(elf, bf, size); in filename__read_build_id()
553 elf_end(elf); in filename__read_build_id()
615 Elf *elf; in filename__read_debuglink() local
626 elf = elf_begin(fd, PERF_ELF_C_READ_MMAP, NULL); in filename__read_debuglink()
627 if (elf == NULL) { in filename__read_debuglink()
632 ek = elf_kind(elf); in filename__read_debuglink()
636 if (gelf_getehdr(elf, &ehdr) == NULL) { in filename__read_debuglink()
641 sec = elf_section_by_name(elf, &ehdr, &shdr, in filename__read_debuglink()
656 elf_end(elf); in filename__read_debuglink()
703 elf_end(ss->elf); in symsrc__destroy()
716 Elf *elf; in symsrc__init() local
733 elf = elf_begin(fd, PERF_ELF_C_READ_MMAP, NULL); in symsrc__init()
734 if (elf == NULL) { in symsrc__init()
740 if (gelf_getehdr(elf, &ehdr) == NULL) { in symsrc__init()
755 if (elf_read_build_id(elf, build_id, BUILD_ID_SIZE) < 0) { in symsrc__init()
767 ss->is_64_bit = (gelf_getclass(elf) == ELFCLASS64); in symsrc__init()
769 ss->symtab = elf_section_by_name(elf, &ehdr, &ss->symshdr, ".symtab", in symsrc__init()
775 ss->dynsym = elf_section_by_name(elf, &ehdr, &ss->dynshdr, ".dynsym", in symsrc__init()
781 ss->opdsec = elf_section_by_name(elf, &ehdr, &ss->opdshdr, ".opd", in symsrc__init()
797 ss->elf = elf; in symsrc__init()
805 elf_end(elf); in symsrc__init()
966 Elf *elf; in dso__load_sym() local
997 elf = syms_ss->elf; in dso__load_sym()
1002 if (elf_section_by_name(runtime_ss->elf, &runtime_ss->ehdr, &tshdr, in dso__load_sym()
1013 sec = elf_getscn(elf, shdr.sh_link); in dso__load_sym()
1021 sec_strndx = elf_getscn(runtime_ss->elf, runtime_ss->ehdr.e_shstrndx); in dso__load_sym()
1090 sym.st_shndx = elf_addr_to_index(runtime_ss->elf, in dso__load_sym()
1106 sec = elf_getscn(runtime_ss->elf, sym.st_shndx); in dso__load_sym()
1173 static int elf_read_maps(Elf *elf, bool exe, mapfn_t mapfn, void *data) in elf_read_maps() argument
1180 if (elf_getphdrnum(elf, &phdrnum)) in elf_read_maps()
1184 if (gelf_getphdr(elf, i, &phdr) == NULL) in elf_read_maps()
1209 Elf *elf; in file__read_maps() local
1211 elf = elf_begin(fd, PERF_ELF_C_READ_MMAP, NULL); in file__read_maps()
1212 if (elf == NULL) in file__read_maps()
1216 *is_64_bit = (gelf_getclass(elf) == ELFCLASS64); in file__read_maps()
1218 err = elf_read_maps(elf, exe, mapfn, data); in file__read_maps()
1220 elf_end(elf); in file__read_maps()
1229 Elf *elf; in dso__type_fd() local
1231 elf = elf_begin(fd, PERF_ELF_C_READ_MMAP, NULL); in dso__type_fd()
1232 if (elf == NULL) in dso__type_fd()
1235 ek = elf_kind(elf); in dso__type_fd()
1239 if (gelf_getclass(elf) == ELFCLASS64) { in dso__type_fd()
1244 if (gelf_getehdr(elf, &ehdr) == NULL) in dso__type_fd()
1252 elf_end(elf); in dso__type_fd()
1301 Elf *elf; member
1313 kcore->elf = elf_begin(kcore->fd, ELF_C_READ, NULL); in kcore__open()
1314 if (!kcore->elf) in kcore__open()
1317 kcore->elfclass = gelf_getclass(kcore->elf); in kcore__open()
1321 ehdr = gelf_getehdr(kcore->elf, &kcore->ehdr); in kcore__open()
1328 elf_end(kcore->elf); in kcore__open()
1346 kcore->elf = elf_begin(kcore->fd, ELF_C_WRITE, NULL); in kcore__init()
1347 if (!kcore->elf) in kcore__init()
1350 if (!gelf_newehdr(kcore->elf, elfclass)) in kcore__init()
1358 elf_end(kcore->elf); in kcore__init()
1367 elf_end(kcore->elf); in kcore__close()
1398 if (!gelf_update_ehdr(to->elf, ehdr)) in kcore__copy_hdr()
1401 if (!gelf_newphdr(to->elf, count)) in kcore__copy_hdr()
1421 if (!gelf_update_phdr(kcore->elf, idx, &phdr)) in kcore__add_phdr()
1429 return elf_update(kcore->elf, ELF_C_WRITE); in kcore__write()
1638 static int kcore_copy__read_maps(struct kcore_copy_info *kci, Elf *elf) in kcore_copy__read_maps() argument
1640 if (elf_read_maps(elf, true, kcore_copy__read_map, kci) < 0) in kcore_copy__read_maps()
1705 Elf *elf) in kcore_copy__calc_maps() argument
1739 if (kcore_copy__read_maps(kci, elf)) in kcore_copy__calc_maps()
1889 if (kcore_copy__calc_maps(&kci, from_dir, kcore.elf)) in kcore_copy()
1898 offset = gelf_fsize(extract.elf, ELF_T_EHDR, 1, EV_CURRENT) + in kcore_copy()
1899 gelf_fsize(extract.elf, ELF_T_PHDR, kci.phnum, EV_CURRENT); in kcore_copy()
2034 static int populate_sdt_note(Elf **elf, const char *data, size_t len, in populate_sdt_note() argument
2050 .d_size = gelf_fsize((*elf), ELF_T_ADDR, NR_ADDR, EV_CURRENT), in populate_sdt_note()
2071 if (gelf_xlatetom(*elf, &dst, &src, in populate_sdt_note()
2072 elf_getident(*elf, NULL)[EI_DATA]) == NULL) { in populate_sdt_note()
2114 if (gelf_getclass(*elf) == ELFCLASS32) { in populate_sdt_note()
2122 if (!gelf_getehdr(*elf, &ehdr)) { in populate_sdt_note()
2135 if (elf_section_by_name(*elf, &ehdr, &shdr, SDT_BASE_SCN, NULL)) in populate_sdt_note()
2139 if (elf_section_by_name(*elf, &ehdr, &shdr, SDT_PROBES_SCN, NULL)) in populate_sdt_note()
2166 static int construct_sdt_notes_list(Elf *elf, struct list_head *sdt_notes) in construct_sdt_notes_list() argument
2177 if (gelf_getehdr(elf, &ehdr) == NULL) { in construct_sdt_notes_list()
2181 if (elf_getshdrstrndx(elf, &shstrndx) != 0) { in construct_sdt_notes_list()
2187 scn = elf_section_by_name(elf, &ehdr, &shdr, SDT_NOTE_SCN, NULL); in construct_sdt_notes_list()
2210 ret = populate_sdt_note(&elf, ((data->d_buf) + desc_off), in construct_sdt_notes_list()
2233 Elf *elf; in get_sdt_note_list() local
2240 elf = elf_begin(fd, PERF_ELF_C_READ_MMAP, NULL); in get_sdt_note_list()
2241 if (!elf) { in get_sdt_note_list()
2245 ret = construct_sdt_notes_list(elf, head); in get_sdt_note_list()
2246 elf_end(elf); in get_sdt_note_list()