From 34bf51105ba2facb44b3cbf3e2a198d98f8a1f95 Mon Sep 17 00:00:00 2001 From: Bob Weinand Date: Mon, 14 Oct 2024 04:52:58 +0200 Subject: [PATCH] Support build with disabled zend signals (#2886) I seem to have taken care about the globals, but missed zend_signal_handler_unblock. Signed-off-by: Bob Weinand --- dockerfiles/verify_packages/Makefile | 5 +++++ .../test_alpine_zts_no_zend_signals.sh | 19 +++++++++++++++++++ ext/threads.c | 4 ++++ 3 files changed, 28 insertions(+) create mode 100644 dockerfiles/verify_packages/installer/test_alpine_zts_no_zend_signals.sh diff --git a/dockerfiles/verify_packages/Makefile b/dockerfiles/verify_packages/Makefile index 1b68c99c0a..62dc483143 100644 --- a/dockerfiles/verify_packages/Makefile +++ b/dockerfiles/verify_packages/Makefile @@ -128,6 +128,11 @@ test_alpine_install_no_ext_curl_yes_curl_cli.sh \ @echo "################### $(@) ###################" docker run --rm -ti -v $(shell pwd)/../../:/app --env-file $(shell pwd)/.env -e CIRCLECI --workdir=/app alpine:3.13 sh dockerfiles/verify_packages/installer/$(@) +test_alpine_zts_no_zend_signals.sh \ + : global_test_dependencies + @echo "################### $(@) ###################" + docker run --rm -ti -v $(shell pwd)/../../:/app --env-file $(shell pwd)/.env -e CIRCLECI --workdir=/app dunglas/frankenphp:php8.3.12-alpine sh dockerfiles/verify_packages/installer/$(@) + test_alpine_no_libexecinfo.sh: global_test_dependencies @echo "################### $(@) ###################" docker run --rm -ti -v $(shell pwd)/../../:/app --env-file $(shell pwd)/.env -e CIRCLECI --workdir=/app php:7.4-cli-alpine sh dockerfiles/verify_packages/installer/$(@) diff --git a/dockerfiles/verify_packages/installer/test_alpine_zts_no_zend_signals.sh b/dockerfiles/verify_packages/installer/test_alpine_zts_no_zend_signals.sh new file mode 100644 index 0000000000..89ad78149e --- /dev/null +++ b/dockerfiles/verify_packages/installer/test_alpine_zts_no_zend_signals.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env sh + +set -e + +. "$(dirname ${0})/utils.sh" + +apk add libgcc + +# Initially no ddtrace +assert_no_ddtrace + +# Install using the php installer +version=$(cat VERSION) +php ./build/packages/datadog-setup.php --enable-profiling --php-bin php +assert_ddtrace_version "${version}" +assert_profiler_version "${version}" +assert_appsec_version "${version}" + +assert_sources_path_exists diff --git a/ext/threads.c b/ext/threads.c index d77e48b3da..a5cedbcec8 100644 --- a/ext/threads.c +++ b/ext/threads.c @@ -1,9 +1,11 @@ #include "threads.h" #define zend_signal_globals_id zend_signal_globals_id_dummy #define zend_signal_globals_offset zend_signal_globals_offset_dummy +#define zend_signal_handler_unblock zend_signal_handler_unblock_dummy #include #undef zend_signal_globals_id #undef zend_signal_globals_offset +#undef zend_signal_handler_unblock #include "ddtrace.h" #if ZTS @@ -18,6 +20,8 @@ extern __attribute__((weak, weak_import)) size_t zend_signal_globals_offset; __attribute__((weak)) int zend_signal_globals_id; __attribute__((weak)) size_t zend_signal_globals_offset; #endif + +__attribute__((weak)) void zend_signal_handler_unblock(void); #endif HashTable ddtrace_tls_bases; // map thread id to TSRMLS_CACHE