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

Reply via email to