From cd9f2eeba85f93a49dc9b8dbaa415eb5dd77bedb Mon Sep 17 00:00:00 2001 From: Jonathan Rajotte Date: Tue, 21 Feb 2017 16:00:27 -0500 Subject: [PATCH] Validate the presence of dlmopen at configure time Signed-off-by: Michael Jeanson Signed-off-by: Jonathan Rajotte Signed-off-by: Mathieu Desnoyers --- configure.ac | 8 ++++++++ liblttng-ust-dl/lttng-ust-dl.c | 8 ++++++++ liblttng-ust-dl/ust_dl.h | 2 ++ 3 files changed, 18 insertions(+) diff --git a/configure.ac b/configure.ac index ac0d4f5f..32d69d51 100644 --- a/configure.ac +++ b/configure.ac @@ -125,15 +125,23 @@ AS_IF([test "x${ax_cv_sys_weak_alias}" = "xno"], [ # Checks for libraries. AC_CHECK_LIB([dl], [dlopen], [ have_libdl=yes + libdl_name=dl ], [ #libdl not found, check for dlopen in libc. AC_CHECK_LIB([c], [dlopen], [ have_libc_dl=yes + libdl_name=c ], [ AC_MSG_ERROR([Cannot find dlopen in libdl nor libc. Use [LDFLAGS]=-Ldir to specify their location.]) ]) ]) +# Check if libdl has dlmopen support. +AH_TEMPLATE([HAVE_DLMOPEN], ["Define to 1 if dlmopen is available."]) +AC_CHECK_LIB([$libdl_name], [dlmopen], + [AC_DEFINE([HAVE_DLMOPEN], [1])] +) + AM_CONDITIONAL([LTTNG_UST_BUILD_WITH_LIBDL], [test "x$have_libdl" = "xyes"]) AM_CONDITIONAL([LTTNG_UST_BUILD_WITH_LIBC_DL], [test "x$have_libc_dl" = "xyes"]) diff --git a/liblttng-ust-dl/lttng-ust-dl.c b/liblttng-ust-dl/lttng-ust-dl.c index b0737b65..ce2ae0e7 100644 --- a/liblttng-ust-dl/lttng-ust-dl.c +++ b/liblttng-ust-dl/lttng-ust-dl.c @@ -38,8 +38,10 @@ #include "ust_dl.h" static void *(*__lttng_ust_plibc_dlopen)(const char *filename, int flags); +#ifdef HAVE_DLMOPEN static void *(*__lttng_ust_plibc_dlmopen)(Lmid_t nsid, const char *filename, int flags); +#endif static int (*__lttng_ust_plibc_dlclose)(void *handle); static @@ -55,6 +57,7 @@ void *_lttng_ust_dl_libc_dlopen(const char *filename, int flags) return __lttng_ust_plibc_dlopen(filename, flags); } +#ifdef HAVE_DLMOPEN static void *_lttng_ust_dl_libc_dlmopen(Lmid_t nsid, const char *filename, int flags) @@ -68,6 +71,7 @@ void *_lttng_ust_dl_libc_dlmopen(Lmid_t nsid, const char *filename, } return __lttng_ust_plibc_dlmopen(nsid, filename, flags); } +#endif static int _lttng_ust_dl_libc_dlclose(void *handle) @@ -143,6 +147,7 @@ end: return; } +#ifdef HAVE_DLMOPEN static void lttng_ust_dl_dlmopen(void *so_base, Lmid_t nsid, const char *so_name, int flags, void *ip) @@ -203,6 +208,7 @@ end: lttng_ust_elf_destroy(elf); return; } +#endif void *dlopen(const char *filename, int flags) { @@ -223,6 +229,7 @@ void *dlopen(const char *filename, int flags) return handle; } +#ifdef HAVE_DLMOPEN void *dlmopen(Lmid_t nsid, const char *filename, int flags) { void *handle; @@ -243,6 +250,7 @@ void *dlmopen(Lmid_t nsid, const char *filename, int flags) return handle; } +#endif int dlclose(void *handle) { diff --git a/liblttng-ust-dl/ust_dl.h b/liblttng-ust-dl/ust_dl.h index b8cfe822..afa8e842 100644 --- a/liblttng-ust-dl/ust_dl.h +++ b/liblttng-ust-dl/ust_dl.h @@ -51,6 +51,7 @@ TRACEPOINT_EVENT(lttng_ust_dl, dlopen, ) ) +#ifdef HAVE_DLMOPEN TRACEPOINT_EVENT(lttng_ust_dl, dlmopen, TP_ARGS(void *, ip, void *, baddr, Lmid_t, nsid, const char *, path, int, flags, @@ -66,6 +67,7 @@ TRACEPOINT_EVENT(lttng_ust_dl, dlmopen, ctf_integer(uint8_t, has_debug_link, has_debug_link) ) ) +#endif TRACEPOINT_EVENT(lttng_ust_dl, build_id, TP_ARGS( -- 2.34.1