rtld: symbolic and deepbind are equivalent for the refobj

(cherry picked from commit d0ab6abbf5318fa09df1b145198d543c60f0685b)
This commit is contained in:
Konstantin Belousov 2025-04-19 13:26:58 +03:00
parent 8ef4424517
commit 06fa889365

View file

@ -4624,12 +4624,13 @@ symlook_default(SymLook *req, const Obj_Entry *refobj)
*/
res = symlook_obj(&req1, refobj);
if (res == 0 && (refobj->symbolic ||
ELF_ST_VISIBILITY(req1.sym_out->st_other) == STV_PROTECTED)) {
ELF_ST_VISIBILITY(req1.sym_out->st_other) == STV_PROTECTED ||
refobj->deepbind)) {
req->sym_out = req1.sym_out;
req->defobj_out = req1.defobj_out;
assert(req->defobj_out != NULL);
}
if (refobj->symbolic || req->defobj_out != NULL)
if (refobj->symbolic || req->defobj_out != NULL || refobj->deepbind)
donelist_check(&donelist, refobj);
if (!refobj->deepbind)