]> granicus.if.org Git - zfs/commitdiff
Generate libraries with correct DT_NEEDED entries
authorRichard Yao <ryao@gentoo.org>
Thu, 26 Sep 2013 17:42:41 +0000 (13:42 -0400)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Thu, 10 Oct 2013 23:56:51 +0000 (16:56 -0700)
Libraries that depend on other libraries should list them in ELF's
DT_NEEDED field so that programs linking to them do not need to specify
those libraries unless they depend on them as well. This is not the case
in the current code and the consequence is that anything that needs a
library must know its dependencies. This is fragile and caused GRUB2's
configure script to break when a dependency was added on libblkid in
libzfs.

This resolves that problem by using LIBADD/LDADD to specify libraries in
Makefile.am instead of LDFLAGS. This ensures that proper DT_NEEDED
entries are generated and prevents GRUB2's configure script from
breaking in the presence of a libblkid dependency. This also removes
unneeded dependencies from various files.

Signed-off-by: Richard Yao <ryao@gentoo.org>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Issue #1751

13 files changed:
cmd/mount_zfs/Makefile.am
cmd/zdb/Makefile.am
cmd/zfs/Makefile.am
cmd/zhack/Makefile.am
cmd/zinject/Makefile.am
cmd/zpool/Makefile.am
cmd/zstreamdump/Makefile.am
cmd/ztest/Makefile.am
lib/libefi/Makefile.am
lib/libspl/Makefile.am
lib/libzfs/Makefile.am
lib/libzfs_core/Makefile.am
lib/libzpool/Makefile.am

index 7abcc30c1000b0db1e3785ba7e73988637254ae1..74524f031a8552e5fb750307656f86c3b7c4d466 100644 (file)
@@ -20,5 +20,4 @@ mount_zfs_LDADD = \
        $(top_builddir)/lib/libzpool/libzpool.la \
        $(top_builddir)/lib/libzfs/libzfs.la
 
-mount_zfs_LDFLAGS = \
-       -pthread -lm $(ZLIB) -lrt -ldl $(LIBUUID) $(LIBBLKID) $(LIBSELINUX)
+mount_zfs_LDADD += $(LIBSELINUX)
index f82f1a3b5535c44b8a40af78b18a3aebded2f297..49dbf50bcdeb5edb6566a93589c0ed1ce8c0a651 100644 (file)
@@ -16,4 +16,4 @@ zdb_LDADD = \
        $(top_builddir)/lib/libzpool/libzpool.la \
        $(top_builddir)/lib/libzfs/libzfs.la
 
-zdb_LDFLAGS = -pthread -lm $(ZLIB) -lrt -ldl $(LIBUUID) $(LIBBLKID)
+zdb_LDADD += $(ZLIB)
index c1499a2a8971ff543855dcd2b6c5b470b8b6c13b..08580c92de5252c1f5f5aded33cd79ad4dfe6406 100644 (file)
@@ -19,4 +19,5 @@ zfs_LDADD = \
        $(top_builddir)/lib/libzfs/libzfs.la \
        $(top_builddir)/lib/libzfs_core/libzfs_core.la
 
-zfs_LDFLAGS = -pthread -lm $(ZLIB) -lrt -ldl $(LIBUUID) $(LIBBLKID)
+zfs_LDADD += $(ZLIB)
+zfs_LDFLAGS = -pthread
index 47da2453e88d53fbce48381e589895b356bb0cfa..944e6425743e7c3f82e1f7a42f7bb29863f3dc3c 100644 (file)
@@ -15,4 +15,4 @@ zhack_LDADD = \
        $(top_builddir)/lib/libzpool/libzpool.la \
        $(top_builddir)/lib/libzfs/libzfs.la
 
-zhack_LDFLAGS = -pthread -lm $(ZLIB) -lrt -ldl $(LIBUUID) $(LIBBLKID)
+zhack_LDADD += $(ZLIB)
index d1d32d57fabb48cbe6c14ffe615e18c100223253..f539569111f1602f86317d22e950cd21a78dc125 100644 (file)
@@ -16,5 +16,3 @@ zinject_LDADD = \
        $(top_builddir)/lib/libuutil/libuutil.la \
        $(top_builddir)/lib/libzpool/libzpool.la \
        $(top_builddir)/lib/libzfs/libzfs.la
-
-zinject_LDFLAGS = -pthread -lm $(ZLIB) -lrt -ldl $(LIBUUID) $(LIBBLKID)
index 2ce8efc5c453b8ea52c8ec1530b42be4cbddd70d..e7d31c60c9f5cef0c6764aabbd63b72ccef8c986 100644 (file)
@@ -18,5 +18,3 @@ zpool_LDADD = \
        $(top_builddir)/lib/libuutil/libuutil.la \
        $(top_builddir)/lib/libzpool/libzpool.la \
        $(top_builddir)/lib/libzfs/libzfs.la
-
-zpool_LDFLAGS = -pthread -lm $(ZLIB) -lrt -ldl $(LIBUUID) $(LIBBLKID)
index 3d7ec4124c529d7d80cfbd140989d6ae57405176..175874ffac237c633918339eaa1ea153d9718021 100644 (file)
@@ -15,4 +15,4 @@ zstreamdump_LDADD = \
        $(top_builddir)/lib/libzpool/libzpool.la \
        $(top_builddir)/lib/libzfs/libzfs.la
 
-zstreamdump_LDFLAGS = -pthread -lm $(ZLIB) -lrt -ldl $(LIBUUID) $(LIBBLKID)
+zstreamdump_LDADD += $(ZLIB)
index 39892013a0459d2f90f74932b8823a8f2d48ec5c..403b858c479aff72c474d2512428c944aa57d2ce 100644 (file)
@@ -17,4 +17,4 @@ ztest_LDADD = \
        $(top_builddir)/lib/libzpool/libzpool.la \
        $(top_builddir)/lib/libzfs/libzfs.la
 
-ztest_LDFLAGS = -pthread -lm $(ZLIB) -lrt -ldl $(LIBUUID) $(LIBBLKID)
+ztest_LDADD += -lm -ldl
index aa57dba9ac18f236f1be5f05d13c8dbac14565f7..55f7b11966777c16c73a024365706be8438cbf57 100644 (file)
@@ -10,3 +10,5 @@ noinst_LTLIBRARIES = libefi.la
 
 libefi_la_SOURCES = \
        $(top_srcdir)/lib/libefi/rdwr_efi.c
+
+libefi_la_LIBADD = $(LIBUUID) $(ZLIB)
index 089056c567f0d7ade497550f234a45e565b51fca..dbf85c40fe39a3cd3a695f5aac1d4043769c44cd 100644 (file)
@@ -30,4 +30,4 @@ libspl_la_SOURCES = \
        $(top_srcdir)/lib/libspl/include/sys/list.h \
        $(top_srcdir)/lib/libspl/include/sys/list_impl.h
 
-libspl_la_LDFLAGS = -lrt
+libspl_la_LIBADD = -lrt
index 14abd7ab3cb8595a5ca531e1fb16d75ba869ff5e..75f1775a2f143af8cb0fc478d24fec33f1a63bed 100644 (file)
@@ -27,4 +27,5 @@ libzfs_la_LIBADD = \
        $(top_builddir)/lib/libnvpair/libnvpair.la \
        $(top_builddir)/lib/libzpool/libzpool.la
 
-libzfs_la_LDFLAGS = -lm -ldl -version-info 1:1:0 $(LIBSELINUX)
+libzfs_la_LIBADD += -lm -ldl $(LIBBLKID)
+libzfs_la_LDFLAGS = -version-info 1:1:0
index 180292de1407f39805adab73814798d4305348ef..d8e2061ac3d0302e4f2506e77d47ddcec38ffe47 100644 (file)
@@ -12,4 +12,4 @@ libzfs_core_la_SOURCES = \
 libzfs_core_la_LIBADD = \
        $(top_builddir)/lib/libnvpair/libnvpair.la
 
-libzfs_core_la_LDFLAGS = -pthread -version-info 1:1:0
+libzfs_core_la_LDFLAGS = -version-info 1:1:0
index 637dc15da8939fe62be75f59dc6343ccfd8fb3f9..32221694a632237bf49fdff568986d1af3785b4f 100644 (file)
@@ -99,7 +99,8 @@ libzpool_la_LIBADD = \
        $(top_builddir)/lib/libuutil/libuutil.la \
        $(top_builddir)/lib/libnvpair/libnvpair.la
 
-libzpool_la_LDFLAGS = -pthread -version-info 1:1:0
+libzpool_la_LIBADD += $(ZLIB)
+libzpool_la_LDFLAGS = -version-info 1:1:0
 
 EXTRA_DIST = \
        $(top_srcdir)/module/zfs/vdev_disk.c \