configurationName: DEBUG_ZTS_MSAN
configurationParameters: '--enable-debug --enable-zts'
runTestsParameters: --asan
+ timeoutInMinutes: 90
- template: azure/community_job.yml
parameters:
configurationName: COMMUNITY
- script: |
export CC=clang
export CXX=clang++
- export CFLAGS="-fsanitize=memory -DZEND_TRACK_ARENA_ALLOC"
- export LDFLAGS="-fsanitize=memory"
+ export CFLAGS="-DZEND_TRACK_ARENA_ALLOC"
./buildconf --force
# msan requires all used libraries to be instrumented,
# so we should avoiding linking against anything but libc here
--enable-ftp \
--enable-zend-test \
--enable-werror \
+ --enable-memory-sanitizer \
--with-config-file-path=/etc \
--with-config-file-scan-dir=/etc/php.d
displayName: 'Configure Build'
[Enable -Werror])],
[no],
[no])
+PHP_ARG_ENABLE([memory-sanitizer],,
+ [AS_HELP_STRING([--enable-memory-sanitizer],
+ [Enable memory sanitizer (clang only)])],
+ [no],
+ [no])
dnl Extension configuration.
dnl ----------------------------------------------------------------------------
CPPFLAGS="$CPPFLAGS $ac_cv_pthreads_cflags"
fi
+dnl Enable -Werror late, because it may break configure checks throwing warnings.
if test "$PHP_WERROR" = "yes"; then
CFLAGS="$CFLAGS -Werror"
- CPPFLAGS="$CPPFLAGS -Werror"
+ CXXFLAGS="$CXXFLAGS -Werror"
+fi
+
+dnl Enable -fsanitize=memory late, because interceptors may break linking detection.
+if test "$PHP_MEMORY_SANITIZER" = "yes"; then
+ CFLAGS="$CFLAGS -fsanitize=memory -fsanitize-memory-track-origins"
+ CXXFLAGS="$CXXFLAGS -fsanitize=memory -fsanitize-memory-track-origins"
fi
dnl