Skip to content

Commit 3e2b30e

Browse files
committed
Add --enable-address-sanitizer flag
When we need to enable ASan in PHP extension, we also need to enable it in PHP kernel. Providing this option makes it easier for us to enable ASan when compiling PHP. And we use --enable-address-sanitizer in azure-pipelines.yml instead of changing CFLAGS. We also add compile flag check to MSan.
1 parent 0496d22 commit 3e2b30e

File tree

2 files changed

+23
-9
lines changed

2 files changed

+23
-9
lines changed

azure-pipelines.yml

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -74,10 +74,7 @@ jobs:
7474
- template: azure/job.yml
7575
parameters:
7676
configurationName: DEBUG_ZTS_ASAN_UBSAN
77-
configurationParameters: >-
78-
--enable-debug --enable-zts
79-
CFLAGS='-fsanitize=undefined,address -DZEND_TRACK_ARENA_ALLOC'
80-
LDFLAGS='-fsanitize=undefined,address'
77+
configurationParameters: '--enable-debug --enable-zts --enable-address-sanitizer'
8178
runTestsParameters: --asan
8279
timeoutInMinutes: 360
8380
- template: azure/msan_job.yml
@@ -90,9 +87,8 @@ jobs:
9087
parameters:
9188
configurationName: COMMUNITY
9289
configurationParameters: >-
93-
--enable-debug --enable-zts
94-
CFLAGS='-fsanitize=undefined,address -fno-sanitize-recover -DZEND_TRACK_ARENA_ALLOC'
95-
LDFLAGS='-fsanitize=undefined,address'
90+
--enable-debug --enable-zts --enable-address-sanitizer
91+
CFLAGS='-fno-sanitize-recover'
9692
- template: azure/coverage_job.yml
9793
parameters:
9894
configurationName: COVERAGE_DEBUG_ZTS

configure.ac

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -982,6 +982,11 @@ PHP_ARG_ENABLE([memory-sanitizer],,
982982
[Enable memory sanitizer (clang only)])],
983983
[no],
984984
[no])
985+
PHP_ARG_ENABLE([address-sanitizer],,
986+
[AS_HELP_STRING([--enable-address-sanitizer],
987+
[Enable address sanitizer])],
988+
[no],
989+
[no])
985990

986991
dnl Extension configuration.
987992
dnl ----------------------------------------------------------------------------
@@ -1374,8 +1379,21 @@ fi
13741379

13751380
dnl Enable -fsanitize=memory late, because interceptors may break linking detection.
13761381
if test "$PHP_MEMORY_SANITIZER" = "yes"; then
1377-
CFLAGS="$CFLAGS -fsanitize=memory -fsanitize-memory-track-origins"
1378-
CXXFLAGS="$CXXFLAGS -fsanitize=memory -fsanitize-memory-track-origins"
1382+
AX_CHECK_COMPILE_FLAG([-fsanitize=memory -fsanitize-memory-track-origins], [
1383+
CFLAGS="$CFLAGS -fsanitize=memory -fsanitize-memory-track-origins"
1384+
CXXFLAGS="$CXXFLAGS -fsanitize=memory -fsanitize-memory-track-origins"
1385+
], [AC_MSG_ERROR([MemorySanitizer is not available])])
1386+
fi
1387+
1388+
if test "$PHP_ADDRESS_SANITIZER" = "yes"; then
1389+
AX_CHECK_COMPILE_FLAG([-fsanitize=undefined,address], [
1390+
CFLAGS="$CFLAGS -fsanitize=undefined,address -DZEND_TRACK_ARENA_ALLOC"
1391+
CXXFLAGS="$CXXFLAGS -fsanitize=undefined,address -DZEND_TRACK_ARENA_ALLOC"
1392+
LDFLAGS="$LDFLAGS -fsanitize=undefined,address"
1393+
AX_CHECK_COMPILE_FLAG([-fno-omit-frame-pointer], [
1394+
CFLAGS="$CFLAGS -fno-omit-frame-pointer"
1395+
])
1396+
], [AC_MSG_ERROR([AddressSanitizer is not available])])
13791397
fi
13801398

13811399
dnl

0 commit comments

Comments
 (0)