Lines Matching refs:iShdr

794     for (unsigned iShdr = 0; iShdr < pModElf->Ehdr.e_shnum; iShdr++)
796 if (paShdrs[iShdr].sh_flags & SHF_ALLOC)
798 AssertMsgReturn((size_t)paShdrs[iShdr].sh_size == (size_t)paShdrs[iShdr].sh_size, (FMT_ELF_SIZE "\n", paShdrs[iShdr].sh_size), VERR_IMAGE_TOO_BIG);
799 switch (paShdrs[iShdr].sh_type)
802 memset((uint8_t *)pvBits + paShdrs[iShdr].sh_addr, 0, (size_t)paShdrs[iShdr].sh_size);
808 int rc = pModElf->Core.pReader->pfnRead(pModElf->Core.pReader, (uint8_t *)pvBits + paShdrs[iShdr].sh_addr,
809 (size_t)paShdrs[iShdr].sh_size, paShdrs[iShdr].sh_offset);
812 Log(("RTLdrELF: %s: Read error when reading " FMT_ELF_SIZE " bytes at " FMT_ELF_OFF ", iShdr=%d\n",
814 paShdrs[iShdr].sh_size, paShdrs[iShdr].sh_offset, iShdr));
875 for (unsigned iShdr = 0; iShdr < pModElf->Ehdr.e_shnum; iShdr++)
877 const Elf_Shdr *pShdrRel = &paShdrs[iShdr];
899 iShdr, ELF_SH_STR(pModElf, pShdrRel->sh_name), (int)pShdrRel->sh_info, (int)pShdrRel->sh_link));
1034 for (unsigned iShdr = 0; iShdr < pModElf->Ehdr.e_shnum; iShdr++)
1037 if (paShdrs[iShdr].sh_type != SHT_PROGBITS)
1039 if (paShdrs[iShdr].sh_flags & SHF_ALLOC)
1043 const char *pszSectName = ELF_SH_STR(pModElf, paShdrs[iShdr].sh_name);
1050 DbgInfo.offFile = paShdrs[iShdr].sh_offset;
1051 DbgInfo.cb = paShdrs[iShdr].sh_size;
1056 if ((paShdrs[iShdr].sh_size & 3) || paShdrs[iShdr].sh_size < 8)
1061 DbgInfo.pszExtFile = (const char *)((uintptr_t)pModElf->pvBits + (uintptr_t)paShdrs[iShdr].sh_offset);
1062 if (!RTStrEnd(DbgInfo.pszExtFile, paShdrs[iShdr].sh_size))
1064 DbgInfo.u.Dwo.uCrc32 = *(uint32_t *)((uintptr_t)DbgInfo.pszExtFile + (uintptr_t)paShdrs[iShdr].sh_size
1073 DbgInfo.iDbgInfo = iShdr - 1;
1122 for (unsigned iShdr = 1; iShdr < pModElf->Ehdr.e_shnum; iShdr++)
1125 Seg.pszName = ELF_SH_STR(pModElf, paShdrs[iShdr].sh_name);
1130 Seg.cchName = (uint32_t)RTStrPrintf(szName, sizeof(szName), "UnamedSect%02u", iShdr);
1136 if (paShdrs[iShdr].sh_flags & SHF_WRITE)
1138 if (paShdrs[iShdr].sh_flags & SHF_EXECINSTR)
1140 Seg.cb = paShdrs[iShdr].sh_size;
1141 Seg.Alignment = paShdrs[iShdr].sh_addralign;
1142 if (paShdrs[iShdr].sh_flags & SHF_ALLOC)
1144 Seg.LinkAddress = paOrgShdrs[iShdr].sh_addr;
1145 Seg.RVA = paShdrs[iShdr].sh_addr;
1146 const Elf_Shdr *pShdr2 = RTLDRELF_NAME(GetFirstAllocatedSection)(&paShdrs[iShdr + 1],
1147 pModElf->Ehdr.e_shnum - iShdr - 1);
1149 && pShdr2->sh_addr >= paShdrs[iShdr].sh_addr
1151 Seg.cbMapped = pShdr2->sh_addr - paShdrs[iShdr].sh_addr;
1153 Seg.cbMapped = RT_MAX(paShdrs[iShdr].sh_size, paShdrs[iShdr].sh_addralign);
1162 if (paShdrs[iShdr].sh_type != SHT_NOBITS)
1164 Seg.offFile = paShdrs[iShdr].sh_offset;
1165 Seg.cbFile = paShdrs[iShdr].sh_size;
1614 * @param iShdr The index of section header which should be validated.
1619 static int RTLDRELF_NAME(ValidateSectionHeader)(PRTLDRMODELF pModElf, unsigned iShdr, const char *pszLogName, RTFOFF cbRawImage)
1621 const Elf_Shdr *pShdr = &pModElf->paShdrs[iShdr];
1634 iShdr,
1640 if (iShdr == 0)
1661 pszLogName, iShdr, pShdr->sh_name, pModElf->cbShStr)); NOREF(pszLogName);
1668 pszLogName, iShdr, pShdr->sh_link, pModElf->Ehdr.e_shnum)); NOREF(pszLogName);
1679 pszLogName, iShdr, pShdr->sh_link, pModElf->Ehdr.e_shnum));
1717 pszLogName, iShdr, pShdr->sh_offset, pShdr->sh_size, offEnd, cbRawImage));
1723 pszLogName, iShdr, pShdr->sh_offset, pShdr->sh_size, cbRawImage));