Lines Matching refs:object

63 _dl_handle_nodelete(elf_object_t *object)  in _dl_handle_nodelete()  argument
72 if (object->obj_flags & DF_1_NODELETE && in _dl_handle_nodelete()
73 (object->load_object->status & STAT_NODELETE) == 0) { in _dl_handle_nodelete()
74 DL_DEB(("objname %s is nodelete\n", object->load_name)); in _dl_handle_nodelete()
75 object->load_object->opencount++; in _dl_handle_nodelete()
76 object->load_object->status |= STAT_NODELETE; in _dl_handle_nodelete()
84 _dl_add_object(elf_object_t *object) in _dl_add_object() argument
86 _dl_handle_nodelete(object); in _dl_add_object()
94 if (object->prev != NULL) in _dl_add_object()
98 _dl_last_object = _dl_objects = object; in _dl_add_object()
101 _dl_last_object->next = object; in _dl_add_object()
102 object->prev = _dl_last_object; in _dl_add_object()
103 _dl_last_object = object; in _dl_add_object()
104 if (object->obj_type != OBJTYPE_LDR) /* see above */ in _dl_add_object()
138 _dl_origin_subst_path(elf_object_t *object, const char *origin_path, in _dl_origin_subst_path() argument
231 _dl_origin_path(elf_object_t *object, char *origin_path) in _dl_origin_path() argument
236 if (_dl___realpath(object->load_name, origin_path) < 0) in _dl_origin_path()
252 _dl_origin_subst(elf_object_t *object) in _dl_origin_subst() argument
257 if (_dl_origin_path(object, origin_path) != 0) in _dl_origin_subst()
261 if (object->runpath != NULL) { in _dl_origin_subst()
262 for (pp = object->runpath; *pp != NULL; pp++) in _dl_origin_subst()
263 _dl_origin_subst_path(object, origin_path, pp); in _dl_origin_subst()
265 if (object->rpath != NULL) { in _dl_origin_subst()
266 for (pp = object->rpath; *pp != NULL; pp++) in _dl_origin_subst()
267 _dl_origin_subst_path(object, origin_path, pp); in _dl_origin_subst()
278 elf_object_t *object; in _dl_finalize_object() local
284 object = _dl_calloc(1, sizeof(elf_object_t)); in _dl_finalize_object()
285 if (object == NULL) in _dl_finalize_object()
287 object->prev = object->next = NULL; in _dl_finalize_object()
289 object->load_dyn = dynp; in _dl_finalize_object()
292 object->Dyn.info[dynp->d_tag] = dynp->d_un.d_val; in _dl_finalize_object()
295 object->Dyn.info[dynp->d_tag + DT_NUM - DT_LOPROC] = in _dl_finalize_object()
298 object->dyn.textrel = 1; in _dl_finalize_object()
300 object->dyn.symbolic = 1; in _dl_finalize_object()
302 object->obj_flags |= DF_1_NOW; in _dl_finalize_object()
304 object->obj_flags |= dynp->d_un.d_val; in _dl_finalize_object()
306 object->dyn.flags |= dynp->d_un.d_val; in _dl_finalize_object()
308 object->dyn.symbolic = 1; in _dl_finalize_object()
310 object->dyn.textrel = 1; in _dl_finalize_object()
312 object->obj_flags |= DF_1_ORIGIN; in _dl_finalize_object()
314 object->obj_flags |= DF_1_NOW; in _dl_finalize_object()
317 object->relacount = dynp->d_un.d_val; in _dl_finalize_object()
319 object->relcount = dynp->d_un.d_val; in _dl_finalize_object()
324 DL_DEB((" flags %s = 0x%x\n", objname, object->obj_flags)); in _dl_finalize_object()
325 object->obj_type = objtype; in _dl_finalize_object()
332 _dl_loading_object = object; in _dl_finalize_object()
335 if ((object->obj_flags & DF_1_NOOPEN) != 0 && in _dl_finalize_object()
338 _dl_free(object); in _dl_finalize_object()
347 if (object->Dyn.info[DT_PLTGOT]) in _dl_finalize_object()
348 object->Dyn.info[DT_PLTGOT] += obase; in _dl_finalize_object()
349 if (object->Dyn.info[DT_STRTAB]) in _dl_finalize_object()
350 object->Dyn.info[DT_STRTAB] += obase; in _dl_finalize_object()
351 if (object->Dyn.info[DT_SYMTAB]) in _dl_finalize_object()
352 object->Dyn.info[DT_SYMTAB] += obase; in _dl_finalize_object()
353 if (object->Dyn.info[DT_RELA]) in _dl_finalize_object()
354 object->Dyn.info[DT_RELA] += obase; in _dl_finalize_object()
355 if (object->Dyn.info[DT_SONAME]) in _dl_finalize_object()
356 object->Dyn.info[DT_SONAME] += object->Dyn.info[DT_STRTAB]; in _dl_finalize_object()
357 if (object->Dyn.info[DT_RPATH]) in _dl_finalize_object()
358 object->Dyn.info[DT_RPATH] += object->Dyn.info[DT_STRTAB]; in _dl_finalize_object()
359 if (object->Dyn.info[DT_RUNPATH]) in _dl_finalize_object()
360 object->Dyn.info[DT_RUNPATH] += object->Dyn.info[DT_STRTAB]; in _dl_finalize_object()
361 if (object->Dyn.info[DT_REL]) in _dl_finalize_object()
362 object->Dyn.info[DT_REL] += obase; in _dl_finalize_object()
363 if (object->Dyn.info[DT_INIT]) in _dl_finalize_object()
364 object->Dyn.info[DT_INIT] += obase; in _dl_finalize_object()
365 if (object->Dyn.info[DT_FINI]) in _dl_finalize_object()
366 object->Dyn.info[DT_FINI] += obase; in _dl_finalize_object()
367 if (object->Dyn.info[DT_JMPREL]) in _dl_finalize_object()
368 object->Dyn.info[DT_JMPREL] += obase; in _dl_finalize_object()
369 if (object->Dyn.info[DT_INIT_ARRAY]) in _dl_finalize_object()
370 object->Dyn.info[DT_INIT_ARRAY] += obase; in _dl_finalize_object()
371 if (object->Dyn.info[DT_FINI_ARRAY]) in _dl_finalize_object()
372 object->Dyn.info[DT_FINI_ARRAY] += obase; in _dl_finalize_object()
373 if (object->Dyn.info[DT_PREINIT_ARRAY]) in _dl_finalize_object()
374 object->Dyn.info[DT_PREINIT_ARRAY] += obase; in _dl_finalize_object()
375 if (object->Dyn.info[DT_RELR]) in _dl_finalize_object()
376 object->Dyn.info[DT_RELR] += obase; in _dl_finalize_object()
388 object->nbuckets = nbuckets; in _dl_finalize_object()
389 object->symndx_gnu = symndx; in _dl_finalize_object()
390 object->mask_bm_gnu = nmaskwords - 1; in _dl_finalize_object()
391 object->shift2_gnu = hashtab[3]; in _dl_finalize_object()
392 object->bloom_gnu = (Elf_Addr *)(hashtab + 4); in _dl_finalize_object()
393 object->buckets_gnu = hashtab + 4 + bloom_size32; in _dl_finalize_object()
394 object->chains_gnu = object->buckets_gnu + nbuckets in _dl_finalize_object()
402 if (object->Dyn.info[DT_HASH] == 0) { in _dl_finalize_object()
406 Elf_Word bkt = object->buckets_gnu[n]; in _dl_finalize_object()
410 hashval = &object->chains_gnu[bkt]; in _dl_finalize_object()
415 object->nchains = symndx; in _dl_finalize_object()
417 object->status |= STAT_GNU_HASH; in _dl_finalize_object()
420 if (object->Dyn.info[DT_HASH] != 0) { in _dl_finalize_object()
422 (Elf_Hash_Word *)(object->Dyn.info[DT_HASH] + obase); in _dl_finalize_object()
424 object->nchains = hashtab[1]; in _dl_finalize_object()
425 if (object->nbuckets == 0) { in _dl_finalize_object()
426 object->nbuckets = hashtab[0]; in _dl_finalize_object()
427 object->buckets_elf = hashtab + 2; in _dl_finalize_object()
428 object->chains_elf = object->buckets_elf + in _dl_finalize_object()
429 object->nbuckets; in _dl_finalize_object()
433 object->phdrp = phdrp; in _dl_finalize_object()
434 object->phdrc = phdrc; in _dl_finalize_object()
435 object->load_base = lbase; in _dl_finalize_object()
436 object->obj_base = obase; in _dl_finalize_object()
437 object->load_name = _dl_strdup(objname); in _dl_finalize_object()
438 if (object->load_name == NULL) in _dl_finalize_object()
440 object->load_object = _dl_loading_object; in _dl_finalize_object()
441 if (object->load_object == object) in _dl_finalize_object()
442 DL_DEB(("head %s\n", object->load_name)); in _dl_finalize_object()
443 DL_DEB(("obj %s has %s as head\n", object->load_name, in _dl_finalize_object()
445 object->refcount = 0; in _dl_finalize_object()
446 object->opencount = 0; /* # dlopen() & exe */ in _dl_finalize_object()
447 object->grprefcount = 0; in _dl_finalize_object()
449 object->dev = 0; in _dl_finalize_object()
450 object->inode = 0; in _dl_finalize_object()
451 object->grpsym_gen = 0; in _dl_finalize_object()
452 TAILQ_INIT(&object->grpref_list); in _dl_finalize_object()
454 if (object->dyn.runpath) in _dl_finalize_object()
455 object->runpath = _dl_split_path(object->dyn.runpath); in _dl_finalize_object()
461 if (object->dyn.rpath && (object->runpath == NULL || in _dl_finalize_object()
463 object->rpath = _dl_split_path(object->dyn.rpath); in _dl_finalize_object()
464 if ((object->obj_flags & DF_1_ORIGIN) && _dl_trust) in _dl_finalize_object()
465 _dl_origin_subst(object); in _dl_finalize_object()
467 _dl_trace_object_setup(object); in _dl_finalize_object()
469 return (object); in _dl_finalize_object()
519 _dl_remove_object(elf_object_t *object) in _dl_remove_object() argument
521 object->prev->next = object->next; in _dl_remove_object()
522 if (object->next) in _dl_remove_object()
523 object->next->prev = object->prev; in _dl_remove_object()
525 if (_dl_last_object == object) in _dl_remove_object()
526 _dl_last_object = object->prev; in _dl_remove_object()
529 object->next = free_objects; in _dl_remove_object()
530 free_objects = object; in _dl_remove_object()