Introduce DL_LOOKUP_FOR_RELOCATE flag for _dl_lookup_symbol_x
This will allow changes in dependency processing during non-lazy binding, for more precise processing of NODELETE objects: During initial relocation in dlopen, the fate of NODELETE objects is still unclear, so objects which are depended upon by NODELETE objects cannot immediately be marked as NODELETE. Change-Id: Ic7b94a3f7c4719a00ca8e6018088567824da0658
This commit is contained in:
parent
d5dfad4326
commit
fcb04b9aed
|
@ -244,7 +244,8 @@ _dl_relocate_object (struct link_map *l, struct r_scope_elem *scope[],
|
|||
v = (version); \
|
||||
_lr = _dl_lookup_symbol_x (strtab + (*ref)->st_name, l, (ref), \
|
||||
scope, v, _tc, \
|
||||
DL_LOOKUP_ADD_DEPENDENCY, NULL); \
|
||||
DL_LOOKUP_ADD_DEPENDENCY \
|
||||
| DL_LOOKUP_FOR_RELOCATE, NULL); \
|
||||
l->l_lookup_cache.ret = (*ref); \
|
||||
l->l_lookup_cache.value = _lr; })) \
|
||||
: l)
|
||||
|
|
|
@ -917,6 +917,9 @@ enum
|
|||
DL_LOOKUP_RETURN_NEWEST = 2,
|
||||
/* Set if dl_lookup* called with GSCOPE lock held. */
|
||||
DL_LOOKUP_GSCOPE_LOCK = 4,
|
||||
/* Set if dl_lookup is called for non-lazy relocation processing
|
||||
from _dl_relocate_object in elf/dl-reloc.c. */
|
||||
DL_LOOKUP_FOR_RELOCATE = 8,
|
||||
};
|
||||
|
||||
/* Lookup versioned symbol. */
|
||||
|
|
Loading…
Reference in a new issue