[Buildroot] [PATCH v2 4/4] package/lttng-tools: fix static build

Samuel Martin s.martin49 at gmail.com
Tue Dec 8 23:11:14 UTC 2015


Some unit tests depend on objects from src/common/.
This patch makes sure to points to the location of the non-PIC object files.
Otherwise, in case of static only build, the PIC object are not built, so
the link will fail.

Signed-off-by: Samuel Martin <s.martin49 at gmail.com>
Acked-by: "Yann E. MORIN" <yann.morin.1998 at free.fr>

---
changes v1->v2:
- update ART tags
- fetched merged patch from upstream, and add the patch link
---
 ...0003-tests-unit-fix-object-files-location.patch | 94 ++++++++++++++++++++++
 1 file changed, 94 insertions(+)
 create mode 100644 package/lttng-tools/0003-tests-unit-fix-object-files-location.patch

diff --git a/package/lttng-tools/0003-tests-unit-fix-object-files-location.patch b/package/lttng-tools/0003-tests-unit-fix-object-files-location.patch
new file mode 100644
index 0000000..9bfee4b
--- /dev/null
+++ b/package/lttng-tools/0003-tests-unit-fix-object-files-location.patch
@@ -0,0 +1,94 @@
+Upstream status: Merged
+Fetched from: https://git.lttng.org/?p=lttng-tools.git;a=commit;h=3622d7c3931685fab8d1b2e5585a369b78cefd12
+From 3622d7c3931685fab8d1b2e5585a369b78cefd12 Mon Sep 17 00:00:00 2001
+From: Samuel Martin <s.martin49 at gmail.com>
+Date: Wed, 2 Dec 2015 00:36:45 +0100
+Subject: [PATCH] tests/unit: fix object files' location
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Referring to *.o files under a .libs/ directory is not recommended
+because this belongs to libtool's innards.
+
+Indeed, libtool decides to place the *.o files in an
+implementation-specific location:
+- PIC *.o files go into a .libs/ directory;
+- non-PIC *.o files are generated along side to their corresponding
+  source files.
+
+Using PIC objects to build executable is legit, thought it may
+introduce some minor overhead at runtime.
+
+However, hard-coding these PIC object files in the Makefile.am to build
+executables breaks the build in case of static only build.
+
+In this case, no PIC object files is generated, so the linker will not
+found some of the needed objects files.
+
+Changing these dependencies' path fixes the static build, keeping the
+shared one ok, though the non-PIC object files are now always built.
+
+Fixes #983.
+
+Fix tested on git master and v2.6 with no change needed.
+
+Signed-off-by: Samuel Martin <s.martin49 at gmail.com>
+Signed-off-by: Jérémie Galarneau <jeremie.galarneau at efficios.com>
+---
+ tests/unit/Makefile.am | 18 +++++++++---------
+ 1 file changed, 9 insertions(+), 9 deletions(-)
+
+diff --git a/tests/unit/Makefile.am b/tests/unit/Makefile.am
+index c0c9c45..7bfe65a 100644
+--- a/tests/unit/Makefile.am
++++ b/tests/unit/Makefile.am
+@@ -34,9 +34,9 @@ SESSIONS=$(top_builddir)/src/bin/lttng-sessiond/session.o	\
+ 	 $(top_builddir)/src/bin/lttng-sessiond/consumer.o \
+ 	 $(top_builddir)/src/bin/lttng-sessiond/utils.o \
+ 	 $(top_builddir)/src/bin/lttng-sessiond/snapshot.o \
+-	 $(top_builddir)/src/common/.libs/uri.o \
+-	 $(top_builddir)/src/common/.libs/utils.o \
+-	 $(top_builddir)/src/common/.libs/error.o \
++	 $(top_builddir)/src/common/uri.o \
++	 $(top_builddir)/src/common/utils.o \
++	 $(top_builddir)/src/common/error.o \
+ 	 $(top_builddir)/src/common/health/libhealth.la \
+ 	 $(top_builddir)/src/common/sessiond-comm/libsessiond-comm.la
+ 
+@@ -60,8 +60,8 @@ UST_DATA_TRACE=$(top_builddir)/src/bin/lttng-sessiond/trace-ust.o \
+ 		   $(top_builddir)/src/bin/lttng-sessiond/session.o \
+ 		   $(top_builddir)/src/bin/lttng-sessiond/snapshot.o \
+ 		   $(top_builddir)/src/bin/lttng-sessiond/agent.o \
+-		   $(top_builddir)/src/common/.libs/uri.o \
+-		   $(top_builddir)/src/common/.libs/utils.o \
++		   $(top_builddir)/src/common/uri.o \
++		   $(top_builddir)/src/common/utils.o \
+ 		   $(top_builddir)/src/common/health/libhealth.la \
+ 		   $(top_builddir)/src/common/sessiond-comm/libsessiond-comm.la
+ 
+@@ -75,8 +75,8 @@ endif
+ KERN_DATA_TRACE=$(top_builddir)/src/bin/lttng-sessiond/trace-kernel.o	\
+ 		$(top_builddir)/src/bin/lttng-sessiond/consumer.o	\
+ 		$(top_builddir)/src/bin/lttng-sessiond/utils.o \
+-		$(top_builddir)/src/common/.libs/uri.o \
+-		$(top_builddir)/src/common/.libs/utils.o \
++		$(top_builddir)/src/common/uri.o \
++		$(top_builddir)/src/common/utils.o \
+ 		$(top_builddir)/src/common/health/libhealth.la \
+ 		$(top_builddir)/src/common/sessiond-comm/libsessiond-comm.la
+ 
+@@ -86,8 +86,8 @@ test_kernel_data_LDADD = $(LIBTAP) $(LIBCOMMON) $(LIBRELAYD) $(LIBSESSIOND_COMM)
+ test_kernel_data_LDADD += $(KERN_DATA_TRACE)
+ 
+ # utils suffix for unit test
+-UTILS_SUFFIX=$(top_builddir)/src/common/.libs/utils.o \
+-		$(top_builddir)/src/common/.libs/runas.o
++UTILS_SUFFIX=$(top_builddir)/src/common/utils.o \
++		$(top_builddir)/src/common/runas.o
+ 
+ # parse_size_suffix unit test
+ test_utils_parse_size_suffix_SOURCES = test_utils_parse_size_suffix.c
+-- 
+2.6.3
+
-- 
2.6.3




More information about the buildroot mailing list