summaryrefslogtreecommitdiff
path: root/common/compat.c
diff options
context:
space:
mode:
authorFabian Groffen <grobian@gentoo.org>2017-06-07 14:37:27 +0200
committerDaiki Ueno <ueno@gnu.org>2017-06-27 13:10:32 +0200
commit9dd50249b597109c5956a531e44d46dc344daea5 (patch)
treee721eceb421bed015c95507c40e97675f8db99f9 /common/compat.c
parent20b9df53cf07c0693257f5f01fa1ff945b4cae4a (diff)
common: always use p11_dl_close wrapper
Solaris doesn't like it when dlclose is referenced using a define, resulting in a linker error looking for a symbol version. Simply calling the function in a normal way (instead of storing its address) solves this linking error. The error message seen by GNU ld is: dlclose: invalid version 7 (max 0)
Diffstat (limited to 'common/compat.c')
-rw-r--r--common/compat.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/common/compat.c b/common/compat.c
index 970e5ed..692e2ca 100644
--- a/common/compat.c
+++ b/common/compat.c
@@ -278,12 +278,6 @@ p11_dl_error (void)
return msg_buf;
}
-void
-p11_dl_close (void *dl)
-{
- FreeLibrary (dl);
-}
-
int
p11_thread_create (p11_thread_t *thread,
p11_thread_routine routine,
@@ -861,6 +855,17 @@ strerror_r (int errnum,
#endif /* HAVE_STRERROR_R */
+void
+p11_dl_close (void *dl)
+{
+#ifdef OS_WIN32
+ FreeLibrary (dl);
+#else
+ (void) dlclose (dl);
+#endif
+}
+
+
#ifdef OS_UNIX
#include <unistd.h>