git: d0ab6abbf531 - main - rtld: symbolic and deepbind are equivalent for the refobj

From: Konstantin Belousov <kib_at_FreeBSD.org>
Date: Wed, 23 Apr 2025 19:25:06 UTC
The branch main has been updated by kib:

URL: https://cgit.FreeBSD.org/src/commit/?id=d0ab6abbf5318fa09df1b145198d543c60f0685b

commit d0ab6abbf5318fa09df1b145198d543c60f0685b
Author:     Konstantin Belousov <kib@FreeBSD.org>
AuthorDate: 2025-04-19 10:26:58 +0000
Commit:     Konstantin Belousov <kib@FreeBSD.org>
CommitDate: 2025-04-23 19:04:29 +0000

    rtld: symbolic and deepbind are equivalent for the refobj
    
    Reported by:    avg
    Sponsored by:   The FreeBSD Foundation
    MFC after:      1 week
---
 libexec/rtld-elf/rtld.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/libexec/rtld-elf/rtld.c b/libexec/rtld-elf/rtld.c
index 13b24a259bec..fa96a516687e 100644
--- a/libexec/rtld-elf/rtld.c
+++ b/libexec/rtld-elf/rtld.c
@@ -4677,12 +4677,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)