Lines Matching refs:elf
46 read_number_entries (uint64_t *nump, Elf *elf, size_t *offp, bool index64_p)
55 if (elf->map_address != NULL)
58 memcpy (&u, elf->map_address + *offp, sizeof u);
59 else if ((size_t) pread_retry (elf->fildes, &u, w, *offp) != w)
73 elf_getarsym (Elf *elf, size_t *ptr)
75 if (elf->kind != ELF_K_AR)
85 *ptr = elf->state.ar.ar_sym_num;
87 if (elf->state.ar.ar_sym == (Elf_Arsym *) -1l)
94 Elf_Arsym *result = elf->state.ar.ar_sym;
98 rwlock_wrlock (elf->lock);
101 elf->state.ar.ar_sym = (Elf_Arsym *) -1l;
107 if (elf->map_address == NULL)
110 assert (elf->fildes != -1);
111 if (pread_retry (elf->fildes, &elf->state.ar.ar_hdr,
112 sizeof (struct ar_hdr), elf->start_offset + SARMAG)
121 index_hdr = &elf->state.ar.ar_hdr;
125 if (SARMAG + sizeof (struct ar_hdr) > elf->maximum_size)
132 index_hdr = (struct ar_hdr *) (elf->map_address
133 + elf->start_offset + SARMAG);
167 size_t off = elf->start_offset + SARMAG + sizeof (struct ar_hdr);
168 if (read_number_entries (&n, elf, &off, index64_p) < 0)
182 if (index_size > elf->maximum_size
183 || elf->maximum_size - index_size < SARMAG + sizeof (struct ar_hdr)
197 elf->state.ar.ar_sym = malloc (ar_sym_len);
198 if (elf->state.ar.ar_sym != NULL)
204 if (elf->map_address == NULL)
215 Elf_Arsym *newp = realloc (elf->state.ar.ar_sym, ar_sym_len);
218 free (elf->state.ar.ar_sym);
219 elf->state.ar.ar_sym = NULL;
223 elf->state.ar.ar_sym = newp;
225 char *new_str = (char *) (elf->state.ar.ar_sym + n + 1);
228 if ((size_t) pread_retry (elf->fildes, file_data, sz, off) != sz
229 || ((size_t) pread_retry (elf->fildes, new_str,
234 free (elf->state.ar.ar_sym);
235 elf->state.ar.ar_sym = NULL;
244 file_data = (void *) (elf->map_address + off);
254 file_data = memcpy (temp_data, elf->map_address + off, sz);
256 str_data = (char *) (elf->map_address + off + sz);
260 Elf_Arsym *arsym = elf->state.ar.ar_sym;
279 if (elf->map_address == NULL)
281 free (elf->state.ar.ar_sym);
282 elf->state.ar.ar_sym = NULL;
312 elf->state.ar.ar_sym_num = n + 1;
315 result = elf->state.ar.ar_sym;
319 rwlock_unlock (elf->lock);
323 *ptr = elf->state.ar.ar_sym_num;