From 9728de1929812df84749c9fb044f6f584e044199 Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Sun, 8 Feb 2015 15:06:11 +0100 Subject: Use executables RPATH/RUNPATH when searching for libraries. Patch by Steve Ellcey on uClibc mailinglist. --- ldso/ldso/dl-elf.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'ldso') diff --git a/ldso/ldso/dl-elf.c b/ldso/ldso/dl-elf.c index 6fc95b300..d42b91281 100644 --- a/ldso/ldso/dl-elf.c +++ b/ldso/ldso/dl-elf.c @@ -266,6 +266,18 @@ struct elf_resolve *_dl_load_shared_library(unsigned rflags, struct dyn_elf **rp if ((tpnt1 = search_for_named_library(libname, rflags, pnt, rpnt, NULL)) != NULL) return tpnt1; } +#ifdef __LDSO_RUNPATH_OF_EXECUTABLE__ + /* + * Try the DT_RPATH of the executable itself. + */ + pnt = (char *) _dl_loaded_modules->dynamic_info[DT_RPATH]; + if (pnt) { + pnt += (unsigned long) _dl_loaded_modules->dynamic_info[DT_STRTAB]; + _dl_if_debug_dprint("\tsearching exe's RPATH='%s'\n", pnt); + if ((tpnt1 = search_for_named_library(libname, rflags, pnt, rpnt)) != NULL) + return tpnt1; + } +#endif #endif /* -- cgit v1.2.3