diff options
author | Timo Teräs <timo.teras@iki.fi> | 2011-03-18 11:40:04 +0200 |
---|---|---|
committer | Natanael Copa <ncopa@alpinelinux.org> | 2011-12-23 15:49:01 +0100 |
commit | e6fa350aa23280795a912d0edd989d7c98c62710 (patch) | |
tree | 470da95d5691be2025ed965037baf3234086ef86 /ldso/libdl/libdl.c | |
parent | 8f71a37896be4ce64c009b369117b252eb4de366 (diff) | |
download | uClibc-alpine-e6fa350aa23280795a912d0edd989d7c98c62710.tar.bz2 uClibc-alpine-e6fa350aa23280795a912d0edd989d7c98c62710.tar.xz |
ldso: support RTLD_NOLOAD
So application query if specified modile is loaded or not with
dlopen.
Signed-off-by: Timo Teräs <timo.teras@iki.fi>
Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
Diffstat (limited to 'ldso/libdl/libdl.c')
-rw-r--r-- | ldso/libdl/libdl.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/ldso/libdl/libdl.c b/ldso/libdl/libdl.c index 52c77b00a..49e90d042 100644 --- a/ldso/libdl/libdl.c +++ b/ldso/libdl/libdl.c @@ -288,7 +288,7 @@ void *dlopen(const char *libname, int flag) #endif /* A bit of sanity checking... */ - if (!(flag & (RTLD_LAZY|RTLD_NOW))) { + if (!(flag & (RTLD_LAZY|RTLD_NOW|RTLD_NOLOAD))) { _dl_error_number = LD_BAD_HANDLE; return NULL; } @@ -358,8 +358,9 @@ void *dlopen(const char *libname, int flag) /* Try to load the specified library */ _dl_if_debug_print("Trying to dlopen '%s', RTLD_GLOBAL:%d RTLD_NOW:%d\n", (char*)libname, (flag & RTLD_GLOBAL ? 1:0), (now_flag & RTLD_NOW ? 1:0)); - tpnt = _dl_load_shared_library(0, &rpnt, tfrom, (char*)libname, 0); + tpnt = _dl_load_shared_library((flag & RTLD_NOLOAD) ? DL_RESOLVE_NOLOAD : 0, + &rpnt, tfrom, (char*)libname, 0); if (tpnt == NULL) { _dl_unmap_cache(); return NULL; |