Commit 7cdce929e41e6902defeb9ea1c4c621f41c00fe2

Thomas de Grivel 2025-04-08T21:27:10

config.subr: config_asan on FreeBSD

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() {