configure.ac: fix '--disable-dwarf-debug'
authorSergei Trofimovich <slyfox@gentoo.org>
Sat, 17 Aug 2019 23:50:35 +0000 (00:50 +0100)
committerMarge Bot <ben+marge-bot@smart-cactus.org>
Fri, 23 Aug 2019 23:27:21 +0000 (19:27 -0400)
Before the change
    ./configure --disable-dwarf-debug
enabled DWARF debugging unconditionally.

This happened due to use of 5-argument form of `AC_ARG_ENABLE`
without actually checking the passed  `$enableval` parameter:

```
AC_ARG_ENABLE(dwarf-unwind,
    [AC_HELP_STRING([--enable-dwarf-unwind],
        [Enable DWARF unwinding support in the runtime system via elfutils' libdw [default=no]])],
    [AC_CHECK_LIB(dw, dwfl_attach_state,
      [UseLibdw=YES],
      [AC_MSG_ERROR([Cannot find system libdw (required by --enable-dwarf-unwind)])])]
    [UseLibdw=NO]
)
```

Note:

- `[UseLibdw=NO]` is called when `--{enable,disable}-dwarf-unwind`
  is not passed at all as a parameter (ok).
- `[AC_CHECK_LIB(dw, dwfl_attach_state, [UseLibdw=YES],` is called
  for both:

  * `--enable-dwarf-unwind` being passed: `$enableval = "yes"` (ok).
  *  --disable-dwarf-unwind` being passed: `$enableval = "no"` (bad).

The change is to use 3-argument `AC_ARG_ENABLE` and check for passed
value as `"$enable_dwarf_unwind" = "yes"`.

Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
configure.ac

index 0524d14..6f57d3b 100644 (file)
@@ -1246,12 +1246,13 @@ UseLibdw=NO
 USE_LIBDW=0
 AC_ARG_ENABLE(dwarf-unwind,
     [AC_HELP_STRING([--enable-dwarf-unwind],
-        [Enable DWARF unwinding support in the runtime system via elfutils' libdw [default=no]])],
-    [AC_CHECK_LIB(dw, dwfl_attach_state,
+        [Enable DWARF unwinding support in the runtime system via elfutils' libdw [default=no]])])
+if test "$enable_dwarf_unwind" = "yes" ; then
+  AC_CHECK_LIB(dw, dwfl_attach_state,
       [UseLibdw=YES],
-      [AC_MSG_ERROR([Cannot find system libdw (required by --enable-dwarf-unwind)])])],
-    [UseLibdw=NO]
-)
+      [AC_MSG_ERROR([Cannot find system libdw (required by --enable-dwarf-unwind)])])
+fi
+
 AC_SUBST(UseLibdw)
 if test $UseLibdw = "YES" ; then
        USE_LIBDW=1