Home | History | Annotate | Download | only in src

Lines Matching defs:ebl

96 static void check_note_section (Ebl *ebl, GElf_Ehdr *ehdr,
314 section_name (Ebl *ebl, int idx)
323 shdr = gelf_getshdr (elf_getscn (ebl->elf, idx), &shdr_mem);
327 ret = elf_strptr (ebl->elf, shstrndx, shdr->sh_name);
354 check_elf_header (Ebl *ebl, GElf_Ehdr *ehdr, size_t size)
390 ebl_osabi_name (ebl, ehdr->e_ident[EI_OSABI], buf, sizeof (buf)));
447 GElf_Shdr *shdr = gelf_getshdr (elf_getscn (ebl->elf, 0), &shdr_mem);
464 GElf_Shdr *shdr = gelf_getshdr (elf_getscn (ebl->elf, 0), &shdr_mem);
478 GElf_Shdr *shdr = gelf_getshdr (elf_getscn (ebl->elf, 0), &shdr_mem);
491 if (!ebl_machine_flag_check (ebl, ehdr->e_flags))
493 ebl_machine_flag_name (ebl, ehdr->e_flags, buf, sizeof (buf)));
496 if (gelf_getclass (ebl->elf) == ELFCLASS32)
513 else if (gelf_getclass (ebl->elf) == ELFCLASS64)
536 Ebl *ebl, int idx)
546 Elf_Scn *scn = elf_getscn (ebl->elf, cnt);
575 idx, section_name (ebl, idx));
579 idx, section_name (ebl, idx),
580 cnt, section_name (ebl, cnt));
586 check_symtab (Ebl *ebl, GElf_Ehdr *ehdr, GElf_Shdr *shdr, int idx)
590 Elf_Data *data = elf_getdata (elf_getscn (ebl->elf, idx), NULL);
594 idx, section_name (ebl, idx));
599 GElf_Shdr *strshdr = gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link),
607 shdr->sh_link, section_name (ebl, shdr->sh_link),
608 idx, section_name (ebl, idx));
619 Elf_Scn *xndxscn = elf_getscn (ebl->elf, cnt);
631 idx, section_name (ebl, idx));
639 size_t sh_entsize = gelf_fsize (ebl->elf, ELF_T_SYM, 1, EV_CURRENT);
643 idx, section_name (ebl, idx));
651 idx, section_name (ebl, idx), 0, elf_errmsg (-1));
656 idx, section_name (ebl, idx), "st_name");
659 idx, section_name (ebl, idx), "st_value");
662 idx, section_name (ebl, idx), "st_size");
665 idx, section_name (ebl, idx), "st_info");
668 idx, section_name (ebl, idx), "st_other");
671 idx, section_name (ebl, idx), "st_shndx");
675 xndxscnidx, section_name (ebl, xndxscnidx));
684 idx, section_name (ebl, idx), cnt, elf_errmsg (-1));
694 idx, section_name (ebl, idx), cnt);
697 name = elf_strptr (ebl->elf, shdr->sh_link, sym->st_name);
709 idx, section_name (ebl, idx), cnt);
715 xndxscnidx, section_name (ebl, xndxscnidx), cnt,
727 idx, section_name (ebl, idx), cnt);
732 && !ebl_symbol_type_name (ebl, GELF_ST_TYPE (sym->st_info), NULL, 0))
734 idx, section_name (ebl, idx), cnt);
737 && !ebl_symbol_binding_name (ebl, GELF_ST_BIND (sym->st_info), NULL,
741 idx, section_name (ebl, idx), cnt);
746 idx, section_name (ebl, idx), cnt);
754 idx, section_name (ebl, idx), cnt);
758 idx, section_name (ebl, idx), cnt);
762 idx, section_name (ebl, idx), cnt);
769 destshdr = gelf_getshdr (elf_getscn (ebl->elf, xndx), &destshdr_mem);
777 st_value = sym->st_value & ebl_func_addr_mask (ebl);
782 if (! ebl_check_special_symbol (ebl, ehdr, sym, name,
793 || (strcmp (section_name (ebl, idx), ".symtab")
794 && strcmp (section_name (ebl, idx),
813 idx, section_name (ebl, idx), cnt);
819 idx, section_name (ebl, idx), cnt,
820 (int) xndx, section_name (ebl, xndx));
828 idx, section_name (ebl, idx), cnt,
829 (int) xndx, section_name (ebl, xndx));
838 idx, section_name (ebl, idx), cnt,
839 (int) xndx, section_name (ebl, xndx));
844 idx, section_name (ebl, idx), cnt,
845 (int) xndx, section_name (ebl, xndx));
855 phdr = gelf_getphdr (ebl->elf, pcnt, &phdr_mem);
865 idx, section_name (ebl, idx), cnt);
871 idx, section_name (ebl, idx), cnt);
879 idx, section_name (ebl, idx), cnt,
880 (int) xndx, section_name (ebl, xndx));
886 idx, section_name (ebl, idx), cnt,
887 (int) xndx, section_name (ebl, xndx));
893 idx, section_name (ebl, idx), cnt,
894 (int) xndx, section_name (ebl, xndx));
906 idx, section_name (ebl, idx), cnt);
913 idx, section_name (ebl, idx), cnt);
920 idx, section_name (ebl, idx), cnt);
929 GElf_Shdr *destshdr = gelf_getshdr (elf_getscn (ebl->elf, xndx),
937 while ((gscn = elf_nextscn (ebl->elf, gscn)) != NULL)
941 const char *sname = elf_strptr (ebl->elf,
963 : elf_strptr (ebl->elf, ehdr->e_shstrndx,
971 idx, section_name (ebl, idx), xndx);
978 idx, section_name (ebl, idx), xndx, sname);
983 if (!ebl_check_special_symbol (ebl, ehdr, sym, name,
993 idx, section_name (ebl, idx),
1000 idx, section_name (ebl, idx),
1008 idx, section_name (ebl, idx));
1017 GElf_Phdr *phdr = gelf_getphdr (ebl->elf, pcnt, &phdr_mem);
1024 idx, section_name (ebl, idx),
1031 idx, section_name (ebl, idx),
1044 idx, section_name (ebl, idx), cnt);
1045 if (! ebl_check_st_other_bits (ebl, sym->st_other))
1048 idx, section_name (ebl, idx), cnt);
1055 is_rel_dyn (Ebl *ebl, const GElf_Ehdr *ehdr, int idx, const GElf_Shdr *shdr,
1063 if (strcmp (section_name (ebl, idx), is_rela ? ".rela.dyn" : ".rel.dyn"))
1069 while ((scn = elf_nextscn (ebl->elf, scn)) != NULL)
1086 idx, section_name (ebl, idx));
1102 idx, section_name (ebl, idx));
1113 idx, section_name (ebl, idx),
1118 Elf_Data *reldata = elf_getdata (elf_getscn (ebl->elf,
1132 if (ebl_relative_reloc_p (ebl,
1138 idx, section_name (ebl, idx),
1144 idx, section_name (ebl, idx),
1156 idx, section_name (ebl, idx));
1166 idx, section_name (ebl, idx),
1171 Elf_Data *reldata = elf_getdata (elf_getscn (ebl->elf,
1185 if (ebl_relative_reloc_p (ebl,
1191 idx, section_name (ebl, idx),
1197 idx, section_name (ebl, idx),
1229 check_reloc_shdr (Ebl *ebl, const GElf_Ehdr *ehdr, const GElf_Shdr *shdr,
1238 idx, section_name (ebl, idx));
1241 *destshdrp = gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_info),
1245 if(! ebl_check_reloc_target_type (ebl, (*destshdrp)->sh_type))
1247 reldyn = is_rel_dyn (ebl, ehdr, idx, shdr, true);
1251 idx, section_name (ebl, idx));
1259 idx, section_name (ebl, idx));
1267 idx, section_name (ebl, idx));
1271 size_t sh_entsize = gelf_fsize (ebl->elf, reltype, 1, EV_CURRENT);
1276 idx, section_name (ebl, idx));
1287 GElf_Phdr *phdr = gelf_getphdr (ebl->elf, i, &phdr_mem);
1302 Elf_Scn *dynscn = gelf_offscn (ebl->elf, phdr->p_offset);
1351 check_one_reloc (Ebl *ebl, GElf_Ehdr *ehdr, GElf_Shdr *relshdr, int idx,
1359 if (!ebl_reloc_type_check (ebl, GELF_R_TYPE (r_info)))
1361 idx, section_name (ebl, idx), cnt);
1367 && !ebl_reloc_valid_use (ebl, GELF_R_TYPE (r_info)))
1370 idx, section_name (ebl, idx), cnt);
1374 * gelf_fsize (ebl->elf, ELF_T_SYM, 1, EV_CURRENT)
1378 idx, section_name (ebl, idx), cnt);
1381 if (ebl_none_reloc_p (ebl, GELF_R_TYPE (r_info)))
1384 if (ebl_gotpc_reloc_check (ebl, GELF_R_TYPE (r_info)))
1392 && (name = elf_strptr (ebl->elf, symshdr->sh_link, sym->st_name))
1396 idx, section_name (ebl, idx), cnt,
1397 ebl_reloc_type_name (ebl, GELF_R_SYM (r_info),
1413 idx, section_name (ebl, idx), cnt);
1419 if (ebl_copy_reloc_p (ebl, GELF_R_TYPE (r_info))
1427 idx, section_name (ebl, idx), cnt,
1428 ebl_symbol_type_name (ebl, GELF_ST_TYPE (sym->st_info),
1448 idx, section_name (ebl, idx), cnt);
1464 idx, section_name (ebl, idx));
1472 check_rela (Ebl *ebl, GElf_Ehdr *ehdr, GElf_Shdr *shdr, int idx)
1474 Elf_Data *data = elf_getdata (elf_getscn (ebl->elf, idx), NULL);
1478 idx, section_name (ebl, idx));
1486 bool reldyn = check_reloc_shdr (ebl, ehdr, shdr, idx, ELF_T_RELA, &destshdr,
1489 Elf_Scn *symscn = elf_getscn (ebl->elf, shdr->sh_link);
1495 size_t sh_entsize = gelf_fsize (ebl->elf, ELF_T_RELA, 1, EV_CURRENT);
1504 idx, section_name (ebl, idx), cnt, elf_errmsg (-1));
1508 check_one_reloc (ebl, ehdr, shdr, idx, cnt, symshdr, symdata,
1523 check_rel (Ebl *ebl, GElf_Ehdr *ehdr, GElf_Shdr *shdr, int idx)
1525 Elf_Data *data = elf_getdata (elf_getscn (ebl->elf, idx), NULL);
1529 idx, section_name (ebl, idx));
1537 bool reldyn = check_reloc_shdr (ebl, ehdr, shdr, idx, ELF_T_REL, &destshdr,
1540 Elf_Scn *symscn = elf_getscn (ebl->elf, shdr->sh_link);
1546 size_t sh_entsize = gelf_fsize (ebl->elf, ELF_T_REL, 1, EV_CURRENT);
1555 idx, section_name (ebl, idx), cnt, elf_errmsg (-1));
1559 check_one_reloc (ebl, ehdr, shdr, idx, cnt, symshdr, symdata,
1578 check_dynamic (Ebl *ebl, GElf_Ehdr *ehdr, GElf_Shdr *shdr, int idx)
1631 data = elf_getdata (elf_getscn (ebl->elf, idx), NULL);
1635 idx, section_name (ebl, idx));
1639 strshdr = gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link), &strshdr_mem);
1643 shdr->sh_link, section_name (ebl, shdr->sh_link),
1644 idx, section_name (ebl, idx));
1649 shdr->sh_link, idx, section_name (ebl, idx));
1653 size_t sh_entsize = gelf_fsize (ebl->elf, ELF_T_DYN, 1, EV_CURRENT);
1657 idx, section_name (ebl, idx));
1661 idx, section_name (ebl, idx));
1672 idx, section_name (ebl, idx), cnt, elf_errmsg (-1));
1680 idx, section_name (ebl, idx));
1684 if (!ebl_dynamic_tag_check (ebl, dyn->d_tag))
1686 idx, section_name (ebl, idx), cnt);
1698 idx, section_name (ebl, idx), cnt,
1699 ebl_dynamic_tag_name (ebl, dyn->d_tag,
1708 idx, section_name (ebl, idx), cnt,
1709 ebl_dynamic_tag_name (ebl, dyn->d_tag,
1726 idx, section_name (ebl, idx), cnt);
1739 idx, section_name (ebl, idx), cnt,
1740 shdr->sh_link, section_name (ebl, shdr->sh_link));
1771 GElf_Phdr *phdr = gelf_getphdr (ebl->elf, n, &phdr_mem);
1782 idx, section_name (ebl, idx), cnt,
1783 ebl_dynamic_tag_name (ebl, dyn->d_tag, buf,
1797 idx, section_name (ebl, idx), cnt,
1798 ebl_dynamic_tag_name (ebl, dyn->d_tag, buf,
1800 shdr->sh_link, section_name (ebl, shdr->sh_link));
1817 idx, section_name (ebl, idx),
1818 ebl_dynamic_tag_name (ebl, cnt, buf1, sizeof (buf1)),
1819 ebl_dynamic_tag_name (ebl, inner, buf2, sizeof (buf2)));
1829 idx, section_name (ebl, idx),
1830 ebl_dynamic_tag_name (ebl, cnt, buf, sizeof (buf)));
1838 idx, section_name (ebl, idx));
1845 idx, section_name (ebl, idx),
1853 idx, section_name (ebl, idx),
1860 idx, section_name (ebl, idx),
1870 idx, section_name (ebl, idx), "DT_GNU_PRELINKED");
1874 idx, section_name (ebl, idx), "DT_CHECKSUM");
1880 idx, section_name (ebl, idx));
1891 idx, section_name (ebl, idx), "DT_GNU_CONFLICTSZ");
1895 idx, section_name (ebl, idx), "DT_GNU_LIBLISTSZ");
1899 idx, section_name (ebl, idx), "DT_GNU_CONFLICT");
1903 idx, section_name (ebl, idx), "DT_GNU_LIBLIST");
1909 check_symtab_shndx (Ebl *ebl, GElf_Ehdr *ehdr, GElf_Shdr *shdr, int idx)
1915 idx, section_name (ebl, idx));
1919 Elf_Scn *symscn = elf_getscn (ebl->elf, shdr->sh_link);
1925 idx, section_name (ebl, idx));
1929 idx, section_name (ebl, idx), shdr->sh_link);
1937 idx, section_name (ebl, idx));
1946 idx, section_name (ebl, idx));
1950 idx, section_name (ebl, idx));
1955 GElf_Shdr *rshdr = gelf_getshdr (elf_getscn (ebl->elf, cnt), &rshdr_mem);
1961 idx, section_name (ebl, idx),
1962 cnt, section_name (ebl, cnt));
1967 Elf_Data *data = elf_getdata (elf_getscn (ebl->elf, idx), NULL);
1971 idx, section_name (ebl, idx));
2002 check_sysv_hash (Ebl *ebl, GElf_Shdr *shdr, Elf_Data *data, int idx,
2011 idx, section_name (ebl, idx), (long int) shdr->sh_size,
2022 idx, section_name (ebl, idx));
2037 idx, section_name (ebl, idx), cnt - 2);
2047 idx, section_name (ebl, idx), cnt - 2 - nbucket);
2053 check_sysv_hash64 (Ebl *ebl, GElf_Shdr *shdr, Elf_Data *data, int idx,
2062 idx, section_name (ebl, idx), (long int) shdr->sh_size,
2073 idx, section_name (ebl, idx));
2088 idx, section_name (ebl, idx), cnt - 2);
2098 idx, section_name (ebl, idx), (uint64_t) cnt - 2 - nbucket);
2104 check_gnu_hash (Ebl *ebl, GElf_Shdr *shdr, Elf_Data *data, int idx,
2111 idx, section_name (ebl, idx));
2123 idx, section_name (ebl, idx), bitmask_words);
2128 if (gelf_getclass (ebl->elf) == ELFCLASS64)
2139 idx, section_name (ebl, idx), (long int) shdr->sh_size,
2148 idx, section_name (ebl, idx), shift);
2159 Elf_Data *symdata = elf_getdata (elf_getscn (ebl->elf, shdr->sh_link), NULL);
2168 size_t classbits = gelf_getclass (ebl->elf) == ELFCLASS32 ? 32 : 64;
2182 idx, section_name (ebl, idx), cnt - (4 + bitmask_words));
2203 idx, section_name (ebl, idx), symidx,
2207 ? elf_strptr (ebl->elf, symshdr->sh_link,
2216 idx, section_name (ebl, idx), symidx,
2225 idx, section_name (ebl, idx), symidx,
2255 idx, section_name (ebl, idx), cnt - (4 + bitmask_words));
2260 idx, section_name (ebl, idx), cnt - (4 + bitmask_words));
2266 idx, section_name (ebl, idx));
2273 check_hash (int tag, Ebl *ebl, GElf_Ehdr *ehdr, GElf_Shdr *shdr, int idx)
2279 idx, section_name (ebl, idx));
2283 Elf_Data *data = elf_getdata (elf_getscn (ebl->elf, idx), NULL);
2287 idx, section_name (ebl, idx));
2292 GElf_Shdr *symshdr = gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link),
2297 idx, section_name (ebl, idx));
2301 idx, section_name (ebl, idx), shdr->sh_link);
2304 ? (gelf_getclass (ebl->elf) == ELFCLASS32
2306 : (size_t) ebl_sysvhash_entrysize (ebl)))
2309 idx, section_name (ebl, idx));
2313 idx, section_name (ebl, idx));
2319 idx, section_name (ebl, idx));
2326 if (ebl_sysvhash_entrysize (ebl) == sizeof (Elf64_Xword))
2327 check_sysv_hash64 (ebl, shdr, data, idx, symshdr);
2329 check_sysv_hash (ebl, shdr, data, idx, symshdr);
2333 check_gnu_hash (ebl, shdr, data, idx, symshdr);
2344 compare_hash_gnu_hash (Ebl *ebl, GElf_Ehdr *ehdr, size_t hash_idx,
2347 Elf_Scn *hash_scn = elf_getscn (ebl->elf, hash_idx);
2351 Elf_Scn *gnu_hash_scn = elf_getscn (ebl->elf, gnu_hash_idx);
2368 hash_idx, elf_strptr (ebl->elf, shstrndx, hash_shdr->sh_name),
2370 elf_strptr (ebl->elf, shstrndx, gnu_hash_shdr->sh_name));
2374 Elf_Scn *sym_scn = elf_getscn (ebl->elf, hash_shdr->sh_link);
2385 hash_name = elf_strptr (ebl->elf, shstrndx, hash_shdr->sh_name);
2386 gnu_hash_name = elf_strptr (ebl->elf, shstrndx, gnu_hash_shdr->sh_name);
2536 elf_strptr (ebl->elf, shstrndx, gnu_hash_shdr->sh_name));
2539 hash_idx, elf_strptr (ebl->elf, shstrndx, hash_shdr->sh_name));
2548 elf_strptr (ebl->elf, shstrndx, gnu_hash_shdr->sh_name),
2550 elf_strptr (ebl->elf, shstrndx, hash_shdr->sh_name));
2560 elf_strptr (ebl->elf, shstrndx, hash_shdr->sh_name),
2562 elf_strptr (ebl->elf, shstrndx, gnu_hash_shdr->sh_name));
2569 check_null (Ebl *ebl, GElf_Shdr *shdr, int idx)
2574 idx, section_name (ebl, idx), #name)
2589 check_group (Ebl *ebl, GElf_Ehdr *ehdr, GElf_Shdr *shdr, int idx)
2595 idx, section_name (ebl, idx));
2600 Elf_Scn *symscn = elf_getscn (ebl->elf, shdr->sh_link);
2605 idx, section_name (ebl, idx), elf_errmsg (-1));
2611 idx, section_name (ebl, idx));
2613 if (shdr->sh_info >= symshdr->sh_size / gelf_fsize (ebl->elf, ELF_T_SYM,
2617 idx, section_name (ebl, idx));
2621 idx, section_name (ebl, idx));
2629 idx, section_name (ebl, idx));
2630 else if (elf_strptr (ebl->elf, symshdr->sh_link, sym->st_name) == NULL)
2633 idx, section_name (ebl, idx));
2634 else if (strcmp (elf_strptr (ebl->elf, symshdr->sh_link, sym->st_name),
2638 idx, section_name (ebl, idx));
2643 idx, section_name (ebl, idx));
2646 Elf_Data *data = elf_getdata (elf_getscn (ebl->elf, idx), NULL);
2649 idx, section_name (ebl, idx), elf_errmsg (-1));
2659 idx, section_name (ebl, idx));
2664 idx, section_name (ebl, idx));
2670 idx, section_name (ebl, idx));
2674 idx, section_name (ebl, idx));
2684 idx, section_name (ebl, idx));
2697 idx, section_name (ebl, idx), cnt / elsize);
2701 GElf_Shdr *refshdr = gelf_getshdr (elf_getscn (ebl->elf, val),
2706 idx, section_name (ebl, idx), cnt / elsize,
2713 idx, section_name (ebl, idx),
2714 val, section_name (ebl, val));
2719 idx, section_name (ebl, idx), cnt / elsize,
2720 val, section_name (ebl, val));
2726 val, section_name (ebl, val));
2789 has_copy_reloc (Ebl *ebl, unsigned int symscnndx, unsigned int symndx)
2795 while ((scn = elf_nextscn (ebl->elf, scn)) != NULL)
2821 && ebl_copy_reloc_p (ebl, GELF_R_TYPE (rel->r_info)))
2833 && ebl_copy_reloc_p (ebl, GELF_R_TYPE (rela->r_info)))
2842 in_nobits_scn (Ebl *ebl, unsigned int shndx)
2845 GElf_Shdr *shdr = gelf_getshdr (elf_getscn (ebl->elf, shndx), &shdr_mem);
2888 check_versym (Ebl *ebl, int idx)
2890 Elf_Scn *scn = elf_getscn (ebl->elf, idx);
2901 idx, section_name (ebl, idx));
2905 Elf_Scn *symscn = elf_getscn (ebl->elf, shdr->sh_link);
2916 idx, section_name (ebl, idx),
2917 shdr->sh_link, section_name (ebl, shdr->sh_link));
2928 idx, section_name (ebl, idx),
2929 shdr->sh_link, section_name (ebl, shdr->sh_link));
2944 idx, section_name (ebl, idx), cnt);
2960 idx, section_name (ebl, idx), cnt);
2968 idx, section_name (ebl, idx), cnt);
2982 idx, section_name (ebl, idx), cnt, (int) *versym);
2987 idx, section_name (ebl, idx), cnt, (int) *versym);
2993 if (!has_copy_reloc (ebl, shdr->sh_link, cnt)
2994 && !in_nobits_scn (ebl, sym->st_shndx))
2997 idx, section_name (ebl, idx), cnt, (int) *versym);
3045 check_verneed (Ebl *ebl, GElf_Shdr *shdr, int idx)
3051 GElf_Shdr *strshdr = gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link),
3058 idx, section_name (ebl, idx));
3060 Elf_Data *data = elf_getdata (elf_getscn (ebl->elf, idx), NULL);
3064 idx, section_name (ebl, idx));
3083 idx, section_name (ebl, idx), cnt, (int) need->vn_version);
3085 if (need->vn_cnt > 0 && need->vn_aux < gelf_fsize (ebl->elf, ELF_T_VNEED,
3090 idx, section_name (ebl, idx), cnt);
3094 const char *libname = elf_strptr (ebl->elf, shdr->sh_link,
3100 idx, section_name (ebl, idx), cnt);
3105 if (unknown_dependency_p (ebl->elf, libname))
3108 idx, section_name (ebl, idx), cnt);
3120 idx, section_name (ebl, idx), need->vn_cnt - cnt2, cnt);
3122 const char *verstr = elf_strptr (ebl->elf, shdr->sh_link,
3128 idx, section_name (ebl, idx), need->vn_cnt - cnt2, cnt);
3137 idx, section_name (ebl, idx), need->vn_cnt - cnt2,
3146 idx, section_name (ebl, idx), need->vn_cnt - cnt2,
3152 && aux->vna_next < gelf_fsize (ebl->elf, ELF_T_VNAUX, 1,
3157 idx, section_name (ebl, idx), need->vn_cnt - cnt2, cnt);
3162 gelf_fsize (ebl->elf, ELF_T_VNAUX, 1, EV_CURRENT));
3174 idx, section_name (ebl, idx), cnt);
3182 idx, section_name (ebl, idx), cnt);
3192 check_verdef (Ebl *ebl, GElf_Shdr *shdr, int idx)
3198 GElf_Shdr *strshdr = gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link),
3205 idx, section_name (ebl, idx));
3207 Elf_Data *data = elf_getdata (elf_getscn (ebl->elf, idx), NULL);
3212 idx, section_name (ebl, idx));
3244 idx, section_name (ebl, idx));
3248 idx, section_name (ebl, idx));
3254 idx, section_name (ebl, idx), cnt);
3259 idx, section_name (ebl, idx), cnt, (int) def->vd_version);
3261 if (def->vd_cnt > 0 && def->vd_aux < gelf_fsize (ebl->elf, ELF_T_VDEF,
3266 idx, section_name (ebl, idx), cnt);
3276 const char *name = elf_strptr (ebl->elf, shdr->sh_link, aux->vda_name);
3281 idx, section_name (ebl, idx), cnt);
3288 idx, section_name (ebl, idx), cnt, (int) hashval,
3296 idx, section_name (ebl, idx), cnt, name);
3311 name = elf_strptr (ebl->elf, shdr->sh_link, aux->vda_name);
3316 idx, section_name (ebl, idx), cnt);
3328 && aux->vda_next < gelf_fsize (ebl->elf, ELF_T_VDAUX, 1,
3333 idx, section_name (ebl, idx), cnt);
3338 gelf_fsize (ebl->elf, ELF_T_VDAUX, 1, EV_CURRENT));
3350 idx, section_name (ebl, idx), cnt);
3358 idx, section_name (ebl, idx), cnt);
3365 idx, section_name (ebl, idx));
3382 idx, section_name (ebl, idx), namelist->name);
3389 check_attributes (Ebl *ebl, GElf_Ehdr *ehdr, GElf_Shdr *shdr, int idx)
3394 idx, section_name (ebl, idx));
3398 Elf_Data *data = elf_rawdata (elf_getscn (ebl->elf, idx), NULL);
3402 idx, section_name (ebl, idx));
3415 idx, section_name (ebl, idx));
3432 idx, section_name (ebl, idx), pos (p));
3441 idx, section_name (ebl, idx), pos (p));
3453 idx, section_name (ebl, idx), pos (p));
3470 idx, section_name (ebl, idx), pos (chunk));
3479 idx, section_name (ebl, idx), pos (q));
3488 idx, section_name (ebl, idx), pos (q));
3503 idx, section_name (ebl, idx), pos (q));
3514 idx, section_name (ebl, idx), pos (chunk), subsection_tag);
3532 idx, section_name (ebl, idx), pos (chunk));
3543 idx, section_name (ebl, idx), pos (chunk));
3551 if (!ebl_check_object_attribute (ebl, (const char *) name,
3556 idx, section_name (ebl, idx), pos (chunk), tag);
3560 idx, section_name (ebl, idx), pos (chunk),
3570 idx, section_name (ebl, idx), pos (p), name);
3576 idx, section_name (ebl, idx), pos (p));
3648 check_sections (Ebl *ebl, GElf_Ehdr *ehdr)
3661 GElf_Shdr *shdr = gelf_getshdr (elf_getscn (ebl->elf, 0), &shdr_mem);
3704 Elf_Scn *scn = elf_getscn (ebl->elf, cnt);
3710 cnt, section_name (ebl, cnt), elf_errmsg (-1));
3714 const char *scnname = elf_strptr (ebl->elf, shstrndx, shdr->sh_name);
3733 && ebl_bss_plt_p (ebl))
3747 ebl_section_type_name (ebl, special_sections[s].type,
3749 ebl_section_type_name (ebl, shdr->sh_type,
3862 cnt, section_name (ebl, cnt));
3864 if (elf_strptr (ebl->elf, shstrndx, shdr->sh_name) == NULL)
3874 && ebl_section_type_name (ebl, shdr->sh_type, NULL, 0) == NULL)
3876 cnt, section_name (ebl, cnt),
3888 if (!ebl_machine_section_flag_check (ebl,
3893 cnt, section_name (ebl, cnt), sh_flags & SHF_MASKPROC);
3899 cnt, section_name (ebl, cnt), sh_flags);
3907 cnt, section_name (ebl, cnt));
3917 cnt, section_name (ebl, cnt));
3922 cnt, section_name (ebl, cnt));
3928 cnt, section_name (ebl, cnt), elf_errmsg (-1));
3934 cnt, section_name (ebl, cnt));
3939 cnt, section_name (ebl, cnt));
3946 cnt, section_name (ebl, cnt));
3951 cnt, section_name (ebl, cnt));
3954 check_scn_group (ebl, cnt);
3969 cnt, section_name (ebl, cnt), shdr->sh_type);
3978 cnt, section_name (ebl, cnt));
3981 && !ebl_check_special_section (ebl, cnt, shdr,
3982 section_name (ebl, cnt)))
3985 cnt, section_name (ebl, cnt));
3999 if ((phdr = gelf_getphdr (ebl->elf, pcnt, &phdr_mem)) != NULL
4016 cnt, section_name (ebl, cnt), pcnt);
4026 cnt, section_name (ebl, cnt), pcnt);
4038 databits = elf_getdata_rawchunk (ebl->elf,
4052 cnt, section_name (ebl, cnt), pcnt);
4063 cnt, section_name (ebl, cnt), pcnt);
4074 cnt, section_name (ebl, cnt), pcnt);
4084 cnt, section_name (ebl, cnt), pcnt);
4094 cnt, section_name (ebl, cnt));
4100 cnt, section_name (ebl, cnt));
4108 cnt, section_name (ebl, cnt));
4111 check_symtab (ebl, ehdr, shdr, cnt);
4115 check_rela (ebl, ehdr, shdr, cnt);
4119 check_rel (ebl, ehdr, shdr, cnt);
4123 check_dynamic (ebl, ehdr, shdr, cnt);
4127 check_symtab_shndx (ebl, ehdr, shdr, cnt);
4131 check_hash (shdr->sh_type, ebl, ehdr, shdr, cnt);
4136 check_hash (shdr->sh_type, ebl, ehdr, shdr, cnt);
4141 check_null (ebl, shdr, cnt);
4145 check_group (ebl, ehdr, shdr, cnt);
4149 check_note_section (ebl, ehdr, shdr, cnt);
4162 check_verneed (ebl, shdr, cnt);
4166 check_verdef (ebl, shdr, cnt);
4170 check_attributes (ebl, ehdr, shdr, cnt);
4186 GElf_Phdr *phdr = gelf_getphdr (ebl->elf, pcnt, &phdr_mem);
4211 check_versym (ebl, versym_scnndx);
4239 compare_hash_gnu_hash (ebl, ehdr, hash_idx, gnu_hash_idx);
4246 check_note_data (Ebl *ebl, const GElf_Ehdr *ehdr,
4291 shndx, section_name (ebl, shndx),
4318 shndx, section_name (ebl, shndx),
4328 check_note (Ebl *ebl, GElf_Ehdr *ehdr, GElf_Phdr *phdr, int cnt)
4344 Elf_Data *data = elf_getdata_rawchunk (ebl->elf,
4348 notes_size = check_note_data (ebl, ehdr, data, 0, cnt, phdr->p_offset);
4360 check_note_section (Ebl *ebl, GElf_Ehdr *ehdr, GElf_Shdr *shdr, int idx)
4365 Elf_Data *data = elf_getdata (elf_getscn (ebl->elf, idx), NULL);
4369 idx, section_name (ebl, idx));
4377 idx, section_name (ebl, idx));
4379 GElf_Off notes_size = check_note_data (ebl, ehdr, data, idx, 0, 0);
4383 idx, section_name (ebl, idx));
4387 idx, section_name (ebl, idx), shdr->sh_size - notes_size);
4396 check_program_header (Ebl *ebl, GElf_Ehdr *ehdr)
4415 phdr = gelf_getphdr (ebl->elf, cnt, &phdr_mem);
4426 && ebl_segment_type_name (ebl, phdr->p_type, NULL, 0) == NULL)
4449 check_note (ebl, ehdr, phdr, cnt);
4460 while ((scn = elf_nextscn (ebl->elf, scn)) != NULL)
4491 phdr2 = gelf_getphdr (ebl->elf, inner, &phdr2_mem);
4541 phdr2 = gelf_getphdr (ebl->elf, inner, &phdr2_mem);
4568 while ((scn = elf_nextscn (ebl->elf, scn)) != NULL)
4575 && elf_strptr (ebl->elf, shstrndx, shdr->sh_name) != NULL
4577 elf_strptr (ebl->elf, shstrndx, shdr->sh_name)))
4653 check_exception_data (Ebl *ebl __attribute__ ((unused)),
4679 Ebl *ebl;
4696 ebl = ebl_openbackend (elf);
4702 check_elf_header (ebl, ehdr, size);
4705 check_program_header (ebl, ehdr);
4709 check_sections (ebl, ehdr);
4714 check_exception_data (ebl, ehdr);
4721 ebl_closebackend (ebl);