aboutsummaryrefslogtreecommitdiff
path: root/libexec
diff options
context:
space:
mode:
authorEdward Tomasz Napierala <trasz@FreeBSD.org>2017-10-24 11:16:38 +0000
committerEdward Tomasz Napierala <trasz@FreeBSD.org>2017-10-24 11:16:38 +0000
commite65ad973b27f47e9b6ad18ed5bb64379759dc6be (patch)
tree1e8e0c46b62acf536a1fac149a3f01c64cf1afd2 /libexec
parenta8b31c14d22509434fe0267b4a008546461c24a4 (diff)
Notes
Diffstat (limited to 'libexec')
-rw-r--r--libexec/rtld-elf/rtld.c61
1 files changed, 44 insertions, 17 deletions
diff --git a/libexec/rtld-elf/rtld.c b/libexec/rtld-elf/rtld.c
index 78e6299a9fdf..e41d54768c88 100644
--- a/libexec/rtld-elf/rtld.c
+++ b/libexec/rtld-elf/rtld.c
@@ -1620,27 +1620,54 @@ find_library(const char *xname, const Obj_Entry *refobj, int *fdp)
* nodeflib.
*/
if (objgiven && refobj->rpath != NULL && ld_library_path_rpath) {
- if ((pathname = search_library_path(name, ld_library_path)) != NULL ||
- (refobj != NULL &&
- (pathname = search_library_path(name, refobj->rpath)) != NULL) ||
- (pathname = search_library_pathfds(name, ld_library_dirs, fdp)) != NULL ||
- (pathname = search_library_path(name, gethints(false))) != NULL ||
- (pathname = search_library_path(name, ld_standard_library_path)) != NULL)
+ pathname = search_library_path(name, ld_library_path);
+ if (pathname != NULL)
+ return (pathname);
+ if (refobj != NULL) {
+ pathname = search_library_path(name, refobj->rpath);
+ if (pathname != NULL)
+ return (pathname);
+ }
+ pathname = search_library_pathfds(name, ld_library_dirs, fdp);
+ if (pathname != NULL)
+ return (pathname);
+ pathname = search_library_path(name, gethints(false));
+ if (pathname != NULL)
+ return (pathname);
+ pathname = search_library_path(name, ld_standard_library_path);
+ if (pathname != NULL)
return (pathname);
} else {
nodeflib = objgiven ? refobj->z_nodeflib : false;
- if ((objgiven &&
- (pathname = search_library_path(name, refobj->rpath)) != NULL) ||
- (objgiven && refobj->runpath == NULL && refobj != obj_main &&
- (pathname = search_library_path(name, obj_main->rpath)) != NULL) ||
- (pathname = search_library_path(name, ld_library_path)) != NULL ||
- (objgiven &&
- (pathname = search_library_path(name, refobj->runpath)) != NULL) ||
- (pathname = search_library_pathfds(name, ld_library_dirs, fdp)) != NULL ||
- (pathname = search_library_path(name, gethints(nodeflib))) != NULL ||
- (objgiven && !nodeflib &&
- (pathname = search_library_path(name, ld_standard_library_path)) != NULL))
+ if (objgiven) {
+ pathname = search_library_path(name, refobj->rpath);
+ if (pathname != NULL)
+ return (pathname);
+ }
+ if (objgiven && refobj->runpath == NULL && refobj != obj_main) {
+ pathname = search_library_path(name, obj_main->rpath);
+ if (pathname != NULL)
+ return (pathname);
+ }
+ pathname = search_library_path(name, ld_library_path);
+ if (pathname != NULL)
+ return (pathname);
+ if (objgiven) {
+ pathname = search_library_path(name, refobj->runpath);
+ if (pathname != NULL)
+ return (pathname);
+ }
+ pathname = search_library_pathfds(name, ld_library_dirs, fdp);
+ if (pathname != NULL)
return (pathname);
+ pathname = search_library_path(name, gethints(nodeflib));
+ if (pathname != NULL)
+ return (pathname);
+ if (objgiven && !nodeflib) {
+ pathname = search_library_path(name, ld_standard_library_path);
+ if (pathname != NULL)
+ return (pathname);
+ }
}
if (objgiven && refobj->path != NULL) {