Lines Matching refs:elf

77 static int elf_getphdrnum(Elf *elf, size_t *dst)
82 ehdr = gelf_getehdr(elf, &gehdr);
93 static int elf_getshdrstrndx(Elf *elf __maybe_unused, size_t *dst __maybe_unused)
190 static size_t elf_addr_to_index(Elf *elf, GElf_Addr addr)
196 while ((sec = elf_nextscn(elf, sec)) != NULL) {
209 Elf_Scn *elf_section_by_name(Elf *elf, GElf_Ehdr *ep,
216 if (!elf_rawdata(elf_getscn(elf, ep->e_shstrndx), NULL))
219 while ((sec = elf_nextscn(elf, sec)) != NULL) {
223 str = elf_strptr(elf, ep->e_shstrndx, shp->sh_name);
235 static int elf_read_program_header(Elf *elf, u64 vaddr, GElf_Phdr *phdr)
240 if (elf_getphdrnum(elf, &phdrnum))
244 if (gelf_getphdr(elf, i, phdr) == NULL)
323 Elf *elf;
329 elf = ss->elf;
339 scn_plt_rel = elf_section_by_name(elf, &ehdr, &shdr_rel_plt,
342 scn_plt_rel = elf_section_by_name(elf, &ehdr, &shdr_rel_plt,
353 if (elf_section_by_name(elf, &ehdr, &shdr_plt, ".plt", NULL) == NULL)
368 scn_symstrs = elf_getscn(elf, shdr_dynsym.sh_link);
483 static int elf_read_build_id(Elf *elf, void *bf, size_t size)
496 ek = elf_kind(elf);
500 if (gelf_getehdr(elf, &ehdr) == NULL) {
501 pr_err("%s: cannot get elf header.\n", __func__);
512 sec = elf_section_by_name(elf, &ehdr, &shdr,
517 sec = elf_section_by_name(elf, &ehdr, &shdr,
522 sec = elf_section_by_name(elf, &ehdr, &shdr,
597 Elf *elf;
606 elf = elf_begin(fd, PERF_ELF_C_READ_MMAP, NULL);
607 if (elf == NULL) {
612 err = elf_read_build_id(elf, bid->data, size);
616 elf_end(elf);
717 Elf *elf;
728 elf = elf_begin(fd, PERF_ELF_C_READ_MMAP, NULL);
729 if (elf == NULL) {
734 ek = elf_kind(elf);
738 if (gelf_getehdr(elf, &ehdr) == NULL) {
739 pr_err("%s: cannot get elf header.\n", __func__);
743 sec = elf_section_by_name(elf, &ehdr, &shdr,
758 elf_end(elf);
807 elf_end(ss->elf);
826 Elf *elf;
843 elf = elf_begin(fd, PERF_ELF_C_READ_MMAP, NULL);
844 if (elf == NULL) {
850 if (gelf_getehdr(elf, &ehdr) == NULL) {
852 pr_debug("%s: cannot get elf header.\n", __func__);
867 size = elf_read_build_id(elf, build_id, BUILD_ID_SIZE);
881 ss->is_64_bit = (gelf_getclass(elf) == ELFCLASS64);
883 ss->symtab = elf_section_by_name(elf, &ehdr, &ss->symshdr, ".symtab",
889 ss->dynsym = elf_section_by_name(elf, &ehdr, &ss->dynshdr, ".dynsym",
895 ss->opdsec = elf_section_by_name(elf, &ehdr, &ss->opdshdr, ".opd",
911 ss->elf = elf;
919 elf_end(elf);
1083 Elf *elf;
1114 elf = syms_ss->elf;
1119 if (elf_section_by_name(runtime_ss->elf, &runtime_ss->ehdr, &tshdr,
1130 sec = elf_getscn(elf, shdr.sh_link);
1138 sec_strndx = elf_getscn(runtime_ss->elf, runtime_ss->ehdr.e_shstrndx);
1207 sym.st_shndx = elf_addr_to_index(runtime_ss->elf,
1224 sec = elf_getscn(runtime_ss->elf, sym.st_shndx);
1250 if (elf_read_program_header(runtime_ss->elf,
1313 static int elf_read_maps(Elf *elf, bool exe, mapfn_t mapfn, void *data)
1320 if (elf_getphdrnum(elf, &phdrnum))
1324 if (gelf_getphdr(elf, i, &phdr) == NULL)
1349 Elf *elf;
1351 elf = elf_begin(fd, PERF_ELF_C_READ_MMAP, NULL);
1352 if (elf == NULL)
1356 *is_64_bit = (gelf_getclass(elf) == ELFCLASS64);
1358 err = elf_read_maps(elf, exe, mapfn, data);
1360 elf_end(elf);
1369 Elf *elf;
1371 elf = elf_begin(fd, PERF_ELF_C_READ_MMAP, NULL);
1372 if (elf == NULL)
1375 ek = elf_kind(elf);
1379 if (gelf_getclass(elf) == ELFCLASS64) {
1384 if (gelf_getehdr(elf, &ehdr) == NULL)
1392 elf_end(elf);
1441 Elf *elf;
1453 kcore->elf = elf_begin(kcore->fd, ELF_C_READ, NULL);
1454 if (!kcore->elf)
1457 kcore->elfclass = gelf_getclass(kcore->elf);
1461 ehdr = gelf_getehdr(kcore->elf, &kcore->ehdr);
1468 elf_end(kcore->elf);
1486 kcore->elf = elf_begin(kcore->fd, ELF_C_WRITE, NULL);
1487 if (!kcore->elf)
1490 if (!gelf_newehdr(kcore->elf, elfclass))
1498 elf_end(kcore->elf);
1507 elf_end(kcore->elf);
1538 if (!gelf_update_ehdr(to->elf, ehdr))
1541 if (!gelf_newphdr(to->elf, count))
1561 if (!gelf_update_phdr(kcore->elf, idx, &phdr))
1569 return elf_update(kcore->elf, ELF_C_WRITE);
1781 static int kcore_copy__read_maps(struct kcore_copy_info *kci, Elf *elf)
1783 if (elf_read_maps(elf, true, kcore_copy__read_map, kci) < 0)
1848 Elf *elf)
1886 if (kcore_copy__read_maps(kci, elf))
2036 if (kcore_copy__calc_maps(&kci, from_dir, kcore.elf))
2045 offset = gelf_fsize(extract.elf, ELF_T_EHDR, 1, EV_CURRENT) +
2046 gelf_fsize(extract.elf, ELF_T_PHDR, kci.phnum, EV_CURRENT);
2169 * @elf: elf of the opened file
2175 * Responsible for parsing the @data in section .note.stapsdt in @elf and
2178 static int populate_sdt_note(Elf **elf, const char *data, size_t len,
2194 .d_size = gelf_fsize((*elf), ELF_T_ADDR, NR_ADDR, EV_CURRENT),
2215 if (gelf_xlatetom(*elf, &dst, &src,
2216 elf_getident(*elf, NULL)[EI_DATA]) == NULL) {
2258 if (gelf_getclass(*elf) == ELFCLASS32) {
2266 if (!gelf_getehdr(*elf, &ehdr)) {
2267 pr_debug("%s : cannot get elf header.\n", __func__);
2279 if (elf_section_by_name(*elf, &ehdr, &shdr, SDT_BASE_SCN, NULL))
2283 if (elf_section_by_name(*elf, &ehdr, &shdr, SDT_PROBES_SCN, NULL))
2303 * @elf : elf to look into
2306 * Scans the sections in 'elf' for the section
2310 static int construct_sdt_notes_list(Elf *elf, struct list_head *sdt_notes)
2321 if (gelf_getehdr(elf, &ehdr) == NULL) {
2325 if (elf_getshdrstrndx(elf, &shstrndx) != 0) {
2331 scn = elf_section_by_name(elf, &ehdr, &shdr, SDT_NOTE_SCN, NULL);
2354 ret = populate_sdt_note(&elf, ((data->d_buf) + desc_off),
2377 Elf *elf;
2384 elf = elf_begin(fd, PERF_ELF_C_READ_MMAP, NULL);
2385 if (!elf) {
2389 ret = construct_sdt_notes_list(elf, head);
2390 elf_end(elf);