From d90a2e4402c1e261289c19cbb4df31e19dea7306 Mon Sep 17 00:00:00 2001 From: Levi Morrison Date: Wed, 4 Oct 2023 14:09:37 -0600 Subject: [PATCH] asan --- docker-compose.yml | 1 + profiling/build.rs | 4 +++- profiling/tests/phpt/fork_01.phpt | 1 + 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index 7257854624..c37ea20d2f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -64,6 +64,7 @@ services: '8.0-buster-shared-ext': { <<: *base_php_service, image: 'datadog/dd-trace-ci:php-8.0-shared-ext' } '8.1-buster': { <<: *base_php_service, image: 'datadog/dd-trace-ci:php-8.1_buster' } '8.2-buster': { <<: *base_php_service, image: 'datadog/dd-trace-ci:php-8.2_buster' } + '8.3-buster': { <<: *base_php_service, image: 'datadog/dd-trace-ci:php-8.3_buster' } 'php-master-buster': { <<: *base_php_service, image: 'datadog/dd-trace-ci:php-master_buster' } # --- CentOS 6 --- '7.0-centos7': { <<: *base_php_service, image: 'datadog/dd-trace-ci:php-7.0_centos-7' } diff --git a/profiling/build.rs b/profiling/build.rs index 6e1a7e17b8..e236bcfb1d 100644 --- a/profiling/build.rs +++ b/profiling/build.rs @@ -6,6 +6,7 @@ use std::path::PathBuf; use std::process::Command; fn main() { + println!("cargo:rustc-link-arg=-fsanitize=address"); let php_config_includes_output = Command::new("php-config") .arg("--includes") .output() @@ -140,9 +141,10 @@ fn build_zend_php_ffis( .map(Path::new) .chain([Path::new("../zend_abstract_interface")]), ) - .flag_if_supported("-fuse-ld=lld") + .flag_if_supported("-fuse-ld=lld-16") .flag_if_supported("-std=c11") .flag_if_supported("-std=c17") + .flag("-fsanitize=address") .compile("php_ffi"); } diff --git a/profiling/tests/phpt/fork_01.phpt b/profiling/tests/phpt/fork_01.phpt index 80f7f05143..7c9f406e58 100644 --- a/profiling/tests/phpt/fork_01.phpt +++ b/profiling/tests/phpt/fork_01.phpt @@ -10,6 +10,7 @@ opportunities to lock or crash if that lock is held. foreach (['datadog-profiling', 'pcntl'] as $extension) if (!extension_loaded($extension)) echo "skip: test requires {$extension}\n"; +if (getenv('SKIP_ASAN')) die('skip: the profiler leaks on purpose in child of a fork'); ?> --INI-- assert.exception=1