| AC_DEFUN([AC_PACKAGE_CHECK_UBSAN], |
| [ AC_MSG_CHECKING([if C compiler supports UBSAN]) |
| OLD_CFLAGS="$CFLAGS" |
| OLD_LDFLAGS="$LDFLAGS" |
| UBSAN_FLAGS="-fsanitize=undefined" |
| CFLAGS="$CFLAGS $UBSAN_FLAGS" |
| LDFLAGS="$LDFLAGS $UBSAN_FLAGS" |
| AC_LINK_IFELSE([AC_LANG_PROGRAM([])], |
| [AC_MSG_RESULT([yes])] |
| [ubsan_cflags=$UBSAN_FLAGS] |
| [ubsan_ldflags=$UBSAN_FLAGS] |
| [have_ubsan=yes], |
| [AC_MSG_RESULT([no])]) |
| CFLAGS="${OLD_CFLAGS}" |
| LDFLAGS="${OLD_LDFLAGS}" |
| AC_SUBST(have_ubsan) |
| AC_SUBST(ubsan_cflags) |
| AC_SUBST(ubsan_ldflags) |
| ]) |
| |
| AC_DEFUN([AC_PACKAGE_CHECK_ADDRSAN], |
| [ AC_MSG_CHECKING([if C compiler supports ADDRSAN]) |
| OLD_CFLAGS="$CFLAGS" |
| OLD_LDFLAGS="$LDFLAGS" |
| ADDRSAN_FLAGS="-fsanitize=address" |
| CFLAGS="$CFLAGS $ADDRSAN_FLAGS" |
| LDFLAGS="$LDFLAGS $ADDRSAN_FLAGS" |
| AC_LINK_IFELSE([AC_LANG_PROGRAM([])], |
| [AC_MSG_RESULT([yes])] |
| [addrsan_cflags=$ADDRSAN_FLAGS] |
| [addrsan_ldflags=$ADDRSAN_FLAGS] |
| [have_addrsan=yes], |
| [AC_MSG_RESULT([no])]) |
| CFLAGS="${OLD_CFLAGS}" |
| LDFLAGS="${OLD_LDFLAGS}" |
| AC_SUBST(have_addrsan) |
| AC_SUBST(addrsan_cflags) |
| AC_SUBST(addrsan_ldflags) |
| ]) |
| |
| AC_DEFUN([AC_PACKAGE_CHECK_THREADSAN], |
| [ AC_MSG_CHECKING([if C compiler supports THREADSAN]) |
| OLD_CFLAGS="$CFLAGS" |
| OLD_LDFLAGS="$LDFLAGS" |
| THREADSAN_FLAGS="-fsanitize=thread" |
| CFLAGS="$CFLAGS $THREADSAN_FLAGS" |
| LDFLAGS="$LDFLAGS $ADRSAN_FLAGS" |
| AC_LINK_IFELSE([AC_LANG_PROGRAM([])], |
| [AC_MSG_RESULT([yes])] |
| [threadsan_cflags=$THREADSAN_FLAGS] |
| [threadsan_ldflags=$THREADSAN_FLAGS] |
| [have_threadsan=yes], |
| [AC_MSG_RESULT([no])]) |
| CFLAGS="${OLD_CFLAGS}" |
| LDFLAGS="${OLD_LDFLAGS}" |
| AC_SUBST(have_threadsan) |
| AC_SUBST(threadsan_cflags) |
| AC_SUBST(threadsan_ldflags) |
| ]) |