- [
- AC_MSG_CHECKING([for dwfl_linux_proc_attach in libdw])
- saved_LDFLAGS="$LDFLAGS"
- saved_LIBS="$LIBS"
- LDFLAGS="$LDFLAGS $libdw_LDFLAGS"
- LIBS="$LIBS $libdw_LIBS"
-
- AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <elfutils/libdwfl.h>]],
- [[return dwfl_linux_proc_attach(0, 0, 0)]]
- )
- ],
- [AC_MSG_RESULT([yes])],
- [AC_MSG_RESULT([no])
- AS_IF([test "x$with_libdw" = xyes],
- [AC_MSG_FAILURE([failed to find dwfl_linux_proc_attach in libdw])],
- )
- have_libdw=
- ]
- )
-
- LIBS="$saved_LIBS"
- LDFLAGS="$saved_LDFLAGS"
+ [AC_CHECK_LIB([dw], [dwfl_linux_proc_attach],
+ [libdw_LIBS="-ldw $libdw_LIBS"
+ AC_CACHE_CHECK([for elfutils version],
+ [st_cv_ELFUTILS_VERSION],
+ [[st_cv_ELFUTILS_VERSION="$(echo _ELFUTILS_VERSION |
+ $CPP $CPPFLAGS -P -imacros elfutils/version.h - |
+ grep '^[0-9]')"
+ test -n "$st_cv_ELFUTILS_VERSION" ||
+ st_cv_ELFUTILS_VERSION=0
+ ]]
+ )
+ AS_IF([test "$st_cv_ELFUTILS_VERSION" -ge 164],
+ [have_libdw=yes],
+ [AS_IF([test "x$with_libdw" = xyes],
+ [AC_MSG_ERROR([elfutils version >= 164 is required for stack tracing support])],
+ [AC_MSG_WARN([elfutils version >= 164 is required for stack tracing support])]
+ )
+ ]
+ )
+ ],
+ [AS_IF([test "x$with_libdw" = xyes],
+ [AC_MSG_FAILURE([failed to find dwfl_linux_proc_attach in libdw])],
+ )
+ ],
+ [$libdw_LDFLAGS $libdw_LIBS]
+ )