Lines Matching refs:elf

67 static int elf_getphdrnum(Elf *elf, size_t *dst)
72 ehdr = gelf_getehdr(elf, &gehdr);
83 static int elf_getshdrstrndx(Elf *elf __maybe_unused, size_t *dst __maybe_unused)
180 static size_t elf_addr_to_index(Elf *elf, GElf_Addr addr)
186 while ((sec = elf_nextscn(elf, sec)) != NULL) {
199 Elf_Scn *elf_section_by_name(Elf *elf, GElf_Ehdr *ep,
206 if (!elf_rawdata(elf_getscn(elf, ep->e_shstrndx), NULL))
209 while ((sec = elf_nextscn(elf, sec)) != NULL) {
213 str = elf_strptr(elf, ep->e_shstrndx, shp->sh_name);
228 Elf *elf;
237 elf = elf_begin(fd, PERF_ELF_C_READ_MMAP, NULL);
238 if (elf == NULL)
241 if (gelf_getehdr(elf, &ehdr) == NULL)
244 found = !!elf_section_by_name(elf, &ehdr, &shdr, sec, NULL);
247 elf_end(elf);
253 static int elf_read_program_header(Elf *elf, u64 vaddr, GElf_Phdr *phdr)
258 if (elf_getphdrnum(elf, &phdrnum))
262 if (gelf_getphdr(elf, i, phdr) == NULL)
402 static bool get_ifunc_name(Elf *elf, struct dso *dso, GElf_Ehdr *ehdr,
412 if (elf_read_program_header(elf, addr, &phdr))
538 static void get_rela_dyn_info(Elf *elf, GElf_Ehdr *ehdr, struct rela_dyn_info *di, Elf_Scn *scn)
545 scn = elf_section_by_name(elf, ehdr, &rela_dyn_shdr, ".rela.dyn", NULL);
552 scn = elf_getscn(elf, rela_dyn_shdr.sh_link);
557 di->dynstr_data = elf_getdata(elf_getscn(elf, shdr.sh_link), NULL);
632 static int dso__synthesize_plt_got_symbols(struct dso *dso, Elf *elf,
643 scn = elf_section_by_name(elf, ehdr, &shdr, ".plt.got", NULL);
648 get_rela_dyn_info(elf, ehdr, &di, scn);
683 Elf *elf;
688 elf = ss->elf;
691 if (!elf_section_by_name(elf, &ehdr, &shdr_plt, ".plt", NULL))
714 dso__synthesize_plt_got_symbols(dso, elf, &ehdr, sympltname, sizeof(sympltname)))
719 elf_section_by_name(elf, &ehdr, &plt_sec_shdr, ".plt.sec", NULL)) {
732 scn_plt_rel = elf_section_by_name(elf, &ehdr, &shdr_rel_plt,
735 scn_plt_rel = elf_section_by_name(elf, &ehdr, &shdr_rel_plt,
777 scn_symstrs = elf_getscn(elf, shdr_dynsym.sh_link);
822 else if (!get_ifunc_name(elf, dso, &ehdr, &ri, sympltname, sizeof(sympltname)))
856 static int elf_read_build_id(Elf *elf, void *bf, size_t size)
869 ek = elf_kind(elf);
873 if (gelf_getehdr(elf, &ehdr) == NULL) {
874 pr_err("%s: cannot get elf header.\n", __func__);
885 sec = elf_section_by_name(elf, &ehdr, &shdr,
890 sec = elf_section_by_name(elf, &ehdr, &shdr,
895 sec = elf_section_by_name(elf, &ehdr, &shdr,
970 Elf *elf;
979 elf = elf_begin(fd, PERF_ELF_C_READ_MMAP, NULL);
980 if (elf == NULL) {
985 err = elf_read_build_id(elf, bid->data, size);
989 elf_end(elf);
1123 Elf *elf;
1134 elf = elf_begin(fd, PERF_ELF_C_READ_MMAP, NULL);
1135 if (elf == NULL) {
1140 ek = elf_kind(elf);
1144 if (gelf_getehdr(elf, &ehdr) == NULL) {
1145 pr_err("%s: cannot get elf header.\n", __func__);
1149 sec = elf_section_by_name(elf, &ehdr, &shdr,
1164 elf_end(elf);
1213 elf_end(ss->elf);
1232 Elf *elf;
1249 elf = elf_begin(fd, PERF_ELF_C_READ_MMAP, NULL);
1250 if (elf == NULL) {
1256 if (gelf_getehdr(elf, &ehdr) == NULL) {
1258 pr_debug("%s: cannot get elf header.\n", __func__);
1273 size = elf_read_build_id(elf, build_id, BUILD_ID_SIZE);
1287 ss->is_64_bit = (gelf_getclass(elf) == ELFCLASS64);
1290 ss->symtab = elf_section_by_name(elf, &ehdr, &ss->symshdr, ".symtab",
1296 ss->dynsym = elf_section_by_name(elf, &ehdr, &ss->dynshdr, ".dynsym",
1302 ss->opdsec = elf_section_by_name(elf, &ehdr, &ss->opdshdr, ".opd",
1318 ss->elf = elf;
1326 elf_end(elf);
1499 Elf *elf;
1506 elf = syms_ss->elf;
1516 if (elf_section_by_name(runtime_ss->elf, &runtime_ss->ehdr, &tshdr,
1527 sec = elf_getscn(elf, shdr.sh_link);
1535 sec_strndx = elf_getscn(runtime_ss->elf, runtime_ss->ehdr.e_shstrndx);
1543 sec_strndx = elf_getscn(elf, ehdr.e_shstrndx);
1611 sym.st_shndx = elf_addr_to_index(runtime_ss->elf,
1628 sec = elf_getscn(syms_ss->elf, sym.st_shndx);
1654 sec = elf_getscn(runtime_ss->elf, sym.st_shndx);
1682 if (elf_read_program_header(runtime_ss->elf,
1789 static int elf_read_maps(Elf *elf, bool exe, mapfn_t mapfn, void *data)
1796 if (elf_getphdrnum(elf, &phdrnum))
1800 if (gelf_getphdr(elf, i, &phdr) == NULL)
1825 Elf *elf;
1827 elf = elf_begin(fd, PERF_ELF_C_READ_MMAP, NULL);
1828 if (elf == NULL)
1832 *is_64_bit = (gelf_getclass(elf) == ELFCLASS64);
1834 err = elf_read_maps(elf, exe, mapfn, data);
1836 elf_end(elf);
1845 Elf *elf;
1847 elf = elf_begin(fd, PERF_ELF_C_READ_MMAP, NULL);
1848 if (elf == NULL)
1851 ek = elf_kind(elf);
1855 if (gelf_getclass(elf) == ELFCLASS64) {
1860 if (gelf_getehdr(elf, &ehdr) == NULL)
1868 elf_end(elf);
1917 Elf *elf;
1929 kcore->elf = elf_begin(kcore->fd, ELF_C_READ, NULL);
1930 if (!kcore->elf)
1933 kcore->elfclass = gelf_getclass(kcore->elf);
1937 ehdr = gelf_getehdr(kcore->elf, &kcore->ehdr);
1944 elf_end(kcore->elf);
1962 kcore->elf = elf_begin(kcore->fd, ELF_C_WRITE, NULL);
1963 if (!kcore->elf)
1966 if (!gelf_newehdr(kcore->elf, elfclass))
1974 elf_end(kcore->elf);
1983 elf_end(kcore->elf);
2014 if (!gelf_update_ehdr(to->elf, ehdr))
2017 if (!gelf_newphdr(to->elf, count))
2037 if (!gelf_update_phdr(kcore->elf, idx, &phdr))
2045 return elf_update(kcore->elf, ELF_C_WRITE);
2257 static int kcore_copy__read_maps(struct kcore_copy_info *kci, Elf *elf)
2259 if (elf_read_maps(elf, true, kcore_copy__read_map, kci) < 0)
2324 Elf *elf)
2362 if (kcore_copy__read_maps(kci, elf))
2512 if (kcore_copy__calc_maps(&kci, from_dir, kcore.elf))
2521 offset = gelf_fsize(extract.elf, ELF_T_EHDR, 1, EV_CURRENT) +
2522 gelf_fsize(extract.elf, ELF_T_PHDR, kci.phnum, EV_CURRENT);
2645 * @elf: elf of the opened file
2651 * Responsible for parsing the @data in section .note.stapsdt in @elf and
2654 static int populate_sdt_note(Elf **elf, const char *data, size_t len,
2670 .d_size = gelf_fsize((*elf), ELF_T_ADDR, NR_ADDR, EV_CURRENT),
2691 if (gelf_xlatetom(*elf, &dst, &src,
2692 elf_getident(*elf, NULL)[EI_DATA]) == NULL) {
2734 if (gelf_getclass(*elf) == ELFCLASS32) {
2742 if (!gelf_getehdr(*elf, &ehdr)) {
2743 pr_debug("%s : cannot get elf header.\n", __func__);
2755 if (elf_section_by_name(*elf, &ehdr, &shdr, SDT_BASE_SCN, NULL))
2759 if (elf_section_by_name(*elf, &ehdr, &shdr, SDT_PROBES_SCN, NULL))
2779 * @elf : elf to look into
2782 * Scans the sections in 'elf' for the section
2786 static int construct_sdt_notes_list(Elf *elf, struct list_head *sdt_notes)
2797 if (gelf_getehdr(elf, &ehdr) == NULL) {
2801 if (elf_getshdrstrndx(elf, &shstrndx) != 0) {
2807 scn = elf_section_by_name(elf, &ehdr, &shdr, SDT_NOTE_SCN, NULL);
2830 ret = populate_sdt_note(&elf, ((data->d_buf) + desc_off),
2853 Elf *elf;
2860 elf = elf_begin(fd, PERF_ELF_C_READ_MMAP, NULL);
2861 if (!elf) {
2865 ret = construct_sdt_notes_list(elf, head);
2866 elf_end(elf);