summaryrefslogtreecommitdiffstats
path: root/package/lttng-libust/0003-Validate-the-presence-of-dlmopen-at-configure-time.patch
blob: 699f1e0327fa85ab69e5261579df1421cda4baf6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
From 42330adcefcd1830dad89e2a960c93d8dd1da125 Mon Sep 17 00:00:00 2001
From: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com>
Date: Tue, 21 Feb 2017 16:00:27 -0500
Subject: [PATCH] Validate the presence of dlmopen at configure time

Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
[Backport from upstream commit 42330adcefcd1830dad89e2a960c93d8dd1da125.]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.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

OpenPOWER on IntegriCloud