Lines Matching refs:elf
50 read_number_entries (uint64_t *nump, Elf *elf, size_t *offp, bool index64_p)
59 if (elf->map_address != NULL)
62 memcpy (&u, elf->map_address + *offp, sizeof u);
63 else if ((size_t) pread_retry (elf->fildes, &u, w, *offp) != w)
77 elf_getarsym (Elf *elf, size_t *ptr)
79 if (elf->kind != ELF_K_AR)
89 *ptr = elf->state.ar.ar_sym_num;
91 if (elf->state.ar.ar_sym == (Elf_Arsym *) -1l)
98 Elf_Arsym *result = elf->state.ar.ar_sym;
102 rwlock_wrlock (elf->lock);
105 elf->state.ar.ar_sym = (Elf_Arsym *) -1l;
111 if (elf->map_address == NULL)
114 assert (elf->fildes != -1);
115 if (pread_retry (elf->fildes, &elf->state.ar.ar_hdr,
116 sizeof (struct ar_hdr), elf->start_offset + SARMAG)
125 index_hdr = &elf->state.ar.ar_hdr;
129 if (SARMAG + sizeof (struct ar_hdr) > elf->maximum_size)
136 index_hdr = (struct ar_hdr *) (elf->map_address
137 + elf->start_offset + SARMAG);
171 size_t off = elf->start_offset + SARMAG + sizeof (struct ar_hdr);
172 if (read_number_entries (&n, elf, &off, index64_p) < 0)
186 if (index_size > elf->maximum_size
187 || elf->maximum_size - index_size < SARMAG + sizeof (struct ar_hdr)
201 elf->state.ar.ar_sym = (Elf_Arsym *) malloc (ar_sym_len);
202 if (elf->state.ar.ar_sym != NULL)
208 if (elf->map_address == NULL)
219 Elf_Arsym *newp = (Elf_Arsym *) realloc (elf->state.ar.ar_sym,
223 free (elf->state.ar.ar_sym);
224 elf->state.ar.ar_sym = NULL;
228 elf->state.ar.ar_sym = newp;
230 char *new_str = (char *) (elf->state.ar.ar_sym + n + 1);
233 if ((size_t) pread_retry (elf->fildes, file_data, sz, off) != sz
234 || ((size_t) pread_retry (elf->fildes, new_str,
239 free (elf->state.ar.ar_sym);
240 elf->state.ar.ar_sym = NULL;
249 file_data = (void *) (elf->map_address + off);
259 file_data = memcpy (temp_data, elf->map_address + off, sz);
261 str_data = (char *) (elf->map_address + off + sz);
265 Elf_Arsym *arsym = elf->state.ar.ar_sym;
284 if (elf->map_address == NULL)
286 free (elf->state.ar.ar_sym);
287 elf->state.ar.ar_sym = NULL;
309 elf->state.ar.ar_sym_num = n + 1;
312 result = elf->state.ar.ar_sym;
316 rwlock_unlock (elf->lock);
320 *ptr = elf->state.ar.ar_sym_num;