datapath-windows: Fix build.
[cascardo/ovs.git] / tests / atlocal.in
index 2f816fc..bada7e2 100644 (file)
@@ -52,10 +52,24 @@ fi
 # Enable malloc debugging features.
 case `uname` in
 Linux)
-    MALLOC_CHECK_=2
-    MALLOC_PERTURB_=165
-    export MALLOC_CHECK_
-    export MALLOC_PERTURB_
+    MALLOC_PERTURB_=165; export MALLOC_PERTURB_
+
+    # Before glibc 2.11, the feature enabled by MALLOC_CHECK_ was not
+    # thread-safe.  See https://bugzilla.redhat.com/show_bug.cgi?id=585674 and
+    # in particular the patch attached there, which was applied to glibc CVS as
+    # "Restore locking in free_check." between 1.11 and 1.11.1.
+    vswitchd=$abs_top_builddir/vswitchd/ovs-vswitchd
+    glibc=`ldd $vswitchd | sed -n 's/^ libc\.[^ ]* => \([^ ]*\) .*/\1/p'`
+    glibc_version=`$glibc | sed -n '1s/.*version \([0-9]\{1,\}\.[0-9]\{1,\}\).*/\1/p'`
+    case $glibc_version in
+        2.[0-9] | 2.1[01]) mcheck=disabled ;;
+        *) mcheck=enabled ;;
+    esac
+    if test $mcheck = enabled; then
+        MALLOC_CHECK_=2; export MALLOC_CHECK_
+    else
+        echo >&2 "glibc $glibc_version detected, disabling memory checking"
+    fi
     ;;
 FreeBSD)
     case `uname -r` in
@@ -79,13 +93,19 @@ FreeBSD|NetBSD)
     ;;
 esac
 
-# Check for MINGW platform.
+# Check for platform.
 case `uname` in
 MINGW*)
     IS_WIN32="yes"
+    IS_BSD="no"
+    ;;
+FreeBSD|NetBSD)
+    IS_WIN32="no"
+    IS_BSD="yes"
     ;;
 *)
     IS_WIN32="no"
+    IS_BSD="no"
     ;;
 esac