[lttng-dev] [PATCH lttng-ust] Validate the presence of dlmopen at configure time

Mathieu Desnoyers mathieu.desnoyers at efficios.com
Tue Feb 21 21:27:27 UTC 2017


merged into master and stable-2.9, thanks!

Mathieu

----- On Feb 21, 2017, at 4:00 PM, Jonathan Rajotte jonathan.rajotte-julien at efficios.com wrote:

> Signed-off-by: Michael Jeanson <mjeanson at efficios.com>
> Signed-off-by: Jonathan Rajotte <jonathan.rajotte-julien at efficios.com>
> ---
> 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 450b43b..023cfd4 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 b0737b6..ce2ae0e 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 b8cfe82..afa8e84 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.7.4

-- 
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com


More information about the lttng-dev mailing list