Lines Matching refs:ld
106 struct load_list *ld, *lowld = NULL; in _dl_tryload_shlib() local
158 #define LDLIST_INSERT(ld) do { \ in _dl_tryload_shlib() argument
161 if ((*_ld)->moff > ld->moff) \ in _dl_tryload_shlib()
163 ld->next = *_ld; \ in _dl_tryload_shlib()
164 *_ld = ld; \ in _dl_tryload_shlib()
187 ld = _dl_malloc(sizeof(struct load_list)); in _dl_tryload_shlib()
188 if (ld == NULL) in _dl_tryload_shlib()
190 ld->start = NULL; in _dl_tryload_shlib()
191 ld->size = size; in _dl_tryload_shlib()
192 ld->moff = TRUNC_PG(phdp->p_vaddr); in _dl_tryload_shlib()
193 ld->foff = TRUNC_PG(phdp->p_offset); in _dl_tryload_shlib()
194 ld->prot = PFLAGS(phdp->p_flags); in _dl_tryload_shlib()
195 LDLIST_INSERT(ld); in _dl_tryload_shlib()
202 ld = _dl_calloc(1, sizeof(struct load_list)); in _dl_tryload_shlib()
203 if (ld == NULL) in _dl_tryload_shlib()
205 ld->start = NULL; in _dl_tryload_shlib()
206 ld->size = ROUND_PG(off + phdp->p_memsz) - in _dl_tryload_shlib()
208 ld->moff = TRUNC_PG(phdp->p_vaddr) + in _dl_tryload_shlib()
210 ld->foff = -1; in _dl_tryload_shlib()
211 ld->prot = PFLAGS(phdp->p_flags); in _dl_tryload_shlib()
212 LDLIST_INSERT(ld); in _dl_tryload_shlib()
246 for (ld = lowld; ld != NULL; ld = ld->next) { in _dl_tryload_shlib()
253 if (ld->foff < 0) { in _dl_tryload_shlib()
259 foff = ld->foff; in _dl_tryload_shlib()
262 if (ld == lowld) { in _dl_tryload_shlib()
267 int exec = (ld->prot & PROT_WRITE) ? 0 : PROT_EXEC; in _dl_tryload_shlib()
270 res = _dl_mquery((void *)(LOFF + ld->moff), in _dl_tryload_shlib()
271 ROUND_PG(ld->size), ld->prot | exec, flags, in _dl_tryload_shlib()
278 res = _dl_mmap((void *)(LOFF + ld->moff), ROUND_PG(ld->size), in _dl_tryload_shlib()
279 ld->prot, flags | MAP_FIXED | __MAP_NOREPLACE, fd, foff); in _dl_tryload_shlib()
284 for (ll = lowld; ll != NULL && ll != ld; in _dl_tryload_shlib()
289 lowld->start += ROUND_PG(ld->size); in _dl_tryload_shlib()
293 if ((ld->prot & PROT_EXEC) && exec_start == NULL) { in _dl_tryload_shlib()
294 exec_start = (void *)(LOFF + ld->moff); in _dl_tryload_shlib()
295 exec_size = ROUND_PG(ld->size); in _dl_tryload_shlib()
299 _dl_push_range_size(&imut, LOFF + ld->moff, ROUND_PG(ld->size)); in _dl_tryload_shlib()
301 ld->start = res; in _dl_tryload_shlib()
304 for (ld = lowld; ld != NULL; ld = ld->next) { in _dl_tryload_shlib()
306 if ((ld->prot & PROT_WRITE) != 0 && (ld->size & align) != 0) in _dl_tryload_shlib()
307 _dl_memset((char *)ld->start + ld->size, 0, in _dl_tryload_shlib()
308 _dl_pagesz - (ld->size & align)); in _dl_tryload_shlib()
309 load_end = (Elf_Addr)ld->start + ROUND_PG(ld->size); in _dl_tryload_shlib()