summaryrefslogtreecommitdiffstats
path: root/libexec/rtld-elf/rtld.c
diff options
context:
space:
mode:
authormdodd <mdodd@FreeBSD.org>2005-02-04 02:46:41 +0000
committermdodd <mdodd@FreeBSD.org>2005-02-04 02:46:41 +0000
commit07c084eb10cae71165395fe42ad03c46ab5f2b60 (patch)
treec66bf0274c69dcd44063d0c245221d5b1fbf7132 /libexec/rtld-elf/rtld.c
parentfea9122ea28421face363e607278a3bdd16acdc1 (diff)
downloadFreeBSD-src-07c084eb10cae71165395fe42ad03c46ab5f2b60.zip
FreeBSD-src-07c084eb10cae71165395fe42ad03c46ab5f2b60.tar.gz
Description from Dan:
Another handy libmap patch. Lets you do stuff like this: LD_LIBMAP="libpthread.so.1=libthr.so.1" mythreadedapp If you already have a program-specific override in libmap.conf, note that you must use a program-specific override in LD_LIBMAP: LD_LIBMAP="[mythreadedapp],libpthread.so.1=libthr.so.1" mythreadedapp PR: bin/74471 Submitted by: Dan Nelson <dnelson AT allantgroup.com> MFC after: 2 weeks
Diffstat (limited to 'libexec/rtld-elf/rtld.c')
-rw-r--r--libexec/rtld-elf/rtld.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/libexec/rtld-elf/rtld.c b/libexec/rtld-elf/rtld.c
index 2741c13..6fc64dd 100644
--- a/libexec/rtld-elf/rtld.c
+++ b/libexec/rtld-elf/rtld.c
@@ -137,6 +137,7 @@ void r_debug_state(struct r_debug*, struct link_map*);
static char *error_message; /* Message for dlerror(), or NULL */
struct r_debug r_debug; /* for GDB; */
static bool libmap_disable; /* Disable libmap */
+static char *libmap_override; /* Maps to use in addition to libmap.conf */
static bool trust; /* False for setuid and setgid programs */
static char *ld_bind_now; /* Environment variable for immediate binding */
static char *ld_debug; /* Environment variable for debugging */
@@ -289,6 +290,7 @@ _rtld(Elf_Addr *sp, func_ptr_type *exit_proc, Obj_Entry **objp)
if (trust) {
ld_debug = getenv(LD_ "DEBUG");
libmap_disable = getenv(LD_ "LIBMAP_DISABLE") != NULL;
+ libmap_override = getenv(LD_ "LIBMAP");
ld_library_path = getenv(LD_ "LIBRARY_PATH");
ld_preload = getenv(LD_ "PRELOAD");
}
@@ -363,7 +365,7 @@ _rtld(Elf_Addr *sp, func_ptr_type *exit_proc, Obj_Entry **objp)
sym_zero.st_shndx = SHN_UNDEF;
if (!libmap_disable)
- libmap_disable = (bool)lm_init();
+ libmap_disable = (bool)lm_init(libmap_override);
dbg("loading LD_PRELOAD libraries");
if (load_preload_objects() == -1)
OpenPOWER on IntegriCloud