+++ /dev/null
-From bc1d8ca01415710d40224de312c7ecf6f4223301 Mon Sep 17 00:00:00 2001
-From: Philippe Proulx <eeppeliteloop@gmail.com>
-Date: Mon, 6 Nov 2017 18:46:41 -0500
-Subject: [PATCH] Fix: detect dlmopen() and disable corresponding tests if not
- available
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-musl and uClibc-ng are known not to support dlmopen(). LTTng-UST has
-this dlmopen() detection.
-
-Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
-[Philippe: backport from upstream commit bc1d8ca0
- edited to remove .gitignore part]
-Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
----
- .gitignore | 1 +
- configure.ac | 25 ++++++++++++++++++++++
- tests/regression/ust/ust-dl/prog.c | 17 +++++++++++++--
- tests/regression/ust/ust-dl/test_ust-dl | 32 ----------------------------
- tests/regression/ust/ust-dl/test_ust-dl.in | 34 ++++++++++++++++++++++++++++++
- tests/regression/ust/ust-dl/test_ust-dl.py | 9 +++++++-
- tests/utils/test_utils.py | 3 +++
- 7 files changed, 86 insertions(+), 35 deletions(-)
- delete mode 100755 tests/regression/ust/ust-dl/test_ust-dl
- create mode 100644 tests/regression/ust/ust-dl/test_ust-dl.in
-
-diff --git a/configure.ac b/configure.ac
-index 016c56ec..b6ea39c5 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -196,6 +196,30 @@ AC_CHECK_FUNCS([ \
- # add -lrt to LIBS
- AC_CHECK_LIB([rt], [clock_gettime, timer_create, timer_settime, timer_delete])
-
-+# Checks for dl.
-+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])
-+ HAVE_DLMOPEN=1
-+], [
-+ HAVE_DLMOPEN=0
-+])
-+AC_SUBST(HAVE_DLMOPEN)
-+
- # Babeltrace viewer check
- AC_ARG_WITH([babeltrace-bin],
- AS_HELP_STRING([--with-babeltrace-bin],
-@@ -1100,6 +1124,7 @@ AC_CONFIG_FILES([
- AC_CONFIG_FILES([tests/regression/ust/python-logging/test_python_logging],[chmod +x tests/regression/ust/python-logging/test_python_logging])
- # Inject LTTNG_TOOLS_BUILD_WITH_LIBPFM variable in test script.
- AC_CONFIG_FILES([tests/perf/test_perf_raw],[chmod +x tests/perf/test_perf_raw])
-+AC_CONFIG_FILES([tests/regression/ust/ust-dl/test_ust-dl],[chmod +x tests/regression/ust/ust-dl/test_ust-dl])
-
- AC_OUTPUT
-
-diff --git a/tests/regression/ust/ust-dl/prog.c b/tests/regression/ust/ust-dl/prog.c
-index e8e4b264..669792d9 100644
---- a/tests/regression/ust/ust-dl/prog.c
-+++ b/tests/regression/ust/ust-dl/prog.c
-@@ -13,7 +13,12 @@
- */
- int main(int argc, char **argv)
- {
-- void *h0, *h1, *h2, *h3, *h4;
-+ void *h0, *h2, *h3, *h4;
-+
-+#ifdef HAVE_DLMOPEN
-+ void *h1;
-+#endif
-+
- char *error;
- int (*foo)(void);
-
-@@ -21,10 +26,14 @@ int main(int argc, char **argv)
- if (!h0) {
- goto get_error;
- }
-+
-+#ifdef HAVE_DLMOPEN
- h1 = dlmopen(LM_ID_BASE, "libfoo.so", RTLD_LAZY);
- if (!h1) {
- goto get_error;
- }
-+#endif
-+
- h2 = dlopen("libzzz.so", RTLD_LAZY);
- if (!h2) {
- goto get_error;
-@@ -38,7 +47,7 @@ int main(int argc, char **argv)
- goto get_error;
- }
-
-- foo = dlsym(h1, "foo");
-+ foo = dlsym(h3, "foo");
- error = dlerror();
- if (error != NULL) {
- goto error;
-@@ -49,9 +58,13 @@ int main(int argc, char **argv)
- if (dlclose(h0)) {
- goto get_error;
- }
-+
-+#ifdef HAVE_DLMOPEN
- if (dlclose(h1)) {
- goto get_error;
- }
-+#endif
-+
- if (dlclose(h2)) {
- goto get_error;
- }
-diff --git a/tests/regression/ust/ust-dl/test_ust-dl b/tests/regression/ust/ust-dl/test_ust-dl
-deleted file mode 100755
-index 1f2934db..00000000
---- a/tests/regression/ust/ust-dl/test_ust-dl
-+++ /dev/null
-@@ -1,32 +0,0 @@
--#!/bin/bash
--#
--# Copyright (C) - 2013 Jérémie Galarneau <jeremie.galarneau@efficios.com>
--#
--# This program is free software; you can redistribute it and/or modify it
--# under the terms of the GNU General Public License, version 2 only, as
--# published by the Free Software Foundation.
--#
--# This program is distributed in the hope that it will be useful, but WITHOUT
--# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
--# more details.
--#
--# You should have received a copy of the GNU General Public License along with
--# this program; if not, write to the Free Software Foundation, Inc., 51
--# Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
--
--CURDIR=$(dirname $0)
--TESTDIR=${CURDIR}/../../..
--
--source $TESTDIR/utils/utils.sh
--
--if [ ! -x "$CURDIR/.libs/libfoo.so" ]; then
-- diag "No shared object generated. Skipping all tests."
-- exit 0
--fi
--
--start_lttng_sessiond_notap
--
--python3 ${CURDIR}/test_ust-dl.py
--
--stop_lttng_sessiond_notap
-diff --git a/tests/regression/ust/ust-dl/test_ust-dl.in b/tests/regression/ust/ust-dl/test_ust-dl.in
-new file mode 100644
-index 00000000..61d00d21
---- /dev/null
-+++ b/tests/regression/ust/ust-dl/test_ust-dl.in
-@@ -0,0 +1,34 @@
-+#!/bin/bash
-+#
-+# Copyright (C) - 2013 Jérémie Galarneau <jeremie.galarneau@efficios.com>
-+#
-+# This program is free software; you can redistribute it and/or modify it
-+# under the terms of the GNU General Public License, version 2 only, as
-+# published by the Free Software Foundation.
-+#
-+# This program is distributed in the hope that it will be useful, but WITHOUT
-+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
-+# more details.
-+#
-+# You should have received a copy of the GNU General Public License along with
-+# this program; if not, write to the Free Software Foundation, Inc., 51
-+# Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-+
-+CURDIR=$(dirname $0)
-+TESTDIR=${CURDIR}/../../..
-+
-+source $TESTDIR/utils/utils.sh
-+
-+if [ ! -x "$CURDIR/.libs/libfoo.so" ]; then
-+ diag "No shared object generated. Skipping all tests."
-+ exit 0
-+fi
-+
-+export LTTNG_TOOLS_HAVE_DLMOPEN=@HAVE_DLMOPEN@
-+
-+start_lttng_sessiond_notap
-+
-+python3 ${CURDIR}/test_ust-dl.py
-+
-+stop_lttng_sessiond_notap
-diff --git a/tests/regression/ust/ust-dl/test_ust-dl.py b/tests/regression/ust/ust-dl/test_ust-dl.py
-index 81972a7d..72459840 100644
---- a/tests/regression/ust/ust-dl/test_ust-dl.py
-+++ b/tests/regression/ust/ust-dl/test_ust-dl.py
-@@ -31,6 +31,9 @@ sys.path.append(test_utils_path)
- from test_utils import *
-
-
-+have_dlmopen = (os.environ.get('LTTNG_TOOLS_HAVE_DLMOPEN') == '1')
-+
-+
- NR_TESTS = 14
- current_test = 1
- print("1..{0}".format(NR_TESTS))
-@@ -113,7 +116,11 @@ current_test += 1
- print_test_result(dlopen_event_found > 0, current_test, "lttng_ust_dl:dlopen event found in resulting trace")
- current_test += 1
-
--print_test_result(dlmopen_event_found > 0, current_test, "lttng_ust_dl:dlmopen event found in resulting trace")
-+if have_dlmopen:
-+ print_test_result(dlmopen_event_found > 0, current_test, "lttng_ust_dl:dlmopen event found in resulting trace")
-+else:
-+ skip_test(current_test, 'dlmopen() is not available')
-+
- current_test += 1
-
- print_test_result(build_id_event_found > 0, current_test, "lttng_ust_dl:build_id event found in resulting trace")
-diff --git a/tests/utils/test_utils.py b/tests/utils/test_utils.py
-index 4b38630c..02e632a2 100644
---- a/tests/utils/test_utils.py
-+++ b/tests/utils/test_utils.py
-@@ -62,6 +62,9 @@ def print_test_result(result, number, description):
- result_string += " {0} - {1}".format(number, description)
- print(result_string)
-
-+def skip_test(number, description):
-+ print('ok {} # skip {}'.format(number, description))
-+
- def enable_ust_tracepoint_event(session_info, event_name):
- event = Event()
- event.name = event_name
---
-2.15.0
-