diff --git a/config.subr b/config.subr
index 1e70409..db04529 100644
--- a/config.subr
+++ b/config.subr
@@ -171,10 +171,21 @@ c2prog() {
}
config_asan() {
- PREV_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS -fsanitize=address"
- config_lib_have ASAN -lasan
- CFLAGS="$PREV_CFLAGS"
+ NAME="ASAN"
+ OUT_C=".config_$NAME.c"
+ OUT=".config_$NAME"
+ echo "/* generated by configure */" > "$OUT_C"
+ echo "int main (void) { malloc(1); return 0; }" >> "$OUT_C"
+ if $LIBTOOL --tag CC --mode link ${CC} ${CPPFLAGS} ${CFLAGS} \
+ -fsanitize-address -fno-omit-frame-pointer \
+ "$OUT_C" ${LIBS} -lasan -o "$OUT" >/dev/null 2>&1; then
+ eval "HAVE_$NAME=true"
+ echo "HAVE_$NAME = true" >> ${CONFIG_MK}
+ else
+ eval "HAVE_$NAME=false"
+ echo "HAVE_$NAME = false" >> ${CONFIG_MK}
+ fi
+ rm -f "$OUT" "$OUT_C"
}
config_cocoa() {