Add --enable-rtld-deepbind configure flag
authorDaniil Gentili <daniil@daniil.it>
Wed, 13 Nov 2024 12:24:29 +0000 (12:24 +0000)
committerOndřej Surý <ondrej@debian.org>
Sun, 3 Aug 2025 07:32:21 +0000 (09:32 +0200)
Gbp-Pq: Name 0046-Add-enable-rtld-deepbind-configure-flag.patch

Zend/zend_portability.h
configure.ac

index e4195402fc29499030f2ed388a90ef7a6cf39039..44d4daf66083e22c7060937157e52f099cfe1b1c 100644 (file)
 
 # 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)
index cfc130541b793df389b944c0f70e38e70f083657..38d4fcac1e4de836fa6467a6b4c8f6293888b1d3 100644 (file)
@@ -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],