Lines Matching defs:elf
41 #include <elf-knowledge.h>
116 static int handle_elf (int fd, Elf *elf, const char *prefix,
120 static int handle_ar (int fd, Elf *elf, const char *prefix, const char *fname,
371 secndx_name (Elf *elf, size_t ndx)
375 Elf_Scn *sec = elf_getscn (elf, ndx);
377 if (shdr == NULL || elf_getshdrstrndx (elf, &shstrndx) < 0)
379 return elf_strptr (elf, shstrndx, shdr->sh_name) ?: "???";
384 get_xndxdata (Elf *elf, Elf_Scn *symscn)
393 while ((xndxscn = elf_nextscn (elf, xndxscn)) != NULL)
414 update_shdrstrndx (Elf *elf, size_t shdrstrndx)
417 if (gelf_getehdr (elf, &ehdr) == 0)
425 Elf_Scn *scn0 = elf_getscn (elf, 0);
436 if (unlikely (gelf_update_ehdr (elf, &ehdr) == 0))
446 relocate (Elf *elf, GElf_Addr offset, const GElf_Sxword addend,
516 Elf_Data *d = gelf_xlatetom (elf, &tmpdata,
529 Elf_Data *d = gelf_xlatetom (elf, &tmpdata,
553 Elf_Data *s = gelf_xlatetof (elf, &rdata,
567 remove_debug_relocations (Ebl *ebl, Elf *elf, GElf_Ehdr *ehdr,
571 while ((scn = elf_nextscn (elf, scn)) != NULL)
573 /* We need the actual section and header from the elf
584 Elf_Scn *tscn = elf_getscn (elf, shdr->sh_info);
593 const char *tname = elf_strptr (elf, shstrndx,
634 Elf_Scn * symscn = elf_getscn (elf, symt);
636 xndxdata = get_xndxdata (elf, symscn);
698 bool dbg_scn = ebl_debugscn_p (ebl, secndx_name (elf, sec));
703 if (! relocate (elf, offset, addend,
793 Elf *elf = elf_begin (fd, output_fname == NULL ? ELF_C_RDWR : ELF_C_READ,
796 switch (elf_kind (elf))
799 result = handle_elf (fd, elf, NULL, fname, st.st_mode & ACCESSPERMS,
817 result = handle_ar (fd, elf, NULL, fname,
832 if (unlikely (elf_end (elf) != 0))
842 handle_debug_relocs (Elf *elf, Ebl *ebl, Elf *new_elf,
857 while ((scn = elf_nextscn (elf, scn)) != NULL)
981 handle_elf (int fd, Elf *elf, const char *prefix, const char *fname,
1054 ebl = ebl_openbackend (elf);
1085 GElf_Ehdr *ehdr = gelf_getehdr (elf, &ehdr_mem);
1090 if (unlikely (elf_getshdrstrndx (elf, &shstrndx) < 0))
1098 if (elf_getphdrnum (elf, &phnum) != 0)
1111 newelf = elf_clone (elf, ELF_C_EMPTY);
1113 if (unlikely (gelf_newehdr (newelf, gelf_getclass (elf)) == 0))
1133 GElf_Phdr *phdr = gelf_getphdr (elf, cnt, &phdr_mem);
1142 if (handle_debug_relocs (elf, ebl, newelf, ehdr, fname, shstrndx,
1156 if (unlikely (gelf_newehdr (debugelf, gelf_getclass (elf)) == 0))
1176 GElf_Phdr *phdr = gelf_getphdr (elf, cnt, &phdr_mem);
1186 if (unlikely (elf_getshdrnum (elf, &shnum) < 0))
1219 while ((scn = elf_nextscn (elf, scn)) != NULL)
1243 shdr_info[cnt].name = elf_strptr (elf, shstrndx,
1497 size_t elsize = gelf_fsize (elf, ELF_T_SYM, 1, EV_CURRENT);
1538 elf_strptr (elf,
1702 if (elf_getshdrstrndx (elf, &shdrstrndx) < 0)
1949 size_t elsize = gelf_fsize (elf, ELF_T_SYM, 1, EV_CURRENT);
2103 elf_strptr (elf, sh_link,
2214 size_t symsize = gelf_fsize (elf, ELF_T_SYM, 1, EV_CURRENT);
2282 size_t elsize = gelf_fsize (elf, ELF_T_SYM, 1, EV_CURRENT);
2315 const char *name = elf_strptr (elf, strshndx,
2341 size_t elsize = gelf_fsize (elf, ELF_T_SYM, 1, EV_CURRENT);
2376 const char *name = elf_strptr (elf, strshndx,
2407 size_t symz = gelf_fsize (elf, ELF_T_SYM, 1, EV_CURRENT);
2418 size_t elsize = gelf_fsize (elf, verd->d_type, 1, EV_CURRENT);
2430 / gelf_fsize (elf, symd->d_type, 1,
2444 size_t symsz = gelf_fsize (elf, ELF_T_SYM, 1, EV_CURRENT);
2537 const size_t offsize = gelf_fsize (elf, ELF_T_OFF, 1, EV_CURRENT);
2540 newehdr->e_shentsize = gelf_fsize (elf, ELF_T_SHDR, 1, EV_CURRENT);
2560 if (elf_cntl (elf, ELF_C_FDDONE) != 0)
2718 handle_ar (int fd, Elf *elf, const char *prefix, const char *fname,
2739 while ((subelf = elf_begin (fd, cmd, elf)) != NULL)