Date: Fri, 28 Jan 2011 23:44:57 +0000 (UTC) From: Alexander Kabaev <kan@FreeBSD.org> To: cvs-src-old@freebsd.org Subject: cvs commit: src/libexec/rtld-elf rtld.c Message-ID: <201101282345.p0SNj5NY074791@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
kan 2011-01-28 23:44:57 UTC FreeBSD src repository Modified files: libexec/rtld-elf rtld.c Log: SVN rev 218051 on 2011-01-28 23:44:57Z by kan Eliminate the use of symlook_needed function in favor of DAGS. Place elements on DAG lists in breadth-first order. This allows us to walk pre-built list in all cases where breadth-first dependency chain enumeration is required. Fix dlsym on special handle obtained by dlopen(NULL, ...) to do what comment claims it does. Take advantage of recently added symlook_global function to iterate over main objects and global DAGs lists properly in search of a symbol. Since rtld itself provides part of the global namespace, search rtld_obj too. Remove recursion from init_dag and symlook_needed functions. Use symlook_needed for ELF filtee processing only and change lookup order used in the function to match the order used by Solaris runtime linker under same circumstances. While there, fix weak symbol handling in the loop so that we return the first weak symbol definition if no strong one was found, instead of the last one. Reviewed by: kib MFC after: 1 month Revision Changes Path 1.170 +47 -67 src/libexec/rtld-elf/rtld.c
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201101282345.p0SNj5NY074791>