1 AC_DEFUN([AC_PACKAGE_CHECK_UBSAN],
2 [ AC_MSG_CHECKING([if C compiler supports UBSAN])
5 UBSAN_FLAGS="-fsanitize=undefined"
6 CFLAGS="$CFLAGS $UBSAN_FLAGS"
7 LDFLAGS="$LDFLAGS $UBSAN_FLAGS"
8 AC_LINK_IFELSE([AC_LANG_PROGRAM([])],
10 [ubsan_cflags=$UBSAN_FLAGS]
11 [ubsan_ldflags=$UBSAN_FLAGS]
13 [AC_MSG_RESULT([no])])
14 CFLAGS="${OLD_CFLAGS}"
15 LDFLAGS="${OLD_LDFLAGS}"
17 AC_SUBST(ubsan_cflags)
18 AC_SUBST(ubsan_ldflags)
21 AC_DEFUN([AC_PACKAGE_CHECK_ADDRSAN],
22 [ AC_MSG_CHECKING([if C compiler supports ADDRSAN])
24 OLD_LDFLAGS="$LDFLAGS"
25 ADDRSAN_FLAGS="-fsanitize=address"
26 CFLAGS="$CFLAGS $ADDRSAN_FLAGS"
27 LDFLAGS="$LDFLAGS $ADDRSAN_FLAGS"
28 AC_LINK_IFELSE([AC_LANG_PROGRAM([])],
29 [AC_MSG_RESULT([yes])]
30 [addrsan_cflags=$ADDRSAN_FLAGS]
31 [addrsan_ldflags=$ADDRSAN_FLAGS]
33 [AC_MSG_RESULT([no])])
34 CFLAGS="${OLD_CFLAGS}"
35 LDFLAGS="${OLD_LDFLAGS}"
36 AC_SUBST(have_addrsan)
37 AC_SUBST(addrsan_cflags)
38 AC_SUBST(addrsan_ldflags)
41 AC_DEFUN([AC_PACKAGE_CHECK_THREADSAN],
42 [ AC_MSG_CHECKING([if C compiler supports THREADSAN])
44 OLD_LDFLAGS="$LDFLAGS"
45 THREADSAN_FLAGS="-fsanitize=thread"
46 CFLAGS="$CFLAGS $THREADSAN_FLAGS"
47 LDFLAGS="$LDFLAGS $ADRSAN_FLAGS"
48 AC_LINK_IFELSE([AC_LANG_PROGRAM([])],
49 [AC_MSG_RESULT([yes])]
50 [threadsan_cflags=$THREADSAN_FLAGS]
51 [threadsan_ldflags=$THREADSAN_FLAGS]
53 [AC_MSG_RESULT([no])])
54 CFLAGS="${OLD_CFLAGS}"
55 LDFLAGS="${OLD_LDFLAGS}"
56 AC_SUBST(have_threadsan)
57 AC_SUBST(threadsan_cflags)
58 AC_SUBST(threadsan_ldflags)