Lines Matching refs:elf
125 __elfw2(LIBELFBITS,updatemmap) (Elf *elf, int change_bo, size_t shnum)
130 ElfW2(LIBELFBITS,Ehdr) *ehdr = elf->state.ELFW(elf,LIBELFBITS).ehdr;
133 if ((elf->state.ELFW(elf,LIBELFBITS).ehdr_flags | elf->flags) & ELF_F_DIRTY)
147 (*fctp) ((char *) elf->map_address + elf->start_offset, ehdr,
150 else if (elf->map_address + elf->start_offset != ehdr)
151 memcpy (elf->map_address + elf->start_offset, ehdr,
154 elf->state.ELFW(elf,LIBELFBITS).ehdr_flags &= ~ELF_F_DIRTY;
158 previous_scn_changed = elf->state.ELFW(elf,LIBELFBITS).phdr == NULL;
162 if (unlikely (__elf_getphdrnum_rdlock (elf, &phnum) != 0))
166 if (elf->state.ELFW(elf,LIBELFBITS).phdr != NULL
167 && ((elf->state.ELFW(elf,LIBELFBITS).phdr_flags | elf->flags)
178 memset (elf->map_address + elf->start_offset + ehdr->e_ehsize,
188 (*fctp) (elf->map_address + elf->start_offset + ehdr->e_phoff,
189 elf->state.ELFW(elf,LIBELFBITS).phdr,
193 memmove (elf->map_address + elf->start_offset + ehdr->e_phoff,
194 elf->state.ELFW(elf,LIBELFBITS).phdr,
197 elf->state.ELFW(elf,LIBELFBITS).phdr_flags &= ~ELF_F_DIRTY;
206 char *last_position = ((char *) elf->map_address + elf->start_offset
217 Elf_ScnList *list = &elf->state.ELFW(elf,LIBELFBITS).scns;
224 char *const shdr_start = ((char *) elf->map_address + elf->start_offset
241 if (!elf->state.ELFW(elf,LIBELFBITS).shdr_malloced
245 assert ((char *) elf->map_address + elf->start_offset
248 < ((char *) elf->map_address + elf->start_offset
249 + elf->maximum_size));
269 if (((char *) elf->map_address + elf->start_offset
272 < ((char *) elf->map_address + elf->start_offset
273 + elf->maximum_size))
274 && (((char *) elf->map_address + elf->start_offset
308 char *scn_start = ((char *) elf->map_address
309 + elf->start_offset + shdr->sh_offset);
324 || ((scn->flags | dl->flags | elf->flags)
333 if ((scn->flags | dl->flags | elf->flags) & ELF_F_DIRTY)
432 if ((elf->flags & ELF_F_DIRTY)
433 && last_position < ((char *) elf->map_address + elf->start_offset
436 (char *) elf->map_address + elf->start_offset + ehdr->e_shoff
444 if ((scn->shdr_flags | elf->flags) & ELF_F_DIRTY)
458 if (!elf->state.ELFW(elf,LIBELFBITS).shdr_malloced
473 elf->flags &= ~ELF_F_DIRTY;
476 char *msync_start = ((char *) elf->map_address
477 + (elf->start_offset & ~(sysconf (_SC_PAGESIZE) - 1)));
478 char *msync_end = ((char *) elf->map_address
479 + elf->start_offset + ehdr->e_shoff
532 __elfw2(LIBELFBITS,updatefile) (Elf *elf, int change_bo, size_t shnum)
539 ElfW2(LIBELFBITS,Ehdr) *ehdr = elf->state.ELFW(elf,LIBELFBITS).ehdr;
542 if ((elf->state.ELFW(elf,LIBELFBITS).ehdr_flags | elf->flags) & ELF_F_DIRTY)
566 if (unlikely (pwrite_retry (elf->fildes, out_ehdr,
574 elf->state.ELFW(elf,LIBELFBITS).ehdr_flags &= ~ELF_F_DIRTY;
578 previous_scn_changed = elf->state.ELFW(elf,LIBELFBITS).phdr == NULL;
587 if (unlikely (__elf_getphdrnum_rdlock (elf, &phnum) != 0))
591 if (elf->state.ELFW(elf,LIBELFBITS).phdr != NULL
592 && ((elf->state.ELFW(elf,LIBELFBITS).phdr_flags | elf->flags)
596 ElfW2(LIBELFBITS,Phdr) *out_phdr = elf->state.ELFW(elf,LIBELFBITS).phdr;
601 && unlikely (fill (elf->fildes, ehdr->e_ehsize,
622 (*fctp) (tmp_phdr, elf->state.ELFW(elf,LIBELFBITS).phdr,
631 if (unlikely ((size_t) pwrite_retry (elf->fildes, out_phdr,
642 elf->state.ELFW(elf,LIBELFBITS).phdr_flags &= ~ELF_F_DIRTY;
652 if (elf->state.ELFW(elf,LIBELFBITS).phdr == NULL)
664 int64_t shdr_offset = elf->start_offset + ehdr->e_shoff;
670 if (change_bo || elf->state.ELFW(elf,LIBELFBITS).shdr == NULL
671 || (elf->flags & ELF_F_DIRTY))
683 shdr_data = elf->state.ELFW(elf,LIBELFBITS).shdr;
684 int shdr_flags = elf->flags;
687 Elf_ScnList *list = &elf->state.ELFW(elf,LIBELFBITS).scns;
712 int64_t scn_start = elf->start_offset + shdr->sh_offset;
722 || ((scn->flags | dl->flags | elf->flags)
725 if (unlikely (fill (elf->fildes, last_offset,
739 if ((scn->flags | dl->flags | elf->flags) & ELF_F_DIRTY)
769 ssize_t n = pwrite_retry (elf->fildes, buf,
800 if (unlikely (fill (elf->fildes, last_offset,
816 else if (elf->state.ELFW(elf,LIBELFBITS).shdr == NULL
817 || (elf->flags & ELF_F_DIRTY))
827 if ((elf->flags & ELF_F_DIRTY) && last_offset < shdr_offset
828 && unlikely (fill (elf->fildes, last_offset,
835 && unlikely ((size_t) pwrite_retry (elf->fildes, shdr_data,
849 elf->flags &= ~ELF_F_DIRTY;