From f9ff7aa4f0f89c39d35c1e72f0beb99b69061d02 Mon Sep 17 00:00:00 2001 From: Romain Naour Date: Wed, 9 Apr 2014 23:55:07 +0200 Subject: [PATCH] Fix: disable liblttng-ust-dl if dlinfo is not available in C library According to uClibc commit [1], dlinfo is not available in recent uClibc (>0.9.33), but available in older version of uClibc (<=0.9.33) whith a different prototype than glibc. dlinfo used by liblttng-ust-dl require RTLD_DI_LINKMAP that is not available in uClibc. To be able to use LTTng UST with uClibc, we need to disable the Dynamic Linker Tracing functionality [2] if RTLD_DI_LINKMAP is not detected. [1] http://git.uclibc.org/uClibc/commit/?id=f3c9dc499c5c787ddd8c4320f2d44d2ae6e40c22 [2] http://lists.lttng.org/pipermail/lttng-dev/2014-February/022423.html Signed-off-by: Romain Naour Signed-off-by: Mathieu Desnoyers --- Makefile.am | 5 ++++- configure.ac | 10 ++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/Makefile.am b/Makefile.am index b79d2dd9..c907ff1b 100644 --- a/Makefile.am +++ b/Makefile.am @@ -4,11 +4,14 @@ SUBDIRS = . include snprintf libringbuffer liblttng-ust-comm \ liblttng-ust \ liblttng-ust-ctl \ liblttng-ust-fork \ - liblttng-ust-dl \ liblttng-ust-libc-wrapper \ liblttng-ust-cyg-profile \ tools +if HAVE_DLINFO +SUBDIRS += liblttng-ust-dl +endif + if BUILD_JNI_INTERFACE SUBDIRS += liblttng-ust-java liblttng-ust-jul endif diff --git a/configure.ac b/configure.ac index b04d4e35..894b2602 100644 --- a/configure.ac +++ b/configure.ac @@ -124,6 +124,16 @@ AM_CONDITIONAL([LTTNG_UST_BUILD_WITH_LIBC_DL], [test "x$have_libc_dl" = "xyes"]) AC_CHECK_LIB([pthread], [pthread_create]) +# Check for dlfcn.h +AC_CHECK_HEADER([dlfcn.h]) +AS_IF([test "x${ac_cv_header_dlfcn_h}" = "xyes"], + [AC_CHECK_DECLS([RTLD_DI_LINKMAP],,, + [#define _GNU_SOURCE /* Required on Linux to get GNU extensions */ + #include ]) + ], + [ac_cv_have_decl_RTLD_DI_LINKMAP="no"]) +AM_CONDITIONAL([HAVE_DLINFO], [test "x${ac_cv_have_decl_RTLD_DI_LINKMAP}" = "xyes"]) + # Checks for header files. #AC_CHECK_HEADERS([fcntl.h stdint.h stdlib.h string.h sys/socket.h sys/time.h unistd.h]) -- 2.34.1