aboutsummaryrefslogtreecommitdiff
path: root/crypto/dso/dso_dlfcn.c
diff options
context:
space:
mode:
authorRichard Levitte <levitte@openssl.org>2003-06-11 22:42:28 +0000
committerRichard Levitte <levitte@openssl.org>2003-06-11 22:42:28 +0000
commite666c4599f017c244873a0184807ee22058a70b3 (patch)
treeb35cbc5568cd258e0070c55cf667ef918054a91a /crypto/dso/dso_dlfcn.c
parent98cec7fc7b9058aa7a43c3b27591be9a841cead5 (diff)
downloadopenssl-e666c4599f017c244873a0184807ee22058a70b3.zip
openssl-e666c4599f017c244873a0184807ee22058a70b3.tar.gz
openssl-e666c4599f017c244873a0184807ee22058a70b3.tar.bz2
Add the possibility to have symbols loaded globally with DSO.
Diffstat (limited to 'crypto/dso/dso_dlfcn.c')
-rw-r--r--crypto/dso/dso_dlfcn.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/crypto/dso/dso_dlfcn.c b/crypto/dso/dso_dlfcn.c
index de88b2f..259aee8 100644
--- a/crypto/dso/dso_dlfcn.c
+++ b/crypto/dso/dso_dlfcn.c
@@ -140,13 +140,19 @@ static int dlfcn_load(DSO *dso)
void *ptr = NULL;
/* See applicable comments in dso_dl.c */
char *filename = DSO_convert_filename(dso, NULL);
+ int flags = DLOPEN_FLAG;
if(filename == NULL)
{
DSOerr(DSO_F_DLFCN_LOAD,DSO_R_NO_FILENAME);
goto err;
}
- ptr = dlopen(filename, DLOPEN_FLAG);
+
+#ifdef RTLD_GLOBAL
+ if (dso->flags & DSO_FLAG_GLOBAL_SYMBOLS)
+ flags |= RTLD_GLOBAL;
+#endif
+ ptr = dlopen(filename, flags);
if(ptr == NULL)
{
DSOerr(DSO_F_DLFCN_LOAD,DSO_R_LOAD_FAILED);