diff --git a/elf/dl-reloc.c b/elf/dl-reloc.c index 053916e..afeace4 100644 --- a/elf/dl-reloc.c +++ b/elf/dl-reloc.c @@ -248,7 +248,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) diff --git a/sysdeps/generic/ldsodefs.h b/sysdeps/generic/ldsodefs.h index cc24840..6c5298a 100644 --- a/sysdeps/generic/ldsodefs.h +++ b/sysdeps/generic/ldsodefs.h @@ -908,6 +908,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. */