Lines Matching refs:ebl

94 static void check_note_section (Ebl *ebl, GElf_Ehdr *ehdr,
299 section_name (Ebl *ebl, int idx)
308 shdr = gelf_getshdr (elf_getscn (ebl->elf, idx), &shdr_mem);
312 ret = elf_strptr (ebl->elf, shstrndx, shdr->sh_name);
339 check_elf_header (Ebl *ebl, GElf_Ehdr *ehdr, size_t size)
375 ebl_osabi_name (ebl, ehdr->e_ident[EI_OSABI], buf, sizeof (buf)));
432 GElf_Shdr *shdr = gelf_getshdr (elf_getscn (ebl->elf, 0), &shdr_mem);
449 GElf_Shdr *shdr = gelf_getshdr (elf_getscn (ebl->elf, 0), &shdr_mem);
464 scn = elf_nextscn (ebl->elf, scn);
481 GElf_Shdr *shdr = gelf_getshdr (elf_getscn (ebl->elf, 0), &shdr_mem);
498 GElf_Phdr *phdr = gelf_getphdr (ebl->elf, pcnt, &phdr_mem);
507 if (!ebl_machine_flag_check (ebl, ehdr->e_flags))
509 ebl_machine_flag_name (ebl, ehdr->e_flags, buf, sizeof (buf)));
512 if (gelf_getclass (ebl->elf) == ELFCLASS32)
529 else if (gelf_getclass (ebl->elf) == ELFCLASS64)
552 check_scn_group (Ebl *ebl, int idx)
562 Elf_Scn *scn = elf_getscn (ebl->elf, cnt);
591 idx, section_name (ebl, idx));
595 idx, section_name (ebl, idx),
596 cnt, section_name (ebl, cnt));
602 check_symtab (Ebl *ebl, GElf_Ehdr *ehdr, GElf_Shdr *shdr, int idx)
606 Elf_Data *data = elf_getdata (elf_getscn (ebl->elf, idx), NULL);
610 idx, section_name (ebl, idx));
615 GElf_Shdr *strshdr = gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link),
623 shdr->sh_link, section_name (ebl, shdr->sh_link),
624 idx, section_name (ebl, idx));
635 Elf_Scn *xndxscn = elf_getscn (ebl->elf, cnt);
647 idx, section_name (ebl, idx));
655 size_t sh_entsize = gelf_fsize (ebl->elf, ELF_T_SYM, 1, EV_CURRENT);
659 idx, section_name (ebl, idx));
663 idx, section_name (ebl, idx));
671 idx, section_name (ebl, idx), 0, elf_errmsg (-1));
676 idx, section_name (ebl, idx), "st_name");
679 idx, section_name (ebl, idx), "st_value");
682 idx, section_name (ebl, idx), "st_size");
685 idx, section_name (ebl, idx), "st_info");
688 idx, section_name (ebl, idx), "st_other");
691 idx, section_name (ebl, idx), "st_shndx");
695 xndxscnidx, section_name (ebl, xndxscnidx));
704 idx, section_name (ebl, idx), cnt, elf_errmsg (-1));
714 idx, section_name (ebl, idx), cnt);
717 name = elf_strptr (ebl->elf, shdr->sh_link, sym->st_name);
729 idx, section_name (ebl, idx), cnt, name);
735 xndxscnidx, section_name (ebl, xndxscnidx), cnt, name,
747 idx, section_name (ebl, idx), cnt, name);
752 && !ebl_symbol_type_name (ebl, GELF_ST_TYPE (sym->st_info), NULL, 0))
754 idx, section_name (ebl, idx), cnt, name);
757 && !ebl_symbol_binding_name (ebl, GELF_ST_BIND (sym->st_info), NULL,
761 idx, section_name (ebl, idx), cnt, name);
766 idx, section_name (ebl, idx), cnt, name);
774 idx, section_name (ebl, idx), cnt, name);
778 idx, section_name (ebl, idx), cnt, name);
782 idx, section_name (ebl, idx), cnt, name);
789 destshdr = gelf_getshdr (elf_getscn (ebl->elf, xndx), &destshdr_mem);
797 st_value = sym->st_value & ebl_func_addr_mask (ebl);
802 if (! ebl_check_special_symbol (ebl, sym, name,
813 || (strcmp (section_name (ebl, idx), ".symtab")
814 && strcmp (section_name (ebl, idx),
833 idx, section_name (ebl, idx), cnt, name);
839 idx, section_name (ebl, idx), cnt, name,
840 (int) xndx, section_name (ebl, xndx));
848 idx, section_name (ebl, idx), cnt, name,
849 (int) xndx, section_name (ebl, xndx));
858 idx, section_name (ebl, idx), cnt, name,
859 (int) xndx, section_name (ebl, xndx));
864 idx, section_name (ebl, idx), cnt, name,
865 (int) xndx, section_name (ebl, xndx));
875 phdr = gelf_getphdr (ebl->elf, pcnt, &phdr_mem);
885 idx, section_name (ebl, idx), cnt, name);
891 idx, section_name (ebl, idx), cnt, name);
899 idx, section_name (ebl, idx), cnt, name,
900 (int) xndx, section_name (ebl, xndx));
906 idx, section_name (ebl, idx), cnt, name,
907 (int) xndx, section_name (ebl, xndx));
913 idx, section_name (ebl, idx), cnt, name,
914 (int) xndx, section_name (ebl, xndx));
926 idx, section_name (ebl, idx), cnt, name);
933 idx, section_name (ebl, idx), cnt, name);
940 idx, section_name (ebl, idx), cnt, name);
949 GElf_Shdr *destshdr = gelf_getshdr (elf_getscn (ebl->elf, xndx),
957 while ((gscn = elf_nextscn (ebl->elf, gscn)) != NULL)
961 const char *sname = elf_strptr (ebl->elf,
983 : elf_strptr (ebl->elf, shstrndx,
991 idx, section_name (ebl, idx), xndx);
998 idx, section_name (ebl, idx), xndx, sname);
1003 if (!ebl_check_special_symbol (ebl, sym, name,
1013 idx, section_name (ebl, idx),
1020 idx, section_name (ebl, idx),
1028 idx, section_name (ebl, idx));
1037 GElf_Phdr *phdr = gelf_getphdr (ebl->elf, pcnt, &phdr_mem);
1044 idx, section_name (ebl, idx),
1051 idx, section_name (ebl, idx),
1064 idx, section_name (ebl, idx), cnt, name);
1065 if (! ebl_check_st_other_bits (ebl, sym->st_other))
1068 idx, section_name (ebl, idx), cnt, name);
1075 is_rel_dyn (Ebl *ebl, const GElf_Ehdr *ehdr, int idx, const GElf_Shdr *shdr,
1083 if (strcmp (section_name (ebl, idx), is_rela ? ".rela.dyn" : ".rel.dyn"))
1089 while ((scn = elf_nextscn (ebl->elf, scn)) != NULL)
1106 idx, section_name (ebl, idx));
1122 idx, section_name (ebl, idx));
1133 idx, section_name (ebl, idx),
1138 Elf_Data *reldata = elf_getdata (elf_getscn (ebl->elf,
1152 if (ebl_relative_reloc_p (ebl,
1158 idx, section_name (ebl, idx),
1164 idx, section_name (ebl, idx),
1176 idx, section_name (ebl, idx));
1186 idx, section_name (ebl, idx),
1191 Elf_Data *reldata = elf_getdata (elf_getscn (ebl->elf,
1205 if (ebl_relative_reloc_p (ebl,
1211 idx, section_name (ebl, idx),
1217 idx, section_name (ebl, idx),
1249 check_reloc_shdr (Ebl *ebl, const GElf_Ehdr *ehdr, const GElf_Shdr *shdr,
1258 idx, section_name (ebl, idx));
1261 *destshdrp = gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_info),
1265 if(! ebl_check_reloc_target_type (ebl, (*destshdrp)->sh_type))
1267 reldyn = is_rel_dyn (ebl, ehdr, idx, shdr, true);
1271 idx, section_name (ebl, idx));
1279 idx, section_name (ebl, idx));
1287 idx, section_name (ebl, idx));
1291 size_t sh_entsize = gelf_fsize (ebl->elf, reltype, 1, EV_CURRENT);
1296 idx, section_name (ebl, idx));
1307 GElf_Phdr *phdr = gelf_getphdr (ebl->elf, i, &phdr_mem);
1322 Elf_Scn *dynscn = gelf_offscn (ebl->elf, phdr->p_offset);
1371 check_one_reloc (Ebl *ebl, GElf_Ehdr *ehdr, GElf_Shdr *relshdr, int idx,
1379 if (!ebl_reloc_type_check (ebl, GELF_R_TYPE (r_info)))
1381 idx, section_name (ebl, idx), cnt);
1387 && !ebl_reloc_valid_use (ebl, GELF_R_TYPE (r_info)))
1390 idx, section_name (ebl, idx), cnt);
1394 * gelf_fsize (ebl->elf, ELF_T_SYM, 1, EV_CURRENT)
1398 idx, section_name (ebl, idx), cnt);
1401 if (ebl_none_reloc_p (ebl, GELF_R_TYPE (r_info)))
1404 if (ebl_gotpc_reloc_check (ebl, GELF_R_TYPE (r_info)))
1412 && (name = elf_strptr (ebl->elf, symshdr->sh_link, sym->st_name))
1416 idx, section_name (ebl, idx), cnt,
1417 ebl_reloc_type_name (ebl, GELF_R_SYM (r_info),
1433 idx, section_name (ebl, idx), cnt);
1439 if (ebl_copy_reloc_p (ebl, GELF_R_TYPE (r_info))
1447 idx, section_name (ebl, idx), cnt,
1448 ebl_symbol_type_name (ebl, GELF_ST_TYPE (sym->st_info),
1468 idx, section_name (ebl, idx), cnt);
1484 idx, section_name (ebl, idx));
1492 check_rela (Ebl *ebl, GElf_Ehdr *ehdr, GElf_Shdr *shdr, int idx)
1494 Elf_Data *data = elf_getdata (elf_getscn (ebl->elf, idx), NULL);
1498 idx, section_name (ebl, idx));
1506 bool reldyn = check_reloc_shdr (ebl, ehdr, shdr, idx, ELF_T_RELA, &destshdr,
1509 Elf_Scn *symscn = elf_getscn (ebl->elf, shdr->sh_link);
1515 size_t sh_entsize = gelf_fsize (ebl->elf, ELF_T_RELA, 1, EV_CURRENT);
1524 idx, section_name (ebl, idx), cnt, elf_errmsg (-1));
1528 check_one_reloc (ebl, ehdr, shdr, idx, cnt, symshdr, symdata,
1543 check_rel (Ebl *ebl, GElf_Ehdr *ehdr, GElf_Shdr *shdr, int idx)
1545 Elf_Data *data = elf_getdata (elf_getscn (ebl->elf, idx), NULL);
1549 idx, section_name (ebl, idx));
1557 bool reldyn = check_reloc_shdr (ebl, ehdr, shdr, idx, ELF_T_REL, &destshdr,
1560 Elf_Scn *symscn = elf_getscn (ebl->elf, shdr->sh_link);
1566 size_t sh_entsize = gelf_fsize (ebl->elf, ELF_T_REL, 1, EV_CURRENT);
1575 idx, section_name (ebl, idx), cnt, elf_errmsg (-1));
1579 check_one_reloc (ebl, ehdr, shdr, idx, cnt, symshdr, symdata,
1598 check_dynamic (Ebl *ebl, GElf_Ehdr *ehdr, GElf_Shdr *shdr, int idx)
1651 data = elf_getdata (elf_getscn (ebl->elf, idx), NULL);
1655 idx, section_name (ebl, idx));
1659 strshdr = gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link), &strshdr_mem);
1663 shdr->sh_link, section_name (ebl, shdr->sh_link),
1664 idx, section_name (ebl, idx));
1669 shdr->sh_link, idx, section_name (ebl, idx));
1673 size_t sh_entsize = gelf_fsize (ebl->elf, ELF_T_DYN, 1, EV_CURRENT);
1677 idx, section_name (ebl, idx));
1681 idx, section_name (ebl, idx));
1692 idx, section_name (ebl, idx), cnt, elf_errmsg (-1));
1700 idx, section_name (ebl, idx));
1704 if (!ebl_dynamic_tag_check (ebl, dyn->d_tag))
1706 idx, section_name (ebl, idx), cnt);
1718 idx, section_name (ebl, idx), cnt,
1719 ebl_dynamic_tag_name (ebl, dyn->d_tag,
1728 idx, section_name (ebl, idx), cnt,
1729 ebl_dynamic_tag_name (ebl, dyn->d_tag,
1746 idx, section_name (ebl, idx), cnt);
1759 idx, section_name (ebl, idx), cnt,
1760 shdr->sh_link, section_name (ebl, shdr->sh_link));
1791 GElf_Phdr *phdr = gelf_getphdr (ebl->elf, n, &phdr_mem);
1802 idx, section_name (ebl, idx), cnt,
1803 ebl_dynamic_tag_name (ebl, dyn->d_tag, buf,
1817 idx, section_name (ebl, idx), cnt,
1818 ebl_dynamic_tag_name (ebl, dyn->d_tag, buf,
1820 shdr->sh_link, section_name (ebl, shdr->sh_link));
1837 idx, section_name (ebl, idx),
1838 ebl_dynamic_tag_name (ebl, cnt, buf1, sizeof (buf1)),
1839 ebl_dynamic_tag_name (ebl, inner, buf2, sizeof (buf2)));
1849 idx, section_name (ebl, idx),
1850 ebl_dynamic_tag_name (ebl, cnt, buf, sizeof (buf)));
1858 idx, section_name (ebl, idx));
1865 idx, section_name (ebl, idx),
1873 idx, section_name (ebl, idx),
1880 idx, section_name (ebl, idx),
1890 idx, section_name (ebl, idx), "DT_GNU_PRELINKED");
1894 idx, section_name (ebl, idx), "DT_CHECKSUM");
1900 idx, section_name (ebl, idx));
1911 idx, section_name (ebl, idx), "DT_GNU_CONFLICTSZ");
1915 idx, section_name (ebl, idx), "DT_GNU_LIBLISTSZ");
1919 idx, section_name (ebl, idx), "DT_GNU_CONFLICT");
1923 idx, section_name (ebl, idx), "DT_GNU_LIBLIST");
1929 check_symtab_shndx (Ebl *ebl, GElf_Ehdr *ehdr, GElf_Shdr *shdr, int idx)
1935 idx, section_name (ebl, idx));
1939 Elf_Scn *symscn = elf_getscn (ebl->elf, shdr->sh_link);
1945 idx, section_name (ebl, idx));
1949 idx, section_name (ebl, idx), shdr->sh_link);
1957 idx, section_name (ebl, idx));
1966 idx, section_name (ebl, idx));
1970 idx, section_name (ebl, idx));
1975 GElf_Shdr *rshdr = gelf_getshdr (elf_getscn (ebl->elf, cnt), &rshdr_mem);
1981 idx, section_name (ebl, idx),
1982 cnt, section_name (ebl, cnt));
1987 Elf_Data *data = elf_getdata (elf_getscn (ebl->elf, idx), NULL);
1991 idx, section_name (ebl, idx));
2023 check_sysv_hash (Ebl *ebl, GElf_Shdr *shdr, Elf_Data *data, int idx,
2033 idx, section_name (ebl, idx), (long int) shdr->sh_size,
2046 idx, section_name (ebl, idx));
2061 idx, section_name (ebl, idx), cnt - 2);
2071 idx, section_name (ebl, idx), cnt - 2 - nbucket);
2077 check_sysv_hash64 (Ebl *ebl, GElf_Shdr *shdr, Elf_Data *data, int idx,
2090 idx, section_name (ebl, idx), (long int) shdr->sh_size,
2103 idx, section_name (ebl, idx));
2118 idx, section_name (ebl, idx), cnt - 2);
2128 idx, section_name (ebl, idx), (uint64_t) cnt - 2 - nbucket);
2134 check_gnu_hash (Ebl *ebl, GElf_Shdr *shdr, Elf_Data *data, int idx,
2141 idx, section_name (ebl, idx));
2153 idx, section_name (ebl, idx), bitmask_words);
2158 if (gelf_getclass (ebl->elf) == ELFCLASS64)
2169 idx, section_name (ebl, idx), (long int) shdr->sh_size,
2178 idx, section_name (ebl, idx), shift);
2189 Elf_Data *symdata = elf_getdata (elf_getscn (ebl->elf, shdr->sh_link), NULL);
2198 size_t classbits = gelf_getclass (ebl->elf) == ELFCLASS32 ? 32 : 64;
2212 idx, section_name (ebl, idx), cnt - (4 + bitmask_words));
2233 idx, section_name (ebl, idx), symidx,
2237 ? elf_strptr (ebl->elf, symshdr->sh_link,
2246 idx, section_name (ebl, idx), symidx,
2255 idx, section_name (ebl, idx), symidx,
2285 idx, section_name (ebl, idx), cnt - (4 + bitmask_words));
2290 idx, section_name (ebl, idx), cnt - (4 + bitmask_words));
2296 idx, section_name (ebl, idx));
2303 check_hash (int tag, Ebl *ebl, GElf_Ehdr *ehdr, GElf_Shdr *shdr, int idx)
2309 idx, section_name (ebl, idx));
2313 Elf_Data *data = elf_getdata (elf_getscn (ebl->elf, idx), NULL);
2317 idx, section_name (ebl, idx));
2322 GElf_Shdr *symshdr = gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link),
2327 idx, section_name (ebl, idx));
2331 idx, section_name (ebl, idx), shdr->sh_link);
2334 ? (gelf_getclass (ebl->elf) == ELFCLASS32
2336 : (size_t) ebl_sysvhash_entrysize (ebl));
2341 idx, section_name (ebl, idx));
2345 idx, section_name (ebl, idx));
2351 idx, section_name (ebl, idx));
2358 if (ebl_sysvhash_entrysize (ebl) == sizeof (Elf64_Xword))
2359 check_sysv_hash64 (ebl, shdr, data, idx, symshdr);
2361 check_sysv_hash (ebl, shdr, data, idx, symshdr);
2365 check_gnu_hash (ebl, shdr, data, idx, symshdr);
2376 compare_hash_gnu_hash (Ebl *ebl, GElf_Ehdr *ehdr, size_t hash_idx,
2379 Elf_Scn *hash_scn = elf_getscn (ebl->elf, hash_idx);
2383 Elf_Scn *gnu_hash_scn = elf_getscn (ebl->elf, gnu_hash_idx);
2400 hash_idx, elf_strptr (ebl->elf, shstrndx, hash_shdr->sh_name),
2402 elf_strptr (ebl->elf, shstrndx, gnu_hash_shdr->sh_name));
2406 Elf_Scn *sym_scn = elf_getscn (ebl->elf, hash_shdr->sh_link);
2417 hash_name = elf_strptr (ebl->elf, shstrndx, hash_shdr->sh_name);
2418 gnu_hash_name = elf_strptr (ebl->elf, shstrndx, gnu_hash_shdr->sh_name);
2568 elf_strptr (ebl->elf, shstrndx, gnu_hash_shdr->sh_name));
2571 hash_idx, elf_strptr (ebl->elf, shstrndx, hash_shdr->sh_name));
2580 elf_strptr (ebl->elf, shstrndx, gnu_hash_shdr->sh_name),
2582 elf_strptr (ebl->elf, shstrndx, hash_shdr->sh_name));
2592 elf_strptr (ebl->elf, shstrndx, hash_shdr->sh_name),
2594 elf_strptr (ebl->elf, shstrndx, gnu_hash_shdr->sh_name));
2601 check_null (Ebl *ebl, GElf_Shdr *shdr, int idx)
2606 idx, section_name (ebl, idx), #name)
2621 check_group (Ebl *ebl, GElf_Ehdr *ehdr, GElf_Shdr *shdr, int idx)
2627 idx, section_name (ebl, idx));
2632 Elf_Scn *symscn = elf_getscn (ebl->elf, shdr->sh_link);
2637 idx, section_name (ebl, idx), elf_errmsg (-1));
2643 idx, section_name (ebl, idx));
2645 if (shdr->sh_info >= symshdr->sh_size / gelf_fsize (ebl->elf, ELF_T_SYM,
2649 idx, section_name (ebl, idx));
2653 idx, section_name (ebl, idx));
2661 idx, section_name (ebl, idx));
2662 else if (elf_strptr (ebl->elf, symshdr->sh_link, sym->st_name) == NULL)
2665 idx, section_name (ebl, idx));
2666 else if (strcmp (elf_strptr (ebl->elf, symshdr->sh_link, sym->st_name),
2670 idx, section_name (ebl, idx));
2675 idx, section_name (ebl, idx));
2678 Elf_Data *data = elf_getdata (elf_getscn (ebl->elf, idx), NULL);
2681 idx, section_name (ebl, idx), elf_errmsg (-1));
2691 idx, section_name (ebl, idx));
2697 idx, section_name (ebl, idx));
2705 idx, section_name (ebl, idx));
2709 idx, section_name (ebl, idx));
2719 idx, section_name (ebl, idx));
2732 idx, section_name (ebl, idx), cnt / elsize);
2736 GElf_Shdr *refshdr = gelf_getshdr (elf_getscn (ebl->elf, val),
2741 idx, section_name (ebl, idx), cnt / elsize,
2748 idx, section_name (ebl, idx),
2749 val, section_name (ebl, val));
2754 idx, section_name (ebl, idx), cnt / elsize,
2755 val, section_name (ebl, val));
2761 val, section_name (ebl, val));
2831 has_copy_reloc (Ebl *ebl, unsigned int symscnndx, unsigned int symndx)
2837 while ((scn = elf_nextscn (ebl->elf, scn)) != NULL)
2863 && ebl_copy_reloc_p (ebl, GELF_R_TYPE (rel->r_info)))
2875 && ebl_copy_reloc_p (ebl, GELF_R_TYPE (rela->r_info)))
2884 in_nobits_scn (Ebl *ebl, unsigned int shndx)
2887 GElf_Shdr *shdr = gelf_getshdr (elf_getscn (ebl->elf, shndx), &shdr_mem);
2930 check_versym (Ebl *ebl, int idx)
2932 Elf_Scn *scn = elf_getscn (ebl->elf, idx);
2943 idx, section_name (ebl, idx));
2947 Elf_Scn *symscn = elf_getscn (ebl->elf, shdr->sh_link);
2958 idx, section_name (ebl, idx),
2959 shdr->sh_link, section_name (ebl, shdr->sh_link));
2970 idx, section_name (ebl, idx),
2971 shdr->sh_link, section_name (ebl, shdr->sh_link));
2986 idx, section_name (ebl, idx), cnt);
3002 idx, section_name (ebl, idx), cnt);
3010 idx, section_name (ebl, idx), cnt);
3024 idx, section_name (ebl, idx), cnt, (int) *versym);
3029 idx, section_name (ebl, idx), cnt, (int) *versym);
3035 if (!has_copy_reloc (ebl, shdr->sh_link, cnt)
3036 && !in_nobits_scn (ebl, sym->st_shndx))
3039 idx, section_name (ebl, idx), cnt, (int) *versym);
3087 check_verneed (Ebl *ebl, GElf_Shdr *shdr, int idx)
3093 GElf_Shdr *strshdr = gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link),
3100 idx, section_name (ebl, idx));
3102 Elf_Data *data = elf_getdata (elf_getscn (ebl->elf, idx), NULL);
3106 idx, section_name (ebl, idx));
3125 idx, section_name (ebl, idx), cnt, (int) need->vn_version);
3127 if (need->vn_cnt > 0 && need->vn_aux < gelf_fsize (ebl->elf, ELF_T_VNEED,
3132 idx, section_name (ebl, idx), cnt);
3136 const char *libname = elf_strptr (ebl->elf, shdr->sh_link,
3142 idx, section_name (ebl, idx), cnt);
3147 if (unknown_dependency_p (ebl->elf, libname))
3150 idx, section_name (ebl, idx), cnt);
3162 idx, section_name (ebl, idx), need->vn_cnt - cnt2, cnt);
3164 const char *verstr = elf_strptr (ebl->elf, shdr->sh_link,
3170 idx, section_name (ebl, idx), need->vn_cnt - cnt2, cnt);
3179 idx, section_name (ebl, idx), need->vn_cnt - cnt2,
3188 idx, section_name (ebl, idx), need->vn_cnt - cnt2,
3194 && aux->vna_next < gelf_fsize (ebl->elf, ELF_T_VNAUX, 1,
3199 idx, section_name (ebl, idx), need->vn_cnt - cnt2, cnt);
3204 gelf_fsize (ebl->elf, ELF_T_VNAUX, 1, EV_CURRENT));
3216 idx, section_name (ebl, idx), cnt);
3224 idx, section_name (ebl, idx), cnt);
3234 check_verdef (Ebl *ebl, GElf_Shdr *shdr, int idx)
3240 GElf_Shdr *strshdr = gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link),
3247 idx, section_name (ebl, idx));
3249 Elf_Data *data = elf_getdata (elf_getscn (ebl->elf, idx), NULL);
3254 idx, section_name (ebl, idx));
3286 idx, section_name (ebl, idx));
3290 idx, section_name (ebl, idx));
3296 idx, section_name (ebl, idx), cnt);
3301 idx, section_name (ebl, idx), cnt, (int) def->vd_version);
3303 if (def->vd_cnt > 0 && def->vd_aux < gelf_fsize (ebl->elf, ELF_T_VDEF,
3308 idx, section_name (ebl, idx), cnt);
3318 const char *name = elf_strptr (ebl->elf, shdr->sh_link, aux->vda_name);
3323 idx, section_name (ebl, idx), cnt);
3330 idx, section_name (ebl, idx), cnt, (int) hashval,
3338 idx, section_name (ebl, idx), cnt, name);
3353 name = elf_strptr (ebl->elf, shdr->sh_link, aux->vda_name);
3358 idx, section_name (ebl, idx), cnt);
3370 && aux->vda_next < gelf_fsize (ebl->elf, ELF_T_VDAUX, 1,
3375 idx, section_name (ebl, idx), cnt);
3380 gelf_fsize (ebl->elf, ELF_T_VDAUX, 1, EV_CURRENT));
3392 idx, section_name (ebl, idx), cnt);
3400 idx, section_name (ebl, idx), cnt);
3407 idx, section_name (ebl, idx));
3424 idx, section_name (ebl, idx), namelist->name);
3443 check_attributes (Ebl *ebl, GElf_Ehdr *ehdr, GElf_Shdr *shdr, int idx)
3448 idx, section_name (ebl, idx));
3452 Elf_Data *data = elf_rawdata (elf_getscn (ebl->elf, idx), NULL);
3456 idx, section_name (ebl, idx));
3464 idx, section_name (ebl, idx));
3476 idx, section_name (ebl, idx), buffer_pos (data, p));
3485 idx, section_name (ebl, idx), buffer_pos (data, p));
3497 idx, section_name (ebl, idx), buffer_pos (data, p));
3514 idx, section_name (ebl, idx), buffer_pos (data, chunk));
3523 idx, section_name (ebl, idx), buffer_pos (data, q));
3532 idx, section_name (ebl, idx), buffer_pos (data, q));
3547 idx, section_name (ebl, idx), buffer_pos (data, q));
3558 idx, section_name (ebl, idx), buffer_pos (data, chunk), subsection_tag);
3576 idx, section_name (ebl, idx), buffer_pos (data, chunk));
3587 idx, section_name (ebl, idx), buffer_pos (data, chunk));
3595 if (!ebl_check_object_attribute (ebl, (const char *) name,
3600 idx, section_name (ebl, idx), buffer_pos (data, chunk), tag);
3604 idx, section_name (ebl, idx), buffer_pos (data, chunk),
3614 idx, section_name (ebl, idx), buffer_pos (data, p), name);
3620 idx, section_name (ebl, idx), buffer_pos (data, p));
3700 check_sections (Ebl *ebl, GElf_Ehdr *ehdr)
3713 GElf_Shdr *shdr = gelf_getshdr (elf_getscn (ebl->elf, 0), &shdr_mem);
3756 Elf_Scn *scn = elf_getscn (ebl->elf, cnt);
3762 cnt, section_name (ebl, cnt), elf_errmsg (-1));
3766 const char *scnname = elf_strptr (ebl->elf, shstrndx, shdr->sh_name);
3785 && ebl_bss_plt_p (ebl))
3799 ebl_section_type_name (ebl, special_sections[s].type,
3801 ebl_section_type_name (ebl, shdr->sh_type,
3912 cnt, section_name (ebl, cnt));
3914 if (elf_strptr (ebl->elf, shstrndx, shdr->sh_name) == NULL)
3924 && ebl_section_type_name (ebl, shdr->sh_type, NULL, 0) == NULL)
3926 cnt, section_name (ebl, cnt),
3943 if (!ebl_machine_section_flag_check (ebl,
3948 cnt, section_name (ebl, cnt), sh_flags & SHF_MASKPROC);
3957 cnt, section_name (ebl, cnt), sh_flags);
3965 cnt, section_name (ebl, cnt));
3975 cnt, section_name (ebl, cnt));
3980 cnt, section_name (ebl, cnt));
3986 cnt, section_name (ebl, cnt), elf_errmsg (-1));
3992 cnt, section_name (ebl, cnt));
3997 cnt, section_name (ebl, cnt));
4004 cnt, section_name (ebl, cnt));
4009 cnt, section_name (ebl, cnt));
4012 check_scn_group (ebl, cnt);
4028 cnt, section_name (ebl, cnt), shdr->sh_type);
4037 cnt, section_name (ebl, cnt));
4040 && !ebl_check_special_section (ebl, cnt, shdr,
4041 section_name (ebl, cnt)))
4044 cnt, section_name (ebl, cnt));
4058 if ((phdr = gelf_getphdr (ebl->elf, pcnt, &phdr_mem)) != NULL
4075 cnt, section_name (ebl, cnt), pcnt);
4085 cnt, section_name (ebl, cnt), pcnt);
4097 databits = elf_getdata_rawchunk (ebl->elf,
4111 cnt, section_name (ebl, cnt), pcnt);
4122 cnt, section_name (ebl, cnt), pcnt);
4133 cnt, section_name (ebl, cnt), pcnt);
4143 cnt, section_name (ebl, cnt), pcnt);
4153 cnt, section_name (ebl, cnt));
4159 cnt, section_name (ebl, cnt));
4167 cnt, section_name (ebl, cnt));
4170 check_symtab (ebl, ehdr, shdr, cnt);
4174 check_rela (ebl, ehdr, shdr, cnt);
4178 check_rel (ebl, ehdr, shdr, cnt);
4182 check_dynamic (ebl, ehdr, shdr, cnt);
4186 check_symtab_shndx (ebl, ehdr, shdr, cnt);
4190 check_hash (shdr->sh_type, ebl, ehdr, shdr, cnt);
4195 check_hash (shdr->sh_type, ebl, ehdr, shdr, cnt);
4200 check_null (ebl, shdr, cnt);
4204 check_group (ebl, ehdr, shdr, cnt);
4208 check_note_section (ebl, ehdr, shdr, cnt);
4221 check_verneed (ebl, shdr, cnt);
4225 check_verdef (ebl, shdr, cnt);
4229 check_attributes (ebl, ehdr, shdr, cnt);
4245 GElf_Phdr *phdr = gelf_getphdr (ebl->elf, pcnt, &phdr_mem);
4270 check_versym (ebl, versym_scnndx);
4298 compare_hash_gnu_hash (ebl, ehdr, hash_idx, gnu_hash_idx);
4305 check_note_data (Ebl *ebl, const GElf_Ehdr *ehdr,
4350 shndx, section_name (ebl, shndx),
4411 shndx, section_name (ebl, shndx),
4423 check_note (Ebl *ebl, GElf_Ehdr *ehdr, GElf_Phdr *phdr, int cnt)
4439 Elf_Data *data = elf_getdata_rawchunk (ebl->elf,
4444 notes_size = check_note_data (ebl, ehdr, data, 0, cnt, phdr->p_offset);
4456 check_note_section (Ebl *ebl, GElf_Ehdr *ehdr, GElf_Shdr *shdr, int idx)
4461 Elf_Data *data = elf_getdata (elf_getscn (ebl->elf, idx), NULL);
4465 idx, section_name (ebl, idx));
4473 idx, section_name (ebl, idx));
4475 GElf_Off notes_size = check_note_data (ebl, ehdr, data, idx, 0, 0);
4479 idx, section_name (ebl, idx));
4483 idx, section_name (ebl, idx), shdr->sh_size - notes_size);
4492 check_program_header (Ebl *ebl, GElf_Ehdr *ehdr)
4511 phdr = gelf_getphdr (ebl->elf, cnt, &phdr_mem);
4523 && ebl_segment_type_name (ebl, phdr->p_type, NULL, 0) == NULL)
4546 check_note (ebl, ehdr, phdr, cnt);
4557 while ((scn = elf_nextscn (ebl->elf, scn)) != NULL)
4588 phdr2 = gelf_getphdr (ebl->elf, inner, &phdr2_mem);
4638 phdr2 = gelf_getphdr (ebl->elf, inner, &phdr2_mem);
4665 while ((scn = elf_nextscn (ebl->elf, scn)) != NULL)
4674 && elf_strptr (ebl->elf, shstrndx, shdr->sh_name) != NULL
4676 elf_strptr (ebl->elf, shstrndx, shdr->sh_name)))
4755 check_exception_data (Ebl *ebl __attribute__ ((unused)),
4781 Ebl *ebl;
4798 ebl = ebl_openbackend (elf);
4801 is an error. Often we'll get a "dummy" ebl, except if something
4804 if (ebl == NULL)
4811 check_elf_header (ebl, ehdr, size);
4814 check_program_header (ebl, ehdr);
4818 check_sections (ebl, ehdr);
4823 check_exception_data (ebl, ehdr);
4830 ebl_closebackend (ebl);