Lines Matching refs:phdr
20 static bool mdt_phdr_valid(const struct elf32_phdr *phdr)
22 if (phdr->p_type != PT_LOAD)
25 if ((phdr->p_flags & QCOM_MDT_TYPE_MASK) == QCOM_MDT_TYPE_HASH)
28 if (!phdr->p_memsz)
43 const struct elf32_phdr *phdr;
53 phdr = &phdrs[i];
55 if (!mdt_phdr_valid(phdr))
58 if (phdr->p_paddr < min_addr)
59 min_addr = phdr->p_paddr;
61 if (phdr->p_paddr + phdr->p_memsz > max_addr)
62 max_addr = ALIGN(phdr->p_paddr + phdr->p_memsz, SZ_4K);
135 const struct elf32_phdr *phdr;
182 phdr = &phdrs[i];
184 if (!mdt_phdr_valid(phdr))
187 if (phdr->p_flags & QCOM_MDT_RELOCATABLE)
190 if (phdr->p_paddr < min_addr)
191 min_addr = phdr->p_paddr;
193 if (phdr->p_paddr + phdr->p_memsz > max_addr)
194 max_addr = ALIGN(phdr->p_paddr + phdr->p_memsz, SZ_4K);
221 phdr = &phdrs[i];
223 if (!mdt_phdr_valid(phdr))
226 offset = phdr->p_paddr - mem_reloc;
227 if (offset < 0 || offset + phdr->p_memsz > mem_size) {
233 if (phdr->p_filesz > phdr->p_memsz) {
243 if (phdr->p_filesz && phdr->p_offset < fw->size) {
245 if (phdr->p_offset + phdr->p_filesz > fw->size) {
253 memcpy(ptr, fw->data + phdr->p_offset, phdr->p_filesz);
254 } else if (phdr->p_filesz) {
258 ptr, phdr->p_filesz);
264 if (seg_fw->size != phdr->p_filesz) {
276 if (phdr->p_memsz > phdr->p_filesz)
277 memset(ptr + phdr->p_filesz, 0, phdr->p_memsz - phdr->p_filesz);