• Home
  • Raw
  • Download

Lines Matching refs:ebl

104 static void check_note_section (Ebl *ebl, GElf_Ehdr *ehdr,
319 section_name (Ebl *ebl, int idx) in section_name() argument
324 shdr = gelf_getshdr (elf_getscn (ebl->elf, idx), &shdr_mem); in section_name()
326 return elf_strptr (ebl->elf, shstrndx, shdr->sh_name); in section_name()
353 check_elf_header (Ebl *ebl, GElf_Ehdr *ehdr, size_t size) in check_elf_header() argument
386 ebl_osabi_name (ebl, ehdr->e_ident[EI_OSABI], buf, sizeof (buf))); in check_elf_header()
443 GElf_Shdr *shdr = gelf_getshdr (elf_getscn (ebl->elf, 0), &shdr_mem); in check_elf_header()
460 GElf_Shdr *shdr = gelf_getshdr (elf_getscn (ebl->elf, 0), &shdr_mem); in check_elf_header()
469 if (!ebl_machine_flag_check (ebl, ehdr->e_flags)) in check_elf_header()
471 ebl_machine_flag_name (ebl, ehdr->e_flags, buf, sizeof (buf))); in check_elf_header()
474 if (gelf_getclass (ebl->elf) == ELFCLASS32) in check_elf_header()
491 else if (gelf_getclass (ebl->elf) == ELFCLASS64) in check_elf_header()
514 check_scn_group (Ebl *ebl, int idx) in check_scn_group() argument
524 Elf_Scn *scn = elf_getscn (ebl->elf, cnt); in check_scn_group()
552 idx, section_name (ebl, idx)); in check_scn_group()
556 idx, section_name (ebl, idx), in check_scn_group()
557 cnt, section_name (ebl, cnt)); in check_scn_group()
563 check_symtab (Ebl *ebl, GElf_Ehdr *ehdr, GElf_Shdr *shdr, int idx) in check_symtab() argument
567 Elf_Data *data = elf_getdata (elf_getscn (ebl->elf, idx), NULL); in check_symtab()
571 idx, section_name (ebl, idx)); in check_symtab()
576 GElf_Shdr *strshdr = gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link), in check_symtab()
584 shdr->sh_link, section_name (ebl, shdr->sh_link), in check_symtab()
585 idx, section_name (ebl, idx)); in check_symtab()
596 Elf_Scn *xndxscn = elf_getscn (ebl->elf, cnt); in check_symtab()
608 idx, section_name (ebl, idx)); in check_symtab()
616 if (shdr->sh_entsize != gelf_fsize (ebl->elf, ELF_T_SYM, 1, EV_CURRENT)) in check_symtab()
619 idx, section_name (ebl, idx)); in check_symtab()
627 idx, section_name (ebl, idx), 0, elf_errmsg (-1)); in check_symtab()
632 idx, section_name (ebl, idx), "st_name"); in check_symtab()
635 idx, section_name (ebl, idx), "st_value"); in check_symtab()
638 idx, section_name (ebl, idx), "st_size"); in check_symtab()
641 idx, section_name (ebl, idx), "st_info"); in check_symtab()
644 idx, section_name (ebl, idx), "st_other"); in check_symtab()
647 idx, section_name (ebl, idx), "st_shndx"); in check_symtab()
651 xndxscnidx, section_name (ebl, xndxscnidx)); in check_symtab()
660 idx, section_name (ebl, idx), cnt, elf_errmsg (-1)); in check_symtab()
670 idx, section_name (ebl, idx), cnt); in check_symtab()
673 name = elf_strptr (ebl->elf, shdr->sh_link, sym->st_name); in check_symtab()
683 idx, section_name (ebl, idx), cnt); in check_symtab()
689 xndxscnidx, section_name (ebl, xndxscnidx), cnt, in check_symtab()
701 idx, section_name (ebl, idx), cnt); in check_symtab()
706 && !ebl_symbol_type_name (ebl, GELF_ST_TYPE (sym->st_info), NULL, 0)) in check_symtab()
708 idx, section_name (ebl, idx), cnt); in check_symtab()
713 idx, section_name (ebl, idx), cnt); in check_symtab()
721 idx, section_name (ebl, idx), cnt); in check_symtab()
725 idx, section_name (ebl, idx), cnt); in check_symtab()
729 idx, section_name (ebl, idx), cnt); in check_symtab()
736 destshdr = gelf_getshdr (elf_getscn (ebl->elf, xndx), &destshdr_mem); in check_symtab()
743 if (! ebl_check_special_symbol (ebl, ehdr, sym, name, in check_symtab()
752 || strcmp (section_name (ebl, idx), ".symtab") in check_symtab()
761 idx, section_name (ebl, idx), cnt); in check_symtab()
767 idx, section_name (ebl, idx), cnt, in check_symtab()
768 (int) xndx, section_name (ebl, xndx)); in check_symtab()
776 idx, section_name (ebl, idx), cnt, in check_symtab()
777 (int) xndx, section_name (ebl, xndx)); in check_symtab()
786 idx, section_name (ebl, idx), cnt, in check_symtab()
787 (int) xndx, section_name (ebl, xndx)); in check_symtab()
792 idx, section_name (ebl, idx), cnt, in check_symtab()
793 (int) xndx, section_name (ebl, xndx)); in check_symtab()
803 phdr = gelf_getphdr (ebl->elf, pcnt, &phdr_mem); in check_symtab()
813 idx, section_name (ebl, idx), cnt); in check_symtab()
821 idx, section_name (ebl, idx), cnt, in check_symtab()
822 (int) xndx, section_name (ebl, xndx)); in check_symtab()
828 idx, section_name (ebl, idx), cnt, in check_symtab()
829 (int) xndx, section_name (ebl, xndx)); in check_symtab()
835 idx, section_name (ebl, idx), cnt, in check_symtab()
836 (int) xndx, section_name (ebl, xndx)); in check_symtab()
848 idx, section_name (ebl, idx), cnt); in check_symtab()
855 idx, section_name (ebl, idx), cnt); in check_symtab()
862 idx, section_name (ebl, idx), cnt); in check_symtab()
871 GElf_Shdr *destshdr = gelf_getshdr (elf_getscn (ebl->elf, xndx), in check_symtab()
879 while ((gscn = elf_nextscn (ebl->elf, gscn)) != NULL) in check_symtab()
883 const char *sname = elf_strptr (ebl->elf, in check_symtab()
905 : elf_strptr (ebl->elf, ehdr->e_shstrndx, in check_symtab()
913 idx, section_name (ebl, idx), xndx); in check_symtab()
920 idx, section_name (ebl, idx), xndx, sname); in check_symtab()
925 if (!ebl_check_special_symbol (ebl, ehdr, sym, name, in check_symtab()
935 idx, section_name (ebl, idx), in check_symtab()
942 idx, section_name (ebl, idx), in check_symtab()
950 idx, section_name (ebl, idx)); in check_symtab()
959 GElf_Phdr *phdr = gelf_getphdr (ebl->elf, pcnt, &phdr_mem); in check_symtab()
966 idx, section_name (ebl, idx), in check_symtab()
973 idx, section_name (ebl, idx), in check_symtab()
986 is_rel_dyn (Ebl *ebl, const GElf_Ehdr *ehdr, int idx, const GElf_Shdr *shdr, in is_rel_dyn() argument
994 if (strcmp (section_name (ebl, idx), is_rela ? ".rela.dyn" : ".rel.dyn")) in is_rel_dyn()
1000 while ((scn = elf_nextscn (ebl->elf, scn)) != NULL) in is_rel_dyn()
1024 idx, section_name (ebl, idx)); in is_rel_dyn()
1033 idx, section_name (ebl, idx), in is_rel_dyn()
1038 Elf_Data *reldata = elf_getdata (elf_getscn (ebl->elf, in is_rel_dyn()
1052 if (ebl_relative_reloc_p (ebl, in is_rel_dyn()
1058 idx, section_name (ebl, idx), in is_rel_dyn()
1064 idx, section_name (ebl, idx), in is_rel_dyn()
1076 idx, section_name (ebl, idx)); in is_rel_dyn()
1085 idx, section_name (ebl, idx), in is_rel_dyn()
1090 Elf_Data *reldata = elf_getdata (elf_getscn (ebl->elf, in is_rel_dyn()
1104 if (ebl_relative_reloc_p (ebl, in is_rel_dyn()
1110 idx, section_name (ebl, idx), in is_rel_dyn()
1116 idx, section_name (ebl, idx), in is_rel_dyn()
1148 check_reloc_shdr (Ebl *ebl, const GElf_Ehdr *ehdr, const GElf_Shdr *shdr, in check_reloc_shdr() argument
1157 idx, section_name (ebl, idx)); in check_reloc_shdr()
1160 *destshdrp = gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_info), in check_reloc_shdr()
1167 reldyn = is_rel_dyn (ebl, ehdr, idx, shdr, true); in check_reloc_shdr()
1171 idx, section_name (ebl, idx)); in check_reloc_shdr()
1179 idx, section_name (ebl, idx)); in check_reloc_shdr()
1186 idx, section_name (ebl, idx)); in check_reloc_shdr()
1190 if (shdr->sh_entsize != gelf_fsize (ebl->elf, reltype, 1, EV_CURRENT)) in check_reloc_shdr()
1194 idx, section_name (ebl, idx)); in check_reloc_shdr()
1205 GElf_Phdr *phdr = gelf_getphdr (ebl->elf, i, &phdr_mem); in check_reloc_shdr()
1220 Elf_Scn *dynscn = gelf_offscn (ebl->elf, phdr->p_offset); in check_reloc_shdr()
1269 check_one_reloc (Ebl *ebl, GElf_Ehdr *ehdr, GElf_Shdr *relshdr, int idx, in check_one_reloc() argument
1277 if (!ebl_reloc_type_check (ebl, GELF_R_TYPE (r_info))) in check_one_reloc()
1279 idx, section_name (ebl, idx), cnt); in check_one_reloc()
1285 && !ebl_reloc_valid_use (ebl, GELF_R_TYPE (r_info))) in check_one_reloc()
1288 idx, section_name (ebl, idx), cnt); in check_one_reloc()
1292 * gelf_fsize (ebl->elf, ELF_T_SYM, 1, EV_CURRENT) in check_one_reloc()
1296 idx, section_name (ebl, idx), cnt); in check_one_reloc()
1299 if (ebl_none_reloc_p (ebl, GELF_R_TYPE (r_info))) in check_one_reloc()
1302 if (ebl_gotpc_reloc_check (ebl, GELF_R_TYPE (r_info))) in check_one_reloc()
1310 && (name = elf_strptr (ebl->elf, symshdr->sh_link, sym->st_name)) in check_one_reloc()
1314 idx, section_name (ebl, idx), cnt, in check_one_reloc()
1315 ebl_reloc_type_name (ebl, GELF_R_SYM (r_info), in check_one_reloc()
1331 idx, section_name (ebl, idx), cnt); in check_one_reloc()
1337 if (ebl_copy_reloc_p (ebl, GELF_R_TYPE (r_info)) in check_one_reloc()
1345 idx, section_name (ebl, idx), cnt, in check_one_reloc()
1346 ebl_symbol_type_name (ebl, GELF_ST_TYPE (sym->st_info), in check_one_reloc()
1366 idx, section_name (ebl, idx), cnt); in check_one_reloc()
1382 idx, section_name (ebl, idx)); in check_one_reloc()
1390 check_rela (Ebl *ebl, GElf_Ehdr *ehdr, GElf_Shdr *shdr, int idx) in check_rela() argument
1392 Elf_Data *data = elf_getdata (elf_getscn (ebl->elf, idx), NULL); in check_rela()
1396 idx, section_name (ebl, idx)); in check_rela()
1404 bool reldyn = check_reloc_shdr (ebl, ehdr, shdr, idx, ELF_T_RELA, &destshdr, in check_rela()
1407 Elf_Scn *symscn = elf_getscn (ebl->elf, shdr->sh_link); in check_rela()
1421 idx, section_name (ebl, idx), cnt, elf_errmsg (-1)); in check_rela()
1425 check_one_reloc (ebl, ehdr, shdr, idx, cnt, symshdr, symdata, in check_rela()
1440 check_rel (Ebl *ebl, GElf_Ehdr *ehdr, GElf_Shdr *shdr, int idx) in check_rel() argument
1442 Elf_Data *data = elf_getdata (elf_getscn (ebl->elf, idx), NULL); in check_rel()
1446 idx, section_name (ebl, idx)); in check_rel()
1454 bool reldyn = check_reloc_shdr (ebl, ehdr, shdr, idx, ELF_T_REL, &destshdr, in check_rel()
1457 Elf_Scn *symscn = elf_getscn (ebl->elf, shdr->sh_link); in check_rel()
1471 idx, section_name (ebl, idx), cnt, elf_errmsg (-1)); in check_rel()
1475 check_one_reloc (ebl, ehdr, shdr, idx, cnt, symshdr, symdata, in check_rel()
1494 check_dynamic (Ebl *ebl, GElf_Ehdr *ehdr, GElf_Shdr *shdr, int idx) in check_dynamic() argument
1551 data = elf_getdata (elf_getscn (ebl->elf, idx), NULL); in check_dynamic()
1555 idx, section_name (ebl, idx)); in check_dynamic()
1559 strshdr = gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link), &strshdr_mem); in check_dynamic()
1563 shdr->sh_link, section_name (ebl, shdr->sh_link), in check_dynamic()
1564 idx, section_name (ebl, idx)); in check_dynamic()
1566 if (shdr->sh_entsize != gelf_fsize (ebl->elf, ELF_T_DYN, 1, EV_CURRENT)) in check_dynamic()
1569 idx, section_name (ebl, idx)); in check_dynamic()
1573 idx, section_name (ebl, idx)); in check_dynamic()
1584 idx, section_name (ebl, idx), cnt, elf_errmsg (-1)); in check_dynamic()
1592 idx, section_name (ebl, idx)); in check_dynamic()
1596 if (!ebl_dynamic_tag_check (ebl, dyn->d_tag)) in check_dynamic()
1598 idx, section_name (ebl, idx), cnt); in check_dynamic()
1610 idx, section_name (ebl, idx), cnt, in check_dynamic()
1611 ebl_dynamic_tag_name (ebl, dyn->d_tag, in check_dynamic()
1620 idx, section_name (ebl, idx), cnt, in check_dynamic()
1621 ebl_dynamic_tag_name (ebl, dyn->d_tag, in check_dynamic()
1638 idx, section_name (ebl, idx), cnt); in check_dynamic()
1660 idx, section_name (ebl, idx), cnt, in check_dynamic()
1661 shdr->sh_link, section_name (ebl, shdr->sh_link)); in check_dynamic()
1692 GElf_Phdr *phdr = gelf_getphdr (ebl->elf, n, &phdr_mem); in check_dynamic()
1703 idx, section_name (ebl, idx), cnt, in check_dynamic()
1704 ebl_dynamic_tag_name (ebl, dyn->d_tag, buf, in check_dynamic()
1718 idx, section_name (ebl, idx), cnt, in check_dynamic()
1719 ebl_dynamic_tag_name (ebl, dyn->d_tag, buf, in check_dynamic()
1721 shdr->sh_link, section_name (ebl, shdr->sh_link)); in check_dynamic()
1738 idx, section_name (ebl, idx), in check_dynamic()
1739 ebl_dynamic_tag_name (ebl, cnt, buf1, sizeof (buf1)), in check_dynamic()
1740 ebl_dynamic_tag_name (ebl, inner, buf2, sizeof (buf2))); in check_dynamic()
1750 idx, section_name (ebl, idx), in check_dynamic()
1751 ebl_dynamic_tag_name (ebl, cnt, buf, sizeof (buf))); in check_dynamic()
1759 idx, section_name (ebl, idx)); in check_dynamic()
1766 idx, section_name (ebl, idx), in check_dynamic()
1774 idx, section_name (ebl, idx), in check_dynamic()
1781 idx, section_name (ebl, idx), in check_dynamic()
1791 idx, section_name (ebl, idx), "DT_GNU_PRELINKED"); in check_dynamic()
1795 idx, section_name (ebl, idx), "DT_CHECKSUM"); in check_dynamic()
1801 idx, section_name (ebl, idx)); in check_dynamic()
1812 idx, section_name (ebl, idx), "DT_GNU_CONFLICTSZ"); in check_dynamic()
1816 idx, section_name (ebl, idx), "DT_GNU_LIBLISTSZ"); in check_dynamic()
1820 idx, section_name (ebl, idx), "DT_GNU_CONFLICT"); in check_dynamic()
1824 idx, section_name (ebl, idx), "DT_GNU_LIBLIST"); in check_dynamic()
1830 check_symtab_shndx (Ebl *ebl, GElf_Ehdr *ehdr, GElf_Shdr *shdr, int idx) in check_symtab_shndx() argument
1836 idx, section_name (ebl, idx)); in check_symtab_shndx()
1840 Elf_Scn *symscn = elf_getscn (ebl->elf, shdr->sh_link); in check_symtab_shndx()
1846 idx, section_name (ebl, idx)); in check_symtab_shndx()
1854 idx, section_name (ebl, idx)); in check_symtab_shndx()
1861 idx, section_name (ebl, idx)); in check_symtab_shndx()
1865 idx, section_name (ebl, idx)); in check_symtab_shndx()
1870 GElf_Shdr *rshdr = gelf_getshdr (elf_getscn (ebl->elf, cnt), &rshdr_mem); in check_symtab_shndx()
1876 idx, section_name (ebl, idx), in check_symtab_shndx()
1877 cnt, section_name (ebl, cnt)); in check_symtab_shndx()
1882 Elf_Data *data = elf_getdata (elf_getscn (ebl->elf, idx), NULL); in check_symtab_shndx()
1911 check_sysv_hash (Ebl *ebl, GElf_Shdr *shdr, Elf_Data *data, int idx, in check_sysv_hash() argument
1920 idx, section_name (ebl, idx), (long int) shdr->sh_size, in check_sysv_hash()
1931 idx, section_name (ebl, idx)); in check_sysv_hash()
1941 idx, section_name (ebl, idx), cnt - 2); in check_sysv_hash()
1947 idx, section_name (ebl, idx), cnt - 2 - nbucket); in check_sysv_hash()
1952 check_sysv_hash64 (Ebl *ebl, GElf_Shdr *shdr, Elf_Data *data, int idx, in check_sysv_hash64() argument
1961 idx, section_name (ebl, idx), (long int) shdr->sh_size, in check_sysv_hash64()
1972 idx, section_name (ebl, idx)); in check_sysv_hash64()
1982 idx, section_name (ebl, idx), cnt - 2); in check_sysv_hash64()
1988 idx, section_name (ebl, idx), (uint64_t) (cnt - 2 - nbucket)); in check_sysv_hash64()
1993 check_gnu_hash (Ebl *ebl, GElf_Shdr *shdr, Elf_Data *data, int idx, in check_gnu_hash() argument
2003 idx, section_name (ebl, idx), bitmask_words); in check_gnu_hash()
2006 if (gelf_getclass (ebl->elf) == ELFCLASS64) in check_gnu_hash()
2014 idx, section_name (ebl, idx), (long int) shdr->sh_size, in check_gnu_hash()
2022 idx, section_name (ebl, idx), shift); in check_gnu_hash()
2031 Elf_Data *symdata = elf_getdata (elf_getscn (ebl->elf, shdr->sh_link), NULL); in check_gnu_hash()
2040 size_t classbits = gelf_getclass (ebl->elf) == ELFCLASS32 ? 32 : 64; in check_gnu_hash()
2054 idx, section_name (ebl, idx), cnt - (4 + bitmask_words)); in check_gnu_hash()
2075 idx, section_name (ebl, idx), symidx, in check_gnu_hash()
2078 const char *symname = elf_strptr (ebl->elf, symshdr->sh_link, in check_gnu_hash()
2086 idx, section_name (ebl, idx), symidx, in check_gnu_hash()
2117 idx, section_name (ebl, idx), cnt - (4 + bitmask_words)); in check_gnu_hash()
2122 idx, section_name (ebl, idx), cnt - (4 + bitmask_words)); in check_gnu_hash()
2128 idx, section_name (ebl, idx)); in check_gnu_hash()
2135 check_hash (int tag, Ebl *ebl, GElf_Ehdr *ehdr, GElf_Shdr *shdr, int idx) in check_hash() argument
2141 idx, section_name (ebl, idx)); in check_hash()
2145 Elf_Data *data = elf_getdata (elf_getscn (ebl->elf, idx), NULL); in check_hash()
2149 idx, section_name (ebl, idx)); in check_hash()
2154 GElf_Shdr *symshdr = gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link), in check_hash()
2159 idx, section_name (ebl, idx)); in check_hash()
2162 ? (gelf_getclass (ebl->elf) == ELFCLASS32 in check_hash()
2164 : (size_t) ebl_sysvhash_entrysize (ebl))) in check_hash()
2167 idx, section_name (ebl, idx)); in check_hash()
2171 idx, section_name (ebl, idx)); in check_hash()
2177 idx, section_name (ebl, idx)); in check_hash()
2184 if (ebl_sysvhash_entrysize (ebl) == sizeof (Elf64_Xword)) in check_hash()
2185 check_sysv_hash64 (ebl, shdr, data, idx, symshdr); in check_hash()
2187 check_sysv_hash (ebl, shdr, data, idx, symshdr); in check_hash()
2191 check_gnu_hash (ebl, shdr, data, idx, symshdr); in check_hash()
2202 compare_hash_gnu_hash (Ebl *ebl, GElf_Ehdr *ehdr, size_t hash_idx, in compare_hash_gnu_hash() argument
2205 Elf_Scn *hash_scn = elf_getscn (ebl->elf, hash_idx); in compare_hash_gnu_hash()
2209 Elf_Scn *gnu_hash_scn = elf_getscn (ebl->elf, gnu_hash_idx); in compare_hash_gnu_hash()
2225 hash_idx, elf_strptr (ebl->elf, shstrndx, hash_shdr->sh_name), in compare_hash_gnu_hash()
2227 elf_strptr (ebl->elf, shstrndx, gnu_hash_shdr->sh_name)); in compare_hash_gnu_hash()
2231 Elf_Scn *sym_scn = elf_getscn (ebl->elf, hash_shdr->sh_link); in compare_hash_gnu_hash()
2303 elf_strptr (ebl->elf, shstrndx, gnu_hash_shdr->sh_name)); in compare_hash_gnu_hash()
2306 hash_idx, elf_strptr (ebl->elf, shstrndx, hash_shdr->sh_name)); in compare_hash_gnu_hash()
2315 elf_strptr (ebl->elf, shstrndx, gnu_hash_shdr->sh_name), in compare_hash_gnu_hash()
2317 elf_strptr (ebl->elf, shstrndx, hash_shdr->sh_name)); in compare_hash_gnu_hash()
2327 elf_strptr (ebl->elf, shstrndx, hash_shdr->sh_name), in compare_hash_gnu_hash()
2329 elf_strptr (ebl->elf, shstrndx, gnu_hash_shdr->sh_name)); in compare_hash_gnu_hash()
2336 check_null (Ebl *ebl, GElf_Shdr *shdr, int idx) in check_null() argument
2341 idx, section_name (ebl, idx), #name) in check_null()
2356 check_group (Ebl *ebl, GElf_Ehdr *ehdr, GElf_Shdr *shdr, int idx) in check_group() argument
2362 idx, section_name (ebl, idx)); in check_group()
2367 Elf_Scn *symscn = elf_getscn (ebl->elf, shdr->sh_link); in check_group()
2372 idx, section_name (ebl, idx), elf_errmsg (-1)); in check_group()
2378 idx, section_name (ebl, idx)); in check_group()
2380 if (shdr->sh_info >= symshdr->sh_size / gelf_fsize (ebl->elf, ELF_T_SYM, in check_group()
2384 idx, section_name (ebl, idx)); in check_group()
2388 idx, section_name (ebl, idx)); in check_group()
2396 idx, section_name (ebl, idx)); in check_group()
2397 else if (strcmp (elf_strptr (ebl->elf, symshdr->sh_link, sym->st_name), in check_group()
2401 idx, section_name (ebl, idx)); in check_group()
2406 idx, section_name (ebl, idx)); in check_group()
2409 Elf_Data *data = elf_getdata (elf_getscn (ebl->elf, idx), NULL); in check_group()
2412 idx, section_name (ebl, idx), elf_errmsg (-1)); in check_group()
2422 idx, section_name (ebl, idx)); in check_group()
2427 idx, section_name (ebl, idx)); in check_group()
2433 idx, section_name (ebl, idx)); in check_group()
2437 idx, section_name (ebl, idx)); in check_group()
2447 idx, section_name (ebl, idx)); in check_group()
2460 idx, section_name (ebl, idx), cnt / elsize); in check_group()
2464 GElf_Shdr *refshdr = gelf_getshdr (elf_getscn (ebl->elf, val), in check_group()
2469 idx, section_name (ebl, idx), cnt / elsize, in check_group()
2476 idx, section_name (ebl, idx), in check_group()
2477 val, section_name (ebl, val)); in check_group()
2482 idx, section_name (ebl, idx), cnt / elsize, in check_group()
2483 val, section_name (ebl, val)); in check_group()
2489 val, section_name (ebl, val)); in check_group()
2551 has_copy_reloc (Ebl *ebl, unsigned int symscnndx, unsigned int symndx) in has_copy_reloc() argument
2557 while ((scn = elf_nextscn (ebl->elf, scn)) != NULL) in has_copy_reloc()
2583 && ebl_copy_reloc_p (ebl, GELF_R_TYPE (rel->r_info))) in has_copy_reloc()
2595 && ebl_copy_reloc_p (ebl, GELF_R_TYPE (rela->r_info))) in has_copy_reloc()
2604 in_nobits_scn (Ebl *ebl, unsigned int shndx) in in_nobits_scn() argument
2607 GElf_Shdr *shdr = gelf_getshdr (elf_getscn (ebl->elf, shndx), &shdr_mem); in in_nobits_scn()
2650 check_versym (Ebl *ebl, int idx) in check_versym() argument
2652 Elf_Scn *scn = elf_getscn (ebl->elf, idx); in check_versym()
2663 idx, section_name (ebl, idx)); in check_versym()
2667 Elf_Scn *symscn = elf_getscn (ebl->elf, shdr->sh_link); in check_versym()
2678 idx, section_name (ebl, idx), in check_versym()
2679 shdr->sh_link, section_name (ebl, shdr->sh_link)); in check_versym()
2689 idx, section_name (ebl, idx), in check_versym()
2690 shdr->sh_link, section_name (ebl, shdr->sh_link)); in check_versym()
2705 idx, section_name (ebl, idx), cnt); in check_versym()
2721 idx, section_name (ebl, idx), cnt); in check_versym()
2729 idx, section_name (ebl, idx), cnt); in check_versym()
2743 idx, section_name (ebl, idx), cnt, (int) *versym); in check_versym()
2748 idx, section_name (ebl, idx), cnt, (int) *versym); in check_versym()
2754 if (!has_copy_reloc (ebl, shdr->sh_link, cnt) in check_versym()
2755 && !in_nobits_scn (ebl, sym->st_shndx)) in check_versym()
2758 idx, section_name (ebl, idx), cnt, (int) *versym); in check_versym()
2805 check_verneed (Ebl *ebl, GElf_Ehdr *ehdr, GElf_Shdr *shdr, int idx) in check_verneed() argument
2811 GElf_Shdr *strshdr = gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link), in check_verneed()
2818 idx, section_name (ebl, idx)); in check_verneed()
2820 Elf_Data *data = elf_getdata (elf_getscn (ebl->elf, idx), NULL); in check_verneed()
2824 idx, section_name (ebl, idx)); in check_verneed()
2841 idx, section_name (ebl, idx), cnt, (int) need->vn_version); in check_verneed()
2843 if (need->vn_cnt > 0 && need->vn_aux < gelf_fsize (ebl->elf, ELF_T_VNEED, in check_verneed()
2847 idx, section_name (ebl, idx), cnt); in check_verneed()
2849 const char *libname = elf_strptr (ebl->elf, shdr->sh_link, in check_verneed()
2855 idx, section_name (ebl, idx), cnt); in check_verneed()
2860 if (unknown_dependency_p (ebl->elf, ehdr, libname)) in check_verneed()
2863 idx, section_name (ebl, idx), cnt); in check_verneed()
2875 idx, section_name (ebl, idx), need->vn_cnt - cnt2, cnt); in check_verneed()
2877 const char *verstr = elf_strptr (ebl->elf, shdr->sh_link, in check_verneed()
2882 idx, section_name (ebl, idx), need->vn_cnt - cnt2, cnt); in check_verneed()
2889 idx, section_name (ebl, idx), need->vn_cnt - cnt2, in check_verneed()
2899 idx, section_name (ebl, idx), need->vn_cnt - cnt2, in check_verneed()
2905 && aux->vna_next < gelf_fsize (ebl->elf, ELF_T_VNAUX, 1, in check_verneed()
2910 idx, section_name (ebl, idx), need->vn_cnt - cnt2, cnt); in check_verneed()
2915 gelf_fsize (ebl->elf, ELF_T_VNAUX, 1, EV_CURRENT)); in check_verneed()
2926 idx, section_name (ebl, idx), cnt); in check_verneed()
2934 check_verdef (Ebl *ebl, GElf_Shdr *shdr, int idx) in check_verdef() argument
2940 GElf_Shdr *strshdr = gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link), in check_verdef()
2947 idx, section_name (ebl, idx)); in check_verdef()
2949 Elf_Data *data = elf_getdata (elf_getscn (ebl->elf, idx), NULL); in check_verdef()
2954 idx, section_name (ebl, idx)); in check_verdef()
2984 idx, section_name (ebl, idx)); in check_verdef()
2988 idx, section_name (ebl, idx)); in check_verdef()
2994 idx, section_name (ebl, idx), cnt); in check_verdef()
2999 idx, section_name (ebl, idx), cnt, (int) def->vd_version); in check_verdef()
3001 if (def->vd_cnt > 0 && def->vd_aux < gelf_fsize (ebl->elf, ELF_T_VDEF, in check_verdef()
3005 idx, section_name (ebl, idx), cnt); in check_verdef()
3013 const char *name = elf_strptr (ebl->elf, shdr->sh_link, aux->vda_name); in check_verdef()
3018 idx, section_name (ebl, idx), cnt); in check_verdef()
3025 idx, section_name (ebl, idx), cnt, (int) hashval, in check_verdef()
3034 idx, section_name (ebl, idx), cnt, name); in check_verdef()
3049 name = elf_strptr (ebl->elf, shdr->sh_link, aux->vda_name); in check_verdef()
3053 idx, section_name (ebl, idx), cnt); in check_verdef()
3063 && aux->vda_next < gelf_fsize (ebl->elf, ELF_T_VDAUX, 1, in check_verdef()
3068 idx, section_name (ebl, idx), cnt); in check_verdef()
3073 gelf_fsize (ebl->elf, ELF_T_VDAUX, 1, EV_CURRENT)); in check_verdef()
3084 idx, section_name (ebl, idx), cnt); in check_verdef()
3089 idx, section_name (ebl, idx)); in check_verdef()
3106 idx, section_name (ebl, idx), namelist->name); in check_verdef()
3113 check_attributes (Ebl *ebl, GElf_Ehdr *ehdr, GElf_Shdr *shdr, int idx) in check_attributes() argument
3118 idx, section_name (ebl, idx)); in check_attributes()
3122 Elf_Data *data = elf_rawdata (elf_getscn (ebl->elf, idx), NULL); in check_attributes()
3126 idx, section_name (ebl, idx)); in check_attributes()
3139 idx, section_name (ebl, idx)); in check_attributes()
3156 idx, section_name (ebl, idx), pos (p)); in check_attributes()
3165 idx, section_name (ebl, idx), pos (p)); in check_attributes()
3177 idx, section_name (ebl, idx), pos (p)); in check_attributes()
3194 idx, section_name (ebl, idx), pos (chunk)); in check_attributes()
3203 idx, section_name (ebl, idx), pos (q)); in check_attributes()
3212 idx, section_name (ebl, idx), pos (q)); in check_attributes()
3225 idx, section_name (ebl, idx), pos (q)); in check_attributes()
3236 idx, section_name (ebl, idx), pos (chunk), subsection_tag); in check_attributes()
3254 idx, section_name (ebl, idx), pos (chunk)); in check_attributes()
3265 idx, section_name (ebl, idx), pos (chunk)); in check_attributes()
3273 if (!ebl_check_object_attribute (ebl, (const char *) name, in check_attributes()
3278 idx, section_name (ebl, idx), pos (chunk), tag); in check_attributes()
3282 idx, section_name (ebl, idx), pos (chunk), in check_attributes()
3292 idx, section_name (ebl, idx), pos (p), name); in check_attributes()
3298 idx, section_name (ebl, idx), pos (p)); in check_attributes()
3363 check_sections (Ebl *ebl, GElf_Ehdr *ehdr) in check_sections() argument
3376 GElf_Shdr *shdr = gelf_getshdr (elf_getscn (ebl->elf, 0), &shdr_mem); in check_sections()
3417 shdr = gelf_getshdr (elf_getscn (ebl->elf, cnt), &shdr_mem); in check_sections()
3422 cnt, section_name (ebl, cnt), elf_errmsg (-1)); in check_sections()
3426 const char *scnname = elf_strptr (ebl->elf, shstrndx, shdr->sh_name); in check_sections()
3445 && ebl_bss_plt_p (ebl, ehdr)) in check_sections()
3459 ebl_section_type_name (ebl, special_sections[s].type, in check_sections()
3461 ebl_section_type_name (ebl, shdr->sh_type, in check_sections()
3563 cnt, section_name (ebl, cnt)); in check_sections()
3565 if (elf_strptr (ebl->elf, shstrndx, shdr->sh_name) == NULL) in check_sections()
3575 && ebl_section_type_name (ebl, shdr->sh_type, NULL, 0) == NULL) in check_sections()
3577 cnt, section_name (ebl, cnt), in check_sections()
3588 if (!ebl_machine_section_flag_check (ebl, in check_sections()
3593 cnt, section_name (ebl, cnt), sh_flags & SHF_MASKPROC); in check_sections()
3599 cnt, section_name (ebl, cnt), sh_flags); in check_sections()
3607 cnt, section_name (ebl, cnt)); in check_sections()
3615 cnt, section_name (ebl, cnt)); in check_sections()
3620 cnt, section_name (ebl, cnt)); in check_sections()
3627 cnt, section_name (ebl, cnt)); in check_sections()
3632 cnt, section_name (ebl, cnt)); in check_sections()
3635 check_scn_group (ebl, cnt); in check_sections()
3650 cnt, section_name (ebl, cnt), shdr->sh_type); in check_sections()
3655 && !ebl_check_special_section (ebl, cnt, shdr, in check_sections()
3656 section_name (ebl, cnt))) in check_sections()
3659 cnt, section_name (ebl, cnt)); in check_sections()
3671 if ((phdr = gelf_getphdr (ebl->elf, pcnt, &phdr_mem)) != NULL in check_sections()
3686 cnt, section_name (ebl, cnt), pcnt); in check_sections()
3694 cnt, section_name (ebl, cnt), pcnt); in check_sections()
3703 cnt, section_name (ebl, cnt), pcnt); in check_sections()
3714 cnt, section_name (ebl, cnt), pcnt); in check_sections()
3724 cnt, section_name (ebl, cnt), pcnt); in check_sections()
3734 cnt, section_name (ebl, cnt)); in check_sections()
3740 cnt, section_name (ebl, cnt)); in check_sections()
3748 cnt, section_name (ebl, cnt)); in check_sections()
3751 check_symtab (ebl, ehdr, shdr, cnt); in check_sections()
3755 check_rela (ebl, ehdr, shdr, cnt); in check_sections()
3759 check_rel (ebl, ehdr, shdr, cnt); in check_sections()
3763 check_dynamic (ebl, ehdr, shdr, cnt); in check_sections()
3767 check_symtab_shndx (ebl, ehdr, shdr, cnt); in check_sections()
3771 check_hash (shdr->sh_type, ebl, ehdr, shdr, cnt); in check_sections()
3776 check_hash (shdr->sh_type, ebl, ehdr, shdr, cnt); in check_sections()
3781 check_null (ebl, shdr, cnt); in check_sections()
3785 check_group (ebl, ehdr, shdr, cnt); in check_sections()
3789 check_note_section (ebl, ehdr, shdr, cnt); in check_sections()
3802 check_verneed (ebl, ehdr, shdr, cnt); in check_sections()
3806 check_verdef (ebl, shdr, cnt); in check_sections()
3810 check_attributes (ebl, ehdr, shdr, cnt); in check_sections()
3826 GElf_Phdr *phdr = gelf_getphdr (ebl->elf, pcnt, &phdr_mem); in check_sections()
3851 check_versym (ebl, versym_scnndx); in check_sections()
3879 compare_hash_gnu_hash (ebl, ehdr, hash_idx, gnu_hash_idx); in check_sections()
3886 check_note_data (Ebl *ebl, const GElf_Ehdr *ehdr, in check_note_data() argument
3931 shndx, section_name (ebl, shndx), in check_note_data()
3957 shndx, section_name (ebl, shndx), in check_note_data()
3966 check_note (Ebl *ebl, GElf_Ehdr *ehdr, GElf_Phdr *phdr, int cnt) in check_note() argument
3982 Elf_Data *data = elf_getdata_rawchunk (ebl->elf, in check_note()
3986 notes_size = check_note_data (ebl, ehdr, data, 0, cnt, phdr->p_offset); in check_note()
3997 check_note_section (Ebl *ebl, GElf_Ehdr *ehdr, GElf_Shdr *shdr, int idx) in check_note_section() argument
4002 Elf_Data *data = elf_getdata (elf_getscn (ebl->elf, idx), NULL); in check_note_section()
4006 idx, section_name (ebl, idx)); in check_note_section()
4014 idx, section_name (ebl, idx)); in check_note_section()
4016 GElf_Off notes_size = check_note_data (ebl, ehdr, data, idx, 0, 0); in check_note_section()
4020 idx, section_name (ebl, idx)); in check_note_section()
4024 idx, section_name (ebl, idx), shdr->sh_size - notes_size); in check_note_section()
4028 check_program_header (Ebl *ebl, GElf_Ehdr *ehdr) in check_program_header() argument
4047 phdr = gelf_getphdr (ebl->elf, cnt, &phdr_mem); in check_program_header()
4058 && ebl_segment_type_name (ebl, phdr->p_type, NULL, 0) == NULL) in check_program_header()
4081 check_note (ebl, ehdr, phdr, cnt); in check_program_header()
4092 while ((scn = elf_nextscn (ebl->elf, scn)) != NULL) in check_program_header()
4123 phdr2 = gelf_getphdr (ebl->elf, inner, &phdr2_mem); in check_program_header()
4157 phdr2 = gelf_getphdr (ebl->elf, inner, &phdr2_mem); in check_program_header()
4212 Ebl *ebl; in process_elf_file() local
4229 ebl = ebl_openbackend (elf); in process_elf_file()
4235 check_elf_header (ebl, ehdr, size); in process_elf_file()
4238 check_program_header (ebl, ehdr); in process_elf_file()
4242 check_sections (ebl, ehdr); in process_elf_file()
4249 ebl_closebackend (ebl); in process_elf_file()