From nobody Wed May 14 22:04:02 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1516873150433820.3177284855711; Thu, 25 Jan 2018 01:39:10 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 859395B2F9; Thu, 25 Jan 2018 09:39:09 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 52E6860BE3; Thu, 25 Jan 2018 09:39:09 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id E27425FBE5; Thu, 25 Jan 2018 09:39:08 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w0P9d62N003277 for ; Thu, 25 Jan 2018 04:39:06 -0500 Received: by smtp.corp.redhat.com (Postfix) id E46D4605DC; Thu, 25 Jan 2018 09:39:06 +0000 (UTC) Received: from t460.redhat.com (unknown [10.33.36.85]) by smtp.corp.redhat.com (Postfix) with ESMTP id B93C36031B; Thu, 25 Jan 2018 09:39:04 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Date: Thu, 25 Jan 2018 09:38:22 +0000 Message-Id: <20180125093825.5834-12-berrange@redhat.com> In-Reply-To: <20180125093825.5834-1-berrange@redhat.com> References: <20180125093825.5834-1-berrange@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 11/14] build: explicitly link all modules with libvirt.so X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.26]); Thu, 25 Jan 2018 09:39:10 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" The dlopened modules we currently build all use various symbols from libvirt.so, but don't actually link to it. They rely on the libvirtd daemon re-exporting the libvirt.so symbols. This means that at the time the modules are linked, they contain a huge number of undefined symbols. It also means that these undefined symbols are not versioned, so despite us providing a LIBVIRT_PRIVATE_XXXX version that intentionally changes on every release, the loadable modules could actually be loaded into any libvirtd regardless of version. This change explicitly links all modules against libvirt.so so that they don't rely on the re-export behave and can be fully resolved at build time. This will give us a stronger guarantee modules will actually be loadable at runtime and that we're using modules from the matched build. Signed-off-by: Daniel P. Berrange --- src/Makefile.am | 49 ++++++++++++++++++++++++++++--------------------- 1 file changed, 28 insertions(+), 21 deletions(-) diff --git a/src/Makefile.am b/src/Makefile.am index ec2b4f631c..492bbac22e 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1334,7 +1334,7 @@ noinst_LTLIBRARIES +=3D libvirt_driver_xen_impl.la libvirt_driver_xen_la_SOURCES =3D libvirt_driver_xen_la_LIBADD =3D libvirt_driver_xen_impl.la mod_LTLIBRARIES +=3D libvirt_driver_xen.la -libvirt_driver_xen_la_LIBADD +=3D ../gnulib/lib/libgnu.la +libvirt_driver_xen_la_LIBADD +=3D libvirt.la ../gnulib/lib/libgnu.la libvirt_driver_xen_la_LDFLAGS =3D -module -avoid-version $(AM_LDFLAGS) =20 libvirt_driver_xen_impl_la_CFLAGS =3D \ @@ -1380,7 +1380,7 @@ libvirt_driver_vbox_la_SOURCES =3D libvirt_driver_vbox_la_LIBADD =3D libvirt_driver_vbox_impl.la mod_LTLIBRARIES +=3D \ libvirt_driver_vbox.la -libvirt_driver_vbox_la_LIBADD +=3D ../gnulib/lib/libgnu.la +libvirt_driver_vbox_la_LIBADD +=3D libvirt.la ../gnulib/lib/libgnu.la libvirt_driver_vbox_la_LDFLAGS =3D -module -avoid-version $(AM_LDFLAGS) =20 libvirt_driver_vbox_impl_la_CFLAGS =3D \ @@ -1409,7 +1409,7 @@ noinst_LTLIBRARIES +=3D libvirt_driver_libxl_impl.la libvirt_driver_libxl_la_SOURCES =3D libvirt_driver_libxl_la_LIBADD =3D libvirt_driver_libxl_impl.la mod_LTLIBRARIES +=3D libvirt_driver_libxl.la -libvirt_driver_libxl_la_LIBADD +=3D ../gnulib/lib/libgnu.la +libvirt_driver_libxl_la_LIBADD +=3D libvirt.la ../gnulib/lib/libgnu.la libvirt_driver_libxl_la_LDFLAGS =3D -module -avoid-version $(AM_LDFLAGS) =20 libvirt_driver_libxl_impl_la_CFLAGS =3D \ @@ -1421,8 +1421,7 @@ libvirt_driver_libxl_impl_la_CFLAGS =3D \ $(AM_CFLAGS) libvirt_driver_libxl_impl_la_LDFLAGS =3D $(AM_LDFLAGS) libvirt_driver_libxl_impl_la_LIBADD =3D $(LIBXL_LIBS) \ - libvirt_xenconfig_libxl.la \ - libvirt_secret.la + libvirt_xenconfig_libxl.la libvirt_driver_libxl_impl_la_SOURCES =3D $(LIBXL_DRIVER_SOURCES) =20 conf_DATA +=3D libxl/libxl.conf @@ -1439,7 +1438,7 @@ noinst_LTLIBRARIES +=3D libvirt_driver_qemu_impl.la libvirt_driver_qemu_la_SOURCES =3D libvirt_driver_qemu_la_LIBADD =3D libvirt_driver_qemu_impl.la mod_LTLIBRARIES +=3D libvirt_driver_qemu.la -libvirt_driver_qemu_la_LIBADD +=3D ../gnulib/lib/libgnu.la +libvirt_driver_qemu_la_LIBADD +=3D libvirt.la ../gnulib/lib/libgnu.la libvirt_driver_qemu_la_LDFLAGS =3D -module -avoid-version $(AM_LDFLAGS) =20 libvirt_driver_qemu_impl_la_CFLAGS =3D \ @@ -1455,7 +1454,6 @@ libvirt_driver_qemu_impl_la_LIBADD =3D $(CAPNG_LIBS) \ $(GNUTLS_LIBS) \ $(LIBNL_LIBS) \ $(LIBXML_LIBS) \ - libvirt_secret.la \ $(NULL) libvirt_driver_qemu_impl_la_SOURCES =3D $(QEMU_DRIVER_SOURCES) =20 @@ -1475,7 +1473,7 @@ noinst_LTLIBRARIES +=3D libvirt_driver_lxc_impl.la libvirt_driver_lxc_la_SOURCES =3D libvirt_driver_lxc_la_LIBADD =3D libvirt_driver_lxc_impl.la mod_LTLIBRARIES +=3D libvirt_driver_lxc.la -libvirt_driver_lxc_la_LIBADD +=3D ../gnulib/lib/libgnu.la +libvirt_driver_lxc_la_LIBADD +=3D libvirt.la ../gnulib/lib/libgnu.la libvirt_driver_lxc_la_LDFLAGS =3D -module -avoid-version $(AM_LDFLAGS) =20 libvirt_driver_lxc_impl_la_CFLAGS =3D \ @@ -1512,7 +1510,7 @@ noinst_LTLIBRARIES +=3D libvirt_driver_uml_impl.la libvirt_driver_uml_la_SOURCES =3D libvirt_driver_uml_la_LIBADD =3D libvirt_driver_uml_impl.la mod_LTLIBRARIES +=3D libvirt_driver_uml.la -libvirt_driver_uml_la_LIBADD +=3D ../gnulib/lib/libgnu.la +libvirt_driver_uml_la_LIBADD +=3D libvirt.la ../gnulib/lib/libgnu.la libvirt_driver_uml_la_LDFLAGS =3D -module -avoid-version $(AM_LDFLAGS) =20 libvirt_driver_uml_impl_la_CFLAGS =3D \ @@ -1584,7 +1582,7 @@ noinst_LTLIBRARIES +=3D libvirt_driver_vz_impl.la libvirt_driver_vz_la_SOURCES =3D libvirt_driver_vz_la_LIBADD =3D libvirt_driver_vz_impl.la mod_LTLIBRARIES +=3D libvirt_driver_vz.la -libvirt_driver_vz_la_LIBADD +=3D ../gnulib/lib/libgnu.la +libvirt_driver_vz_la_LIBADD +=3D libvirt.la ../gnulib/lib/libgnu.la libvirt_driver_vz_la_LDFLAGS =3D -module -avoid-version $(AM_LDFLAGS) libvirt_driver_vz_impl_la_CFLAGS =3D \ -I$(srcdir)/conf \ @@ -1600,7 +1598,7 @@ noinst_LTLIBRARIES +=3D libvirt_driver_bhyve_impl.la libvirt_driver_bhyve_la_SOURCES =3D libvirt_driver_bhyve_la_LIBADD =3D libvirt_driver_bhyve_impl.la mod_LTLIBRARIES +=3D libvirt_driver_bhyve.la -libvirt_driver_bhyve_la_LIBADD +=3D ../gnulib/lib/libgnu.la +libvirt_driver_bhyve_la_LIBADD +=3D libvirt.la ../gnulib/lib/libgnu.la libvirt_driver_bhyve_la_LDFLAGS =3D -module -avoid-version $(AM_LDFLAGS) =20 libvirt_driver_bhyve_impl_la_CFLAGS =3D \ @@ -1623,7 +1621,7 @@ noinst_LTLIBRARIES +=3D libvirt_driver_network_impl.la libvirt_driver_network_la_SOURCES =3D libvirt_driver_network_la_LIBADD =3D libvirt_driver_network_impl.la mod_LTLIBRARIES +=3D libvirt_driver_network.la -libvirt_driver_network_la_LIBADD +=3D ../gnulib/lib/libgnu.la \ +libvirt_driver_network_la_LIBADD +=3D libvirt.la ../gnulib/lib/libgnu.la \ $(LIBNL_LIBS) \ $(DBUS_LIBS) \ $(NULL) @@ -1657,7 +1655,7 @@ if WITH_UDEV libvirt_driver_interface_la_CFLAGS +=3D $(UDEV_CFLAGS) libvirt_driver_interface_la_LIBADD +=3D $(UDEV_LIBS) endif WITH_UDEV -libvirt_driver_interface_la_LIBADD +=3D ../gnulib/lib/libgnu.la +libvirt_driver_interface_la_LIBADD +=3D libvirt.la ../gnulib/lib/libgnu.la libvirt_driver_interface_la_LDFLAGS +=3D -module -avoid-version libvirt_driver_interface_la_SOURCES =3D $(INTERFACE_DRIVER_SOURCES) endif WITH_INTERFACE @@ -1668,7 +1666,7 @@ libvirt_driver_secret_la_CFLAGS =3D \ -I$(srcdir)/access \ -I$(srcdir)/conf \ $(AM_CFLAGS) -libvirt_driver_secret_la_LIBADD =3D ../gnulib/lib/libgnu.la +libvirt_driver_secret_la_LIBADD =3D libvirt.la ../gnulib/lib/libgnu.la libvirt_driver_secret_la_LDFLAGS =3D -module -avoid-version $(AM_LDFLAGS) libvirt_driver_secret_la_SOURCES =3D $(SECRET_DRIVER_SOURCES) endif WITH_SECRETS @@ -1696,7 +1694,7 @@ noinst_LTLIBRARIES +=3D libvirt_driver_storage_impl.la libvirt_driver_storage_la_SOURCES =3D libvirt_driver_storage_la_LIBADD =3D libvirt_driver_storage_impl.la mod_LTLIBRARIES +=3D libvirt_driver_storage.la -libvirt_driver_storage_la_LIBADD +=3D ../gnulib/lib/libgnu.la +libvirt_driver_storage_la_LIBADD +=3D libvirt.la ../gnulib/lib/libgnu.la libvirt_driver_storage_la_LDFLAGS =3D -module -avoid-version $(AM_LDFLAGS) libvirt_driver_storage_impl_la_SOURCES +=3D $(STORAGE_DRIVER_SOURCES) =20 @@ -1709,6 +1707,7 @@ libvirt_storage_backend_fs_la_CFLAGS =3D \ storagebackend_LTLIBRARIES +=3D libvirt_storage_backend_fs.la libvirt_storage_backend_fs_la_LDFLAGS =3D \ -module -avoid-version $(AM_LDFLAGS) +libvirt_storage_backend_fs_la_LIBADD =3D libvirt.la ../gnulib/lib/libgnu.la endif WITH_STORAGE =20 if WITH_STORAGE_LVM @@ -1721,6 +1720,7 @@ libvirt_storage_backend_logical_la_CFLAGS =3D \ storagebackend_LTLIBRARIES +=3D libvirt_storage_backend_logical.la libvirt_storage_backend_logical_la_LDFLAGS =3D \ -module -avoid-version $(AM_LDFLAGS) +libvirt_storage_backend_logical_la_LIBADD =3D libvirt.la ../gnulib/lib/lib= gnu.la endif WITH_STORAGE_LVM =20 if WITH_STORAGE_ISCSI @@ -1734,6 +1734,7 @@ libvirt_storage_backend_iscsi_la_CFLAGS =3D \ storagebackend_LTLIBRARIES +=3D libvirt_storage_backend_iscsi.la libvirt_storage_backend_iscsi_la_LDFLAGS =3D \ -module -avoid-version $(AM_LDFLAGS) +libvirt_storage_backend_iscsi_la_LIBADD =3D libvirt.la ../gnulib/lib/libgn= u.la endif WITH_STORAGE_ISCSI =20 if WITH_STORAGE_SCSI @@ -1745,6 +1746,7 @@ libvirt_storage_backend_scsi_la_CFLAGS =3D \ storagebackend_LTLIBRARIES +=3D libvirt_storage_backend_scsi.la libvirt_storage_backend_scsi_la_LDFLAGS =3D \ -module -avoid-version $(AM_LDFLAGS) +libvirt_storage_backend_scsi_la_LIBADD =3D libvirt.la ../gnulib/lib/libgnu= .la endif WITH_STORAGE_SCSI =20 if WITH_STORAGE_MPATH @@ -1759,6 +1761,7 @@ libvirt_storage_backend_mpath_la_CFLAGS =3D \ storagebackend_LTLIBRARIES +=3D libvirt_storage_backend_mpath.la libvirt_storage_backend_mpath_la_LDFLAGS =3D \ -module -avoid-version $(AM_LDFLAGS) +libvirt_storage_backend_mpath_la_LIBADD +=3D libvirt.la ../gnulib/lib/libg= nu.la endif WITH_STORAGE_MPATH =20 if WITH_STORAGE_DISK @@ -1770,6 +1773,7 @@ libvirt_storage_backend_disk_la_CFLAGS =3D \ storagebackend_LTLIBRARIES +=3D libvirt_storage_backend_disk.la libvirt_storage_backend_disk_la_LDFLAGS =3D \ -module -avoid-version $(AM_LDFLAGS) +libvirt_storage_backend_disk_la_LIBADD =3D libvirt.la ../gnulib/lib/libgnu= .la endif WITH_STORAGE_DISK =20 if WITH_STORAGE_RBD @@ -1783,6 +1787,7 @@ libvirt_storage_backend_rbd_la_CFLAGS =3D \ storagebackend_LTLIBRARIES +=3D libvirt_storage_backend_rbd.la libvirt_storage_backend_rbd_la_LDFLAGS =3D \ -module -avoid-version $(AM_LDFLAGS) +libvirt_storage_backend_rbd_la_LIBADD +=3D libvirt.la ../gnulib/lib/libgnu= .la endif WITH_STORAGE_RBD =20 if WITH_STORAGE_SHEEPDOG @@ -1803,6 +1808,7 @@ noinst_LTLIBRARIES +=3D libvirt_storage_backend_sheep= dog_priv.la storagebackend_LTLIBRARIES +=3D libvirt_storage_backend_sheepdog.la libvirt_storage_backend_sheepdog_la_LDFLAGS =3D \ -module -avoid-version $(AM_LDFLAGS) +libvirt_storage_backend_sheepdog_la_LIBADD =3D libvirt.la ../gnulib/lib/li= bgnu.la endif WITH_STORAGE_SHEEPDOG =20 if WITH_STORAGE_GLUSTER @@ -1817,6 +1823,7 @@ libvirt_storage_backend_gluster_la_CFLAGS =3D \ storagebackend_LTLIBRARIES +=3D libvirt_storage_backend_gluster.la libvirt_storage_backend_gluster_la_LDFLAGS =3D \ -module -avoid-version $(AM_LDFLAGS) +libvirt_storage_backend_gluster_la_LIBADD +=3D libvirt.la ../gnulib/lib/li= bgnu.la endif WITH_STORAGE_GLUSTER =20 if WITH_STORAGE_ZFS @@ -1828,6 +1835,7 @@ libvirt_storage_backend_zfs_la_CFLAGS =3D \ storagebackend_LTLIBRARIES +=3D libvirt_storage_backend_zfs.la libvirt_storage_backend_zfs_la_LDFLAGS =3D \ -module -avoid-version $(AM_LDFLAGS) +libvirt_storage_backend_zfs_la_LIBADD =3D libvirt.la ../gnulib/lib/libgnu.= la endif WITH_STORAGE_ZFS =20 if WITH_STORAGE_VSTORAGE @@ -1840,6 +1848,7 @@ libvirt_storage_backend_vstorage_la_CFLAGS =3D \ storagebackend_LTLIBRARIES +=3D libvirt_storage_backend_vstorage.la libvirt_storage_backend_vstorage_la_LDFLAGS =3D \ -module -avoid-version $(AM_LDFLAGS) +libvirt_storage_backend_vstorage_la_LIBADD =3D libvirt.la ../gnulib/lib/li= bgnu.la endif WITH_STORAGE_VSTORAGE =20 if WITH_NODE_DEVICES @@ -1867,7 +1876,7 @@ libvirt_driver_nodedev_la_LIBADD +=3D $(UDEV_LIBS) $(= PCIACCESS_LIBS) endif WITH_UDEV endif WITH_LIBVIRTD =20 -libvirt_driver_nodedev_la_LIBADD +=3D ../gnulib/lib/libgnu.la +libvirt_driver_nodedev_la_LIBADD +=3D libvirt.la ../gnulib/lib/libgnu.la libvirt_driver_nodedev_la_LDFLAGS +=3D -module -avoid-version endif WITH_NODE_DEVICES =20 @@ -1890,7 +1899,7 @@ libvirt_driver_nwfilter_impl_la_LIBADD =3D \ $(LIBPCAP_LIBS) \ $(LIBNL_LIBS) \ $(DBUS_LIBS) -libvirt_driver_nwfilter_impl_la_LIBADD +=3D ../gnulib/lib/libgnu.la +libvirt_driver_nwfilter_impl_la_LIBADD +=3D libvirt.la ../gnulib/lib/libgn= u.la libvirt_driver_nwfilter_impl_la_LDFLAGS +=3D -module -avoid-version libvirt_driver_nwfilter_impl_la_SOURCES =3D $(NWFILTER_DRIVER_SOURCES) endif WITH_NWFILTER @@ -2568,8 +2577,7 @@ lockd_la_CFLAGS =3D -I$(srcdir)/conf \ $(XDR_CFLAGS) \ $(AM_CFLAGS) lockd_la_LDFLAGS =3D -module -avoid-version $(AM_LDFLAGS) -lockd_la_LIBADD =3D ../gnulib/lib/libgnu.la \ - $(NULL) +lockd_la_LIBADD =3D libvirt.la ../gnulib/lib/libgnu.la augeas_DATA +=3D locking/libvirt_lockd.aug if WITH_DTRACE_PROBES lockd_la_LIBADD +=3D libvirt_probes.lo @@ -2848,8 +2856,7 @@ lockdriver_LTLIBRARIES +=3D sanlock.la sanlock_la_SOURCES =3D $(LOCK_DRIVER_SANLOCK_SOURCES) sanlock_la_CFLAGS =3D -I$(srcdir)/conf $(AM_CFLAGS) sanlock_la_LDFLAGS =3D -module -avoid-version $(AM_LDFLAGS) -sanlock_la_LIBADD =3D -lsanlock_client \ - ../gnulib/lib/libgnu.la +sanlock_la_LIBADD =3D -lsanlock_client libvirt.la ../gnulib/lib/libgnu.la =20 augeas_DATA +=3D locking/libvirt_sanlock.aug augeastest_DATA +=3D test_libvirt_sanlock.aug --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list