1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
From: Daniil Gentili <daniil@daniil.it>
Date: Wed, 13 Nov 2024 12:24:29 +0000
Subject: Add --enable-rtld-deepbind configure flag
---
Zend/zend_portability.h | 2 +-
configure.ac | 17 +++++++++++++++++
2 files changed, 18 insertions(+), 1 deletion(-)
diff --git a/Zend/zend_portability.h b/Zend/zend_portability.h
index e419540..44d4daf 100644
--- a/Zend/zend_portability.h
+++ b/Zend/zend_portability.h
@@ -161,7 +161,7 @@
# if defined(RTLD_GROUP) && defined(RTLD_WORLD) && defined(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__) && !__has_feature(memory_sanitizer)
+# elif defined(RTLD_DEEPBIND) && !defined(__SANITIZE_ADDRESS__) && !__has_feature(memory_sanitizer) && defined(PHP_USE_RTLD_DEEPBIND)
# define DL_LOAD(libname) dlopen(libname, PHP_RTLD_MODE | RTLD_GLOBAL | RTLD_DEEPBIND)
# else
# define DL_LOAD(libname) dlopen(libname, PHP_RTLD_MODE | RTLD_GLOBAL)
diff --git a/configure.ac b/configure.ac
index cfc1305..38d4fca 100644
--- a/configure.ac
+++ b/configure.ac
@@ -867,6 +867,23 @@ AS_VAR_IF([PHP_RTLD_NOW], [yes],
[Define to 1 if 'dlopen()' uses the 'RTLD_NOW' mode flag instead of
'RTLD_LAZY'.])])
+if test "$PHP_SAPI" = "apache2handler"; then
+ PHP_RTLD_DEEPBIND_DEFAULT=yes
+else
+ PHP_RTLD_DEEPBIND_DEFAULT=no
+fi
+
+PHP_ARG_ENABLE([rtld-deepbind],
+ [whether to dlopen extensions with RTLD_DEEPBIND],
+ [AS_HELP_STRING([--enable-rtld-deepbind],
+ [Use dlopen with RTLD_DEEPBIND])],
+ [$PHP_RTLD_DEEPBIND_DEFAULT],
+ [$PHP_RTLD_DEEPBIND_DEFAULT])
+
+if test "$PHP_RTLD_DEEPBIND" = "yes"; then
+ AC_DEFINE(PHP_USE_RTLD_DEEPBIND, 1, [ Use dlopen with RTLD_DEEPBIND ])
+fi
+
PHP_ARG_WITH([layout],
[layout of installed files],
[AS_HELP_STRING([--with-layout=TYPE],
|