diff options
author | mdodd <mdodd@FreeBSD.org> | 2005-02-04 02:46:41 +0000 |
---|---|---|
committer | mdodd <mdodd@FreeBSD.org> | 2005-02-04 02:46:41 +0000 |
commit | 07c084eb10cae71165395fe42ad03c46ab5f2b60 (patch) | |
tree | c66bf0274c69dcd44063d0c245221d5b1fbf7132 /libexec/rtld-elf/rtld.c | |
parent | fea9122ea28421face363e607278a3bdd16acdc1 (diff) | |
download | FreeBSD-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.c | 4 |
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) |