#include "replace.h"
#ifndef HAVE_DLOPEN
+#ifdef DLOPEN_TAKES_UNSIGNED_FLAGS
+void *rep_dlopen(const char *name, unsigned int flags)
+#else
void *rep_dlopen(const char *name, int flags)
+#endif
{
return NULL;
}
libreplace_cv_dlfcn=no
AC_SEARCH_LIBS(dlopen, dl)
-if test x"${ac_cv_search_dlopen}" = x"no"; then
- libreplace_cv_dlfcn=yes
-else
- AC_CHECK_HEADERS(dlfcn.h)
- AC_CHECK_FUNCS([dlopen dlsym dlerror dlclose],[],[libreplace_cv_dlfcn=yes])
-fi
+AC_CHECK_HEADERS(dlfcn.h)
+AC_CHECK_FUNCS([dlopen dlsym dlerror dlclose],[],[libreplace_cv_dlfcn=yes])
+
+AC_VERIFY_C_PROTOTYPE([void *dlopen(const char* filename, unsigned int flags)],
+ [
+ return 0;
+ ],[
+ AC_DEFINE(DLOPEN_TAKES_UNSIGNED_FLAGS, 1, [Whether dlopen takes unsinged int flags])
+ ],[],[
+ #include <dlfcn.h>
+ ])
if test x"${libreplace_cv_dlfcn}" = x"yes";then
LIBREPLACEOBJ="${LIBREPLACEOBJ} dlfcn.o"
#ifndef HAVE_DLOPEN
#define dlopen rep_dlopen
+#ifdef DLOPEN_TAKES_UNSIGNED_FLAGS
+void *rep_dlopen(const char *name, unsigned int flags);
+#else
void *rep_dlopen(const char *name, int flags);
#endif
+#endif
#ifndef HAVE_DLSYM
#define dlsym rep_dlsym