summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Zend/Zend.m414
-rw-r--r--Zend/zend.h6
2 files changed, 19 insertions, 1 deletions
diff --git a/Zend/Zend.m4 b/Zend/Zend.m4
index e1d4db9841..784a810f79 100644
--- a/Zend/Zend.m4
+++ b/Zend/Zend.m4
@@ -21,6 +21,7 @@ AC_REQUIRE([AC_PROG_CC])
AC_REQUIRE([AC_PROG_CC_C_O])
AC_REQUIRE([AC_PROG_LEX])
AC_REQUIRE([AC_HEADER_STDC])
+AC_REQUIRE([AC_PROG_LIBTOOL])
LIBZEND_BISON_CHECK
@@ -54,6 +55,19 @@ AC_TYPE_SIGNAL
AC_CHECK_LIB(dl, dlopen, [LIBS="-ldl $LIBS"])
AC_CHECK_FUNC(dlopen,[AC_DEFINE(HAVE_LIBDL, 1,[ ])])
+dnl
+dnl Ugly hack to check if dlsym() requires a leading underscore in symbol name.
+dnl
+AC_MSG_CHECKING([whether dlsym() requires a leading underscode in symbol names])
+_LT_AC_TRY_DLOPEN_SELF([
+ AC_MSG_RESULT(no)
+], [
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(DLSYM_NEEDS_UNDERSCORE, 1, [Define if dlsym() requires a leading underscode in symbol names. ])
+], [
+ AC_MSG_RESULT(no)
+], [])
+
dnl This is required for QNX and may be some BSD derived systems
AC_CHECK_TYPE( uint, unsigned int )
AC_CHECK_TYPE( ulong, unsigned long )
diff --git a/Zend/zend.h b/Zend/zend.h
index c3276f71c3..580286846f 100644
--- a/Zend/zend.h
+++ b/Zend/zend.h
@@ -71,7 +71,11 @@
# define DL_LOAD(libname) dlopen(libname, RTLD_LAZY | RTLD_GLOBAL)
# define DL_UNLOAD dlclose
-# define DL_FETCH_SYMBOL dlsym
+# if defined(DLSYM_NEEDS_UNDERSCORE)
+# define DL_FETCH_SYMBOL(h,s) dlsym((h), "_" ## s)
+# else
+# define DL_FETCH_SYMBOL dlsym
+# endif
# define DL_HANDLE void *
# define ZEND_EXTENSIONS_SUPPORT 1
#elif defined(ZEND_WIN32)