Lines Matching full:elf
1 /* Create new ELF program header table.
46 elfw2(LIBELFBITS,newphdr) (Elf *elf, size_t count) in ElfW2()
50 if (elf == NULL) in ElfW2()
53 if (unlikely (elf->kind != ELF_K_ELF)) in ElfW2()
61 so might not fit on 32bit ELF files. */ in ElfW2()
68 rwlock_wrlock (elf->lock); in ElfW2()
70 if (elf->class == 0) in ElfW2()
71 elf->class = ELFW(ELFCLASS,LIBELFBITS); in ElfW2()
72 else if (unlikely (elf->class != ELFW(ELFCLASS,LIBELFBITS))) in ElfW2()
79 if (unlikely (elf->state.ELFW(elf,LIBELFBITS).ehdr == NULL)) in ElfW2()
90 if (elf->state.ELFW(elf,LIBELFBITS).phdr != NULL) in ElfW2()
92 if (elf->state.ELFW(elf,LIBELFBITS).phdr_flags & ELF_F_MALLOCED) in ElfW2()
93 free (elf->state.ELFW(elf,LIBELFBITS).phdr); in ElfW2()
96 elf->state.ELFW(elf,LIBELFBITS).phdr = NULL; in ElfW2()
98 elf->state.ELFW(elf,LIBELFBITS).ehdr->e_phnum = 0; in ElfW2()
100 if (elf->state.ELFW(elf,LIBELFBITS).scns.cnt > 0) in ElfW2()
101 elf->state.ELFW(elf,LIBELFBITS).scns.data[0] in ElfW2()
104 elf->state.ELFW(elf,LIBELFBITS).ehdr->e_phentsize = in ElfW2()
107 elf->state.ELFW(elf,LIBELFBITS).phdr_flags |= ELF_F_DIRTY; in ElfW2()
108 elf->flags |= ELF_F_DIRTY; in ElfW2()
114 else if (elf->state.ELFW(elf,LIBELFBITS).ehdr->e_phnum != count in ElfW2()
116 || elf->state.ELFW(elf,LIBELFBITS).phdr == NULL) in ElfW2()
125 Elf_Scn *scn0 = &elf->state.ELFW(elf,LIBELFBITS).scns.data[0]; in ElfW2()
138 realloc (elf->state.ELFW(elf,LIBELFBITS).phdr, in ElfW2()
145 elf->state.ELFW(elf,LIBELFBITS).phdr = result; in ElfW2()
149 if (elf->state.ELFW(elf,LIBELFBITS).scns.cnt == 0) in ElfW2()
151 assert (elf->state.ELFW(elf,LIBELFBITS).scns.max > 0); in ElfW2()
152 elf->state.ELFW(elf,LIBELFBITS).scns.cnt = 1; in ElfW2()
156 elf->state.ELFW(elf,LIBELFBITS).ehdr->e_phnum = PN_XNUM; in ElfW2()
160 elf->state.ELFW(elf,LIBELFBITS).ehdr->e_phnum = count; in ElfW2()
164 elf->state.ELFW(elf,LIBELFBITS).ehdr->e_phentsize = in ElfW2()
168 elf->state.ELFW(elf,LIBELFBITS).phdr_flags |= in ElfW2()
172 elf->flags |= ELF_F_DIRTY; in ElfW2()
178 assert (elf->state.ELFW(elf,LIBELFBITS).ehdr->e_phentsize in ElfW2()
182 elf->state.ELFW(elf,LIBELFBITS).phdr_flags |= ELF_F_DIRTY; in ElfW2()
184 result = elf->state.ELFW(elf,LIBELFBITS).phdr; in ElfW2()
189 rwlock_unlock (elf->lock); in ElfW2()