Lines Matching defs:elf

53 	register Elf	*elf;
79 if ((elf = (Elf *)calloc(1, sizeof (Elf))) == 0) {
84 elf->ed_parent = ref;
85 elf->ed_fd = fd;
86 elf->ed_myflags |= flags;
87 elf->ed_armem = mh;
88 elf->ed_fsz = mh->m_hdr.ar_size;
89 elf->ed_baseoff = ref->ed_baseoff + base;
90 elf->ed_memoff = base - mh->m_slide;
91 elf->ed_siboff = base + elf->ed_fsz + (elf->ed_fsz & 1);
92 ref->ed_nextoff = elf->ed_siboff;
93 elf->ed_image = ref->ed_image;
94 elf->ed_imagesz = ref->ed_imagesz;
95 elf->ed_vm = ref->ed_vm;
96 elf->ed_vmsz = ref->ed_vmsz;
97 elf->ed_ident = ref->ed_ident + base - mh->m_slide;
105 elf->ed_status = ES_COOKED;
106 return (elf);
113 Elf *elf;
115 if ((elf = (Elf *)calloc(1, sizeof (Elf))) == 0) {
120 NOTE(NOW_INVISIBLE_TO_OTHER_THREADS(*elf))
121 elf->ed_fd = fd;
122 elf->ed_myflags |= flags;
123 if (_elf_inmap(elf) != OK_YES) {
124 free(elf);
127 NOTE(NOW_VISIBLE_TO_OTHER_THREADS(*elf))
128 return (elf);
133 _elf_config(Elf * elf)
138 ELFRWLOCKINIT(&elf->ed_rwlock);
143 base = elf->ed_ident;
144 if ((elf->ed_fsz >= EI_NIDENT) &&
145 (_elf_vm(elf, (size_t)0, (size_t)EI_NIDENT) == OK_YES) &&
150 elf->ed_kind = ELF_K_ELF;
151 elf->ed_class = base[EI_CLASS];
152 elf->ed_encode = base[EI_DATA];
153 if ((elf->ed_version = base[EI_VERSION]) == 0)
154 elf->ed_version = 1;
155 elf->ed_identsz = EI_NIDENT;
163 if ((elf->ed_vm == 0) && ((elf->ed_myflags & EDF_WRITE) == 0) &&
164 (elf->ed_encode != encode)) {
165 if (mprotect((char *)elf->ed_image, elf->ed_imagesz,
171 return (elf);
177 if ((elf->ed_fsz >= SARMAG) &&
178 (_elf_vm(elf, (size_t)0, (size_t)SARMAG) == OK_YES) &&
180 _elf_arinit(elf);
181 elf->ed_kind = ELF_K_AR;
182 elf->ed_identsz = SARMAG;
183 return (elf);
191 elf->ed_kind = ELF_K_NONE;
192 if ((elf->ed_identsz = elf->ed_fsz) > 512)
193 elf->ed_identsz = 512;
195 return (elf);
201 Elf *elf;
213 if ((elf = (Elf *)calloc(1, sizeof (Elf))) == 0) {
217 NOTE(NOW_INVISIBLE_TO_OTHER_THREADS(*elf))
218 elf->ed_fd = -1;
219 elf->ed_myflags |= EDF_READ | EDF_MEMORY;
220 elf->ed_image = elf->ed_ident = image;
221 elf->ed_imagesz = elf->ed_fsz = elf->ed_identsz = sz;
222 elf->ed_kind = ELF_K_ELF;
223 elf->ed_class = image[EI_CLASS];
224 elf->ed_encode = image[EI_DATA];
225 if ((elf->ed_version = image[EI_VERSION]) == 0)
226 elf->ed_version = 1;
227 elf->ed_identsz = EI_NIDENT;
228 elf->ed_activ = 1;
229 elf = _elf_config(elf);
230 NOTE(NOW_VISIBLE_TO_OTHER_THREADS(*elf))
231 return (elf);
240 * ref as the base image of the elf file. Before this elf_begin()
242 * done to the ref elf descriptor.
266 * returns a pointer to an elf descriptor as if it were opened
270 * elf_update(elf, ELF_C_WRIMAGE)
276 * elf_update(elf, ELF_C_WRITE)
278 * NOTE: that if elf_end(elf) is called it will not free the
302 register Elf *elf;
336 if ((elf = (Elf *)calloc(1, sizeof (Elf))) == 0) {
340 NOTE(NOW_INVISIBLE_TO_OTHER_THREADS(*elf))
341 ELFRWLOCKINIT(&elf->ed_rwlock);
342 elf->ed_fd = fd;
343 elf->ed_activ = 1;
344 elf->ed_myflags |= EDF_WRITE;
346 elf->ed_myflags |= EDF_WRALLOC;
347 NOTE(NOW_VISIBLE_TO_OTHER_THREADS(*elf))
348 return (elf);
365 if ((elf = _elf_regular(fd, flags)) == 0)
382 if ((elf = _elf_member(fd, ref, flags)) == 0) {
389 NOTE(NOW_INVISIBLE_TO_OTHER_THREADS(*elf))
390 elf->ed_activ = 1;
391 elf = _elf_config(elf);
392 NOTE(NOW_VISIBLE_TO_OTHER_THREADS(*elf))
394 return (elf);