bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: GNU SASL 1.9.2 and valgrind


From: Bruno Haible
Subject: Re: GNU SASL 1.9.2 and valgrind
Date: Sun, 03 Jan 2021 02:16:16 +0100
User-agent: KMail/5.1.3 (Linux/4.4.0-197-generic; KDE/5.18.0; x86_64; ; )

Simon Josefsson wrote in
<https://lists.gnu.org/archive/html/help-gsasl/2021-01/msg00004.html>:
> > On Ubuntu 16.04 x86_64, in 32-bit mode (CC="gcc -m32"), configure,
> > make,
> > and "make install" work fine, but "make -k check" fails several
> > tests:
> 
> Right.  It would be nice if gnulib's valgrind m4 test was a bit
> smarter, maybe it should try to build a small program printing
> something to stdout and see if valgrind is able to run it and that it
> prints the magic string to stdout.  If that doesn't work, disable
> valgrind.

Implemented as follows. Hope I didn't break anything.


2021-01-02  Bruno Haible  <bruno@clisp.org>

        valgrind-tests: Disable valgrind if it would cause all tests to fail.
        Suggested by Simon Josefsson <simon@josefsson.org> in
        <https://lists.gnu.org/archive/html/help-gsasl/2021-01/msg00004.html>.
        * m4/valgrind-tests.m4 (gl_VALGRIND_TESTS): Test $VALGRIND on an
        executable produced by the current compiler. Set VALGRIND to empty if it
        does not work. Don't set VALGRIND to empty if it merely does not accept
        the --error-exitcode=1 --leak-check=full options.

diff --git a/m4/valgrind-tests.m4 b/m4/valgrind-tests.m4
index 499759d..50d90e1 100644
--- a/m4/valgrind-tests.m4
+++ b/m4/valgrind-tests.m4
@@ -1,4 +1,4 @@
-# valgrind-tests.m4 serial 5
+# valgrind-tests.m4 serial 6
 dnl Copyright (C) 2008-2021 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -20,7 +20,29 @@ AC_DEFUN([gl_VALGRIND_TESTS],
   if test "$opt_valgrind_tests" = "yes" && test "$cross_compiling" = no; then
     AC_CHECK_PROGS([VALGRIND], [valgrind])
 
-    if test "$VALGRIND"; then
+    if test -n "$VALGRIND"; then
+      dnl On Ubuntu 16.04, /usr/bin/valgrind works only on 64-bit executables
+      dnl but fails on 32-bit executables (with exit code 1) and on x86_64-x32
+      dnl executables (with exit code 126).
+      AC_CACHE_CHECK([whether valgrind works on executables produced by the 
compiler],
+        [gl_cv_prog_valgrind_works],
+        [AC_RUN_IFELSE(
+           [AC_LANG_SOURCE([[int main () { return 0; }]])],
+           [$VALGRIND ./conftest$ac_exeext 2>/dev/null
+            if test $? = 0; then
+              gl_cv_prog_valgrind_works=yes
+            else
+              gl_cv_prog_valgrind_works=no
+            fi
+           ],
+           [gl_cv_prog_valgrind_works=no])
+        ])
+      if test $gl_cv_prog_valgrind_works != yes; then
+        VALGRIND=
+      fi
+    fi
+
+    if test -n "$VALGRIND"; then
       AC_CACHE_CHECK([for valgrind options for tests],
         [gl_cv_opt_valgrind_tests],
         [gl_valgrind_opts='-q --error-exitcode=1 --leak-check=full'
@@ -32,8 +54,6 @@ AC_DEFUN([gl_VALGRIND_TESTS],
         ])
       if test "$gl_cv_opt_valgrind_tests" != no; then
         VALGRIND="$VALGRIND $gl_cv_opt_valgrind_tests"
-      else
-        VALGRIND=
       fi
     fi
   fi




reply via email to

[Prev in Thread] Current Thread [Next in Thread]