]> granicus.if.org Git - php/commitdiff
add --enable-rtld-now build option to change dlopen behavior
authorRemi Collet <remi@remirepo.net>
Mon, 11 Mar 2019 12:38:58 +0000 (13:38 +0100)
committerRemi Collet <remi@php.net>
Tue, 12 Mar 2019 07:23:06 +0000 (08:23 +0100)
Zend/zend_portability.h
configure.ac

index 90e67294789dc6fd00e615e3fd9a16209d733d0a..18e312ed97504c39ffb4911789b01cbe397a4164 100644 (file)
 #  define RTLD_GLOBAL 0
 # endif
 
+# ifdef PHP_USE_RTLD_NOW
+#  define PHP_RTLD_MODE  RTLD_NOW
+# else
+#  define PHP_RTLD_MODE  RTLD_LAZY
+# endif
+
 # if defined(RTLD_GROUP) && defined(RTLD_WORLD) && defined(RTLD_PARENT)
-#  define DL_LOAD(libname)                     dlopen(libname, RTLD_LAZY | RTLD_GLOBAL | RTLD_GROUP | RTLD_WORLD | RTLD_PARENT)
+#  define DL_LOAD(libname)                     dlopen(libname, PHP_RTLD_MODE | RTLD_GLOBAL | RTLD_GROUP | RTLD_WORLD | RTLD_PARENT)
 # elif defined(RTLD_DEEPBIND) && !defined(__SANITIZE_ADDRESS__)
-#  define DL_LOAD(libname)                     dlopen(libname, RTLD_LAZY | RTLD_GLOBAL | RTLD_DEEPBIND)
+#  define DL_LOAD(libname)                     dlopen(libname, PHP_RTLD_MODE | RTLD_GLOBAL | RTLD_DEEPBIND)
 # else
-#  define DL_LOAD(libname)                     dlopen(libname, RTLD_LAZY | RTLD_GLOBAL)
+#  define DL_LOAD(libname)                     dlopen(libname, PHP_RTLD_MODE | RTLD_GLOBAL)
 # endif
 # define DL_UNLOAD                                     dlclose
 # if defined(DLSYM_NEEDS_UNDERSCORE)
index 633388cdffc92713a6a8159ef00d96a9fc95cf14..43317ba10fa6acda24ebfd98f6494a6e7bada312 100644 (file)
@@ -927,6 +927,17 @@ else
   ZEND_DEBUG=no
 fi
 
+PHP_ARG_ENABLE([rtld-now],
+  [whether to dlopen extensions with RTLD_NOW instead of RTLD_LAZY],
+  [AS_HELP_STRING([--enable-rtld-now],
+    [Use dlopen with RTLD_NOW instead of RTLD_LAZY])],
+  [no],
+  [no])
+
+if test "$PHP_RTLD_NOW" = "yes"; then
+  AC_DEFINE(PHP_USE_RTLD_NOW, 1, [ Use dlopen with RTLD_NOW instead of RTLD_LAZY ])
+fi
+
 PHP_ARG_WITH([layout],
   [layout of installed files],
   [AS_HELP_STRING([--with-layout=TYPE],