From nobody Wed Dec 17 06:08:43 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; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1517844546088742.1209280992259; Mon, 5 Feb 2018 07:29:06 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 0F259796FD; Mon, 5 Feb 2018 15:29:05 +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 DBFC65D6A2; Mon, 5 Feb 2018 15:29:04 +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 A33F14A474; Mon, 5 Feb 2018 15:29:04 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w15FSrvD002937 for ; Mon, 5 Feb 2018 10:28:53 -0500 Received: by smtp.corp.redhat.com (Postfix) id 795A45D6B4; Mon, 5 Feb 2018 15:28:53 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.42.22.189]) by smtp.corp.redhat.com (Postfix) with ESMTP id C5A005D6A3; Mon, 5 Feb 2018 15:28:52 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Date: Mon, 5 Feb 2018 15:28:26 +0000 Message-Id: <20180205152829.12577-13-berrange@redhat.com> In-Reply-To: <20180205152829.12577-1-berrange@redhat.com> References: <20180205152829.12577-1-berrange@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-loop: libvir-list@redhat.com Cc: Peter Krempa Subject: [libvirt] [PATCH v3 12/15] 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.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Mon, 05 Feb 2018 15:29:05 +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 7f9961fe55..6f07243b62 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1340,7 +1340,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 \ @@ -1386,7 +1386,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 \ @@ -1415,7 +1415,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 \ @@ -1427,8 +1427,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 @@ -1445,7 +1444,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 \ @@ -1461,7 +1460,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 @@ -1481,7 +1479,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 \ @@ -1518,7 +1516,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 \ @@ -1590,7 +1588,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 \ @@ -1606,7 +1604,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 \ @@ -1629,7 +1627,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) @@ -1663,7 +1661,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 @@ -1674,7 +1672,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 @@ -1702,7 +1700,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 @@ -1715,6 +1713,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 @@ -1727,6 +1726,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 @@ -1740,6 +1740,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 @@ -1751,6 +1752,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 @@ -1765,6 +1767,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 @@ -1776,6 +1779,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 @@ -1789,6 +1793,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 @@ -1809,6 +1814,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 @@ -1823,6 +1829,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 @@ -1834,6 +1841,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 @@ -1846,6 +1854,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 @@ -1873,7 +1882,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 @@ -1896,7 +1905,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 @@ -2596,8 +2605,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 @@ -2878,8 +2886,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