summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--azure-pipelines.yml5
-rw-r--r--azure/apt.yml1
-rw-r--r--azure/msan_job.yml76
-rw-r--r--azure/test.yml1
4 files changed, 83 insertions, 0 deletions
diff --git a/azure-pipelines.yml b/azure-pipelines.yml
index c0be304b5e..c6f047145b 100644
--- a/azure-pipelines.yml
+++ b/azure-pipelines.yml
@@ -64,3 +64,8 @@ jobs:
LDFLAGS='-fsanitize=undefined,address'
runTestsParameters: --asan
timeoutInMinutes: 120
+ - template: azure/msan_job.yml
+ parameters:
+ configurationName: DEBUG_ZTS_MSAN
+ configurationParameters: '--enable-debug --enable-maintainer-zts'
+ runTestsParameters: --asan
diff --git a/azure/apt.yml b/azure/apt.yml
index 843ae1daf1..5c0a9a0c55 100644
--- a/azure/apt.yml
+++ b/azure/apt.yml
@@ -34,5 +34,6 @@ steps:
libargon2-0-dev \
postgresql \
postgresql-contrib \
+ llvm \
${{ parameters.packages }}
displayName: 'APT'
diff --git a/azure/msan_job.yml b/azure/msan_job.yml
new file mode 100644
index 0000000000..bae65e018e
--- /dev/null
+++ b/azure/msan_job.yml
@@ -0,0 +1,76 @@
+parameters:
+ configurationName: ''
+ configurationParameters: ''
+ runTestsParameters: ''
+ timeoutInMinutes: 60
+
+jobs:
+ - job: ${{ parameters.configurationName }}
+ timeoutInMinutes: ${{ parameters.timeoutInMinutes }}
+ pool:
+ vmImage: 'ubuntu-latest'
+ steps:
+ - template: apt.yml
+ - script: |
+ export CC=clang
+ export CXX=clang++
+ export CFLAGS="-fsanitize=memory -DZEND_TRACK_ARENA_ALLOC"
+ export LDFLAGS="-fsanitize=memory"
+ ./buildconf --force
+ # msan requires all used libraries to be instrumented,
+ # so we should avoiding linking against anything but libc here
+ ./configure ${{ parameters.configurationParameters }} \
+ --prefix=/usr \
+ --without-sqlite3 \
+ --without-pdo-sqlite \
+ --without-libxml \
+ --disable-dom \
+ --disable-simplexml \
+ --disable-xml \
+ --disable-xmlreader \
+ --disable-xmlwriter \
+ --without-pcre-jit \
+ --enable-phpdbg \
+ --enable-fpm \
+ --with-pdo-mysql=mysqlnd \
+ --with-mysqli=mysqlnd \
+ --without-pear \
+ --enable-exif \
+ --enable-sysvsem \
+ --enable-sysvshm \
+ --enable-shmop \
+ --enable-pcntl \
+ --enable-mbstring \
+ --disable-mbregex \
+ --enable-sockets \
+ --enable-bcmath \
+ --enable-calendar \
+ --enable-ftp \
+ --enable-zend-test \
+ --enable-werror \
+ --with-config-file-path=/etc \
+ --with-config-file-scan-dir=/etc/php.d
+ displayName: 'Configure Build'
+ - script: make -j$(/usr/bin/nproc) >/dev/null
+ displayName: 'Make Build'
+ - script: |
+ sudo make install
+ sudo mkdir /etc/php.d
+ sudo chmod 777 /etc/php.d
+ echo mysqli.default_socket=/var/run/mysqld/mysqld.sock > /etc/php.d/mysqli.ini
+ echo pdo_mysql.default_socket=/var/run/mysqld/mysqld.sock > /etc/php.d/pdo_mysql.ini
+ displayName: 'Install Build'
+ - script: |
+ mysql -uroot -proot -e "CREATE DATABASE IF NOT EXISTS test"
+ displayName: 'Setup'
+ - template: test.yml
+ parameters:
+ configurationName: ${{ parameters.configurationName }}
+ runTestsParameters: ${{ parameters.runTestsParameters }}
+ - template: test.yml
+ parameters:
+ configurationName: ${{ parameters.configurationName }}
+ runTestsName: 'OpCache'
+ runTestsParameters: >-
+ ${{ parameters.runTestsParameters }}
+ -d zend_extension=opcache.so -d opcache.enable_cli=1
diff --git a/azure/test.yml b/azure/test.yml
index 9821010f11..3f6963c706 100644
--- a/azure/test.yml
+++ b/azure/test.yml
@@ -12,6 +12,7 @@ steps:
export TEST_PHP_JUNIT=junit.xml
export REPORT_EXIT_STATUS=no
export SKIP_IO_CAPTURE_TESTS=1
+ export MSAN_SYMBOLIZER_PATH=/usr/lib/llvm-3.8/bin/llvm-symbolizer
rm -rf junit.xml | true
php run-tests.php -P -q \
-j$(/usr/bin/nproc) \