Lines Matching defs:shdr
212 static void handle_relocs_rel (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr);
213 static void handle_relocs_rela (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr);
215 static void handle_symtab (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr);
217 static void handle_verneed (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr);
218 static void handle_verdef (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr);
220 GElf_Shdr *shdr);
767 GElf_Shdr *shdr = gelf_getshdr (elf_getscn (ebl->elf, 0), &shdr_mem);
768 if (shdr != NULL)
770 (uint32_t) shdr->sh_size);
779 GElf_Shdr *shdr = gelf_getshdr (elf_getscn (ebl->elf, 0), &shdr_mem);
780 if (shdr != NULL)
783 (uint32_t) shdr->sh_link);
853 GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem);
854 if (unlikely (shdr == NULL))
860 if (shdr->sh_flags & SHF_WRITE)
862 if (shdr->sh_flags & SHF_ALLOC)
864 if (shdr->sh_flags & SHF_EXECINSTR)
866 if (shdr->sh_flags & SHF_MERGE)
868 if (shdr->sh_flags & SHF_STRINGS)
870 if (shdr->sh_flags & SHF_INFO_LINK)
872 if (shdr->sh_flags & SHF_LINK_ORDER)
874 if (shdr->sh_flags & SHF_OS_NONCONFORMING)
876 if (shdr->sh_flags & SHF_GROUP)
878 if (shdr->sh_flags & SHF_TLS)
880 if (shdr->sh_flags & SHF_ORDERED)
882 if (shdr->sh_flags & SHF_EXCLUDE)
891 elf_strptr (ebl->elf, shstrndx, shdr->sh_name)
893 ebl_section_type_name (ebl, shdr->sh_type, buf, sizeof (buf)),
894 ehdr->e_ident[EI_CLASS] == ELFCLASS32 ? 8 : 16, shdr->sh_addr,
895 ehdr->e_ident[EI_CLASS] == ELFCLASS32 ? 6 : 8, shdr->sh_offset,
896 ehdr->e_ident[EI_CLASS] == ELFCLASS32 ? 6 : 8, shdr->sh_size,
897 shdr->sh_entsize, flagbuf, shdr->sh_link, shdr->sh_info,
898 shdr->sh_addralign);
1002 GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem);
1003 if (unlikely (shdr == NULL))
1008 if (shdr->sh_size > 0
1011 && (shdr->sh_flags & SHF_ALLOC
1012 ? (shdr->sh_addr >= phdr->p_vaddr
1013 && (shdr->sh_addr + shdr->sh_size
1015 : (shdr->sh_offset >= phdr->p_offset
1016 && (shdr->sh_offset + shdr->sh_size
1020 && shdr->sh_addr >= relro_from
1021 && shdr->sh_addr + shdr->sh_size <= relro_to)
1026 else if (has_relro && in_relro && shdr->sh_addr >= relro_to)
1032 && shdr->sh_addr + shdr->sh_size > relro_to)
1053 && shdr->sh_addr >= phdr2->p_vaddr
1054 && (shdr->sh_addr + shdr->sh_size
1075 elf_strptr (ebl->elf, shstrndx, shdr->sh_name));
1079 && shdr->sh_addr + shdr->sh_size > relro_to)
1096 handle_scngrp (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr)
1101 Elf_Scn *symscn = elf_getscn (ebl->elf, shdr->sh_link);
1130 elf_strptr (ebl->elf, shstrndx, shdr->sh_name),
1132 gelf_getsym (symdata, shdr->sh_info, &sym_mem)->st_name)
1162 GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem);
1164 if (shdr != NULL && shdr->sh_type == SHT_GROUP)
1165 handle_scngrp (ebl, scn, shdr);
1280 handle_dynamic (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr)
1302 shdr->sh_size / shdr->sh_entsize),
1303 (unsigned long int) (shdr->sh_size / shdr->sh_entsize),
1304 class == ELFCLASS32 ? 10 : 18, shdr->sh_addr,
1305 shdr->sh_offset,
1306 (int) shdr->sh_link,
1308 gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link),
1312 for (cnt = 0; cnt < shdr->sh_size / shdr->sh_entsize; ++cnt)
1335 elf_strptr (ebl->elf, shdr->sh_link, dyn->d_un.d_val));
1340 elf_strptr (ebl->elf, shdr->sh_link, dyn->d_un.d_val));
1345 elf_strptr (ebl->elf, shdr->sh_link, dyn->d_un.d_val));
1350 elf_strptr (ebl->elf, shdr->sh_link, dyn->d_un.d_val));
1421 GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem);
1422 if (shdr != NULL && shdr->sh_type == SHT_DYNAMIC)
1423 handle_dynamic (ebl, scn, shdr);
1441 GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem);
1443 if (likely (shdr != NULL))
1445 if (shdr->sh_type == SHT_REL)
1446 handle_relocs_rel (ebl, scn, shdr);
1447 else if (shdr->sh_type == SHT_RELA)
1448 handle_relocs_rela (ebl, scn, shdr);
1456 handle_relocs_rel (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr)
1459 int nentries = shdr->sh_size / shdr->sh_entsize;
1467 Elf_Scn *symscn = elf_getscn (ebl->elf, shdr->sh_link);
1474 GElf_Shdr *destshdr = gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_info),
1480 shdr->sh_offset);
1496 if (shdr->sh_info != 0)
1503 elf_strptr (ebl->elf, shstrndx, shdr->sh_name),
1504 (unsigned int) shdr->sh_info,
1506 shdr->sh_offset,
1518 elf_strptr (ebl->elf, shstrndx, shdr->sh_name),
1519 shdr->sh_offset,
1601 handle_relocs_rela (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr)
1604 int nentries = shdr->sh_size / shdr->sh_entsize;
1612 Elf_Scn *symscn = elf_getscn (ebl->elf, shdr->sh_link);
1619 GElf_Shdr *destshdr = gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_info),
1625 shdr->sh_offset);
1647 elf_strptr (ebl->elf, shstrndx, shdr->sh_name),
1648 (unsigned int) shdr->sh_info,
1650 shdr->sh_offset,
1704 if (unlikely (shdr == NULL))
1747 GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem);
1749 if (shdr != NULL && shdr->sh_type == (GElf_Word) type)
1750 handle_symtab (ebl, scn, shdr);
1756 handle_symtab (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr)
1818 elf_strptr (ebl->elf, shstrndx, shdr->sh_name), nsyms);
1822 shdr->sh_info),
1823 (unsigned long int) shdr->sh_info,
1824 (unsigned int) shdr->sh_link,
1826 gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link),
1865 elf_strptr (ebl->elf, shdr->sh_link, sym->st_name));
2000 GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem);
2002 if (likely (shdr != NULL))
2004 if (shdr->sh_type == SHT_GNU_verneed)
2005 handle_verneed (ebl, scn, shdr);
2006 else if (shdr->sh_type == SHT_GNU_verdef)
2007 handle_verdef (ebl, scn, shdr);
2008 else if (shdr->sh_type == SHT_GNU_versym)
2009 handle_versym (ebl, scn, shdr);
2048 handle_verneed (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr)
2068 shdr->sh_info),
2070 elf_strptr (ebl->elf, shstrndx, shdr->sh_name), shdr->sh_info,
2071 class == ELFCLASS32 ? 10 : 18, shdr->sh_addr,
2072 shdr->sh_offset,
2073 (unsigned int) shdr->sh_link,
2075 gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link),
2079 for (int cnt = shdr->sh_info; --cnt >= 0; )
2089 elf_strptr (ebl->elf, shdr->sh_link, need->vn_file),
2102 elf_strptr (ebl->elf, shdr->sh_link, aux->vna_name),
2116 handle_verdef (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr)
2135 shdr->sh_info),
2137 elf_strptr (ebl->elf, shstrndx, shdr->sh_name),
2138 shdr->sh_info,
2139 class == ELFCLASS32 ? 10 : 18, shdr->sh_addr,
2140 shdr->sh_offset,
2141 (unsigned int) shdr->sh_link,
2143 gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link),
2147 for (int cnt = shdr->sh_info; --cnt >= 0; )
2167 elf_strptr (ebl->elf, shdr->sh_link, aux->vda_name));
2178 elf_strptr (ebl->elf, shdr->sh_link, aux->vda_name));
2190 handle_versym (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr)
2412 shdr->sh_size / shdr->sh_entsize),
2414 elf_strptr (ebl->elf, shstrndx, shdr->sh_name),
2415 (int) (shdr->sh_size / shdr->sh_entsize),
2416 class == ELFCLASS32 ? 10 : 18, shdr->sh_addr,
2417 shdr->sh_offset,
2418 (unsigned int) shdr->sh_link,
2420 gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link),
2424 for (unsigned int cnt = 0; cnt < shdr->sh_size / shdr->sh_entsize; ++cnt)
2464 print_hash_info (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr, size_t shstrndx,
2480 elf_strptr (ebl->elf, shstrndx, shdr->sh_name),
2483 shdr->sh_addr,
2484 shdr->sh_offset,
2485 (unsigned int) shdr->sh_link,
2487 gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link),
2532 handle_sysv_hash (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr, size_t shstrndx)
2564 print_hash_info (ebl, scn, shdr, shstrndx, maxlength, nbucket, nsyms,
2574 handle_sysv_hash64 (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr, size_t shstrndx)
2606 print_hash_info (ebl, scn, shdr, shstrndx, maxlength, nbucket, nsyms,
2615 handle_gnu_hash (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr, size_t shstrndx)
2685 print_hash_info (ebl, scn, shdr, shstrndx, maxlength, nbucket, nsyms,
2709 GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem);
2711 if (likely (shdr != NULL))
2713 if (shdr->sh_type == SHT_HASH)
2716 handle_sysv_hash64 (ebl, scn, shdr, shstrndx);
2718 handle_sysv_hash (ebl, scn, shdr, shstrndx);
2720 else if (shdr->sh_type == SHT_GNU_HASH)
2721 handle_gnu_hash (ebl, scn, shdr, shstrndx);
2743 GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem);
2745 if (shdr != NULL && shdr->sh_type == SHT_GNU_LIBLIST)
2747 int nentries = shdr->sh_size / shdr->sh_entsize;
2754 elf_strptr (ebl->elf, shstrndx, shdr->sh_name),
2755 shdr->sh_offset,
2778 cnt, elf_strptr (ebl->elf, shdr->sh_link, lib->l_name),
2805 GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem);
2807 if (shdr == NULL || shdr->sh_type != SHT_GNU_ATTRIBUTES)
2814 elf_strptr (ebl->elf, shstrndx, shdr->sh_name),
2815 shdr->sh_size, shdr->sh_offset);
3964 GElf_Shdr *shdr, Dwarf *dbg)
3968 ".debug_abbrev", (uint64_t) shdr->sh_offset);
3971 while (offset < shdr->sh_size)
4036 GElf_Shdr *shdr, Dwarf *dbg)
4052 ".debug_aranges", (uint64_t) shdr->sh_offset, cnt);
4091 GElf_Ehdr *ehdr, Elf_Scn *scn, GElf_Shdr *shdr,
4105 ".debug_ranges", (uint64_t) shdr->sh_offset);
4167 GElf_Shdr *shdr __attribute__ ((unused)),
4393 GElf_Shdr *shdr, Dwarf *dbg)
4397 ".debug_info", (uint64_t) shdr->sh_offset);
4400 if (shdr->sh_size == 0)
4514 Elf_Scn *scn, GElf_Shdr *shdr, Dwarf *dbg)
4518 ".debug_line", (uint64_t) shdr->sh_offset);
4520 if (shdr->sh_size == 0)
4952 GElf_Shdr *shdr,
4966 ".debug_loc", (uint64_t) shdr->sh_offset);
5057 Elf_Scn *scn, GElf_Shdr *shdr, Dwarf *dbg)
5061 ".debug_macinfo", (uint64_t) shdr->sh_offset);
5230 GElf_Shdr *shdr, Dwarf *dbg)
5233 ".debug_pubnames", (uint64_t) shdr->sh_offset);
5245 GElf_Shdr *shdr, Dwarf *dbg)
5247 /* Compute floor(log16(shdr->sh_size)). */
5248 GElf_Addr tmp = shdr->sh_size;
5259 ".debug_str", (uint64_t) shdr->sh_offset,
5264 while (offset < shdr->sh_size)
5305 GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem);
5307 if (shdr != NULL && shdr->sh_type == SHT_PROGBITS)
5334 shdr->sh_name);
5341 debug_sections[n].fp (dwflmod, ebl, ehdr, scn, shdr, dbg);
6165 GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem);
6167 if (shdr == NULL || shdr->sh_type != SHT_NOTE)
6174 elf_strptr (ebl->elf, shstrndx, shdr->sh_name),
6175 shdr->sh_size, shdr->sh_offset);
6177 handle_notes_data (ebl, ehdr, shdr->sh_offset,
6237 dump_data_section (Elf_Scn *scn, const GElf_Shdr *shdr, const char *name)
6239 if (shdr->sh_size == 0 || shdr->sh_type == SHT_NOBITS)
6253 shdr->sh_size, shdr->sh_offset);
6260 print_string_section (Elf_Scn *scn, const GElf_Shdr *shdr, const char *name)
6262 if (shdr->sh_size == 0)
6275 shdr->sh_size, shdr->sh_offset);
6297 void (*dump) (Elf_Scn *scn, const GElf_Shdr *shdr,