This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "uClibc-ng - small C library for embedded systems".
The branch, master has been updated via 9728de1929812df84749c9fb044f6f584e044199 (commit) via ff6ce3999db93a52d1cd22510f8508b660ddf54e (commit) from 5d775f82cb4269a6967196e4c5fa63c2af71b769 (commit)
Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below.
- Log ----------------------------------------------------------------- commit 9728de1929812df84749c9fb044f6f584e044199 Author: Waldemar Brodkorb wbx@uclibc-ng.org Date: Sun Feb 8 15:06:11 2015 +0100
Use executables RPATH/RUNPATH when searching for libraries.
Patch by Steve Ellcey sellcey@imgtec.com on uClibc mailinglist.
-----------------------------------------------------------------------
Summary of changes: extra/Configs/Config.in | 9 +++++++++ include/gnu-versions.h | 2 ++ ldso/ldso/dl-elf.c | 12 ++++++++++++ 3 files changed, 23 insertions(+)
diff --git a/extra/Configs/Config.in b/extra/Configs/Config.in index cec06e4..c7a3b2d 100644 --- a/extra/Configs/Config.in +++ b/extra/Configs/Config.in @@ -420,6 +420,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/include/gnu-versions.h b/include/gnu-versions.h index f67764c..9f53778 100644 --- a/include/gnu-versions.h +++ b/include/gnu-versions.h @@ -45,7 +45,9 @@
#define _GNU_OBSTACK_INTERFACE_VERSION 1 /* vs malloc/obstack.c */ #define _GNU_REGEX_INTERFACE_VERSION 1 /* vs posix/regex.c */ +#ifdef __UCLIBC_HAS_GNU_GLOB__ #define _GNU_GLOB_INTERFACE_VERSION 1 /* vs posix/glob.c */ +#endif #define _GNU_GETOPT_INTERFACE_VERSION 2 /* vs posix/getopt.c and posix/getopt1.c */
diff --git a/ldso/ldso/dl-elf.c b/ldso/ldso/dl-elf.c index 6fc95b3..d42b912 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
/*
hooks/post-receive