On February 20, 2015 1:03:26 AM GMT+01:00, Steve Ellcey <[email protected]> wrote: >This option will modify ldso so that it will use the executables >RPATH/RUNPATH to find to find libraries even though this behavour >is not standard. Setting this option causes the uclibc dynamic linker >behavour to match the glibc dynamic linker.
Isn't RUNPATH a separate entry? Thanks, > >Signed-off-by: Steve Ellcey <[email protected]> >--- > extra/Configs/Config.in | 9 +++++++++ > ldso/ldso/dl-elf.c | 12 ++++++++++++ > 2 files changed, 21 insertions(+) > >diff --git a/extra/Configs/Config.in b/extra/Configs/Config.in >index 8e603b2..a235c3d 100644 >--- a/extra/Configs/Config.in >+++ b/extra/Configs/Config.in >@@ -418,6 +418,15 @@ config LDSO_RUNPATH > Usage of RUNPATH tags is not too common, so disabling this feature > should be safe for most people. > >+config LDSO_RUNPATH_OF_EXECUTABLE >+ bool "Use executables RPATH/RUNPATH when searching for libraries." >+ depends on LDSO_RUNPATH >+ default n >+ help >+ Use the executables RPATH/RUNPATH to find to find libraries even >+ though this behavour is not standard. Setting this option causes >+ the uclibc dynamic linker behavour to match the glibc dynamic >linker. >+ > config LDSO_SAFE_RUNPATH > bool "Allow only RUNPATH beginning with /" > depends on LDSO_RUNPATH >diff --git a/ldso/ldso/dl-elf.c b/ldso/ldso/dl-elf.c >index 54501d1..56076b6 100644 >--- a/ldso/ldso/dl-elf.c >+++ b/ldso/ldso/dl-elf.c >@@ -237,6 +237,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) > 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 > > #ifdef __LDSO_LD_LIBRARY_PATH__ _______________________________________________ uClibc mailing list [email protected] http://lists.busybox.net/mailman/listinfo/uclibc
