diff options
author | Kaleb S. KEITHLEY <kkeithle@redhat.com> | 2015-07-31 14:11:15 -0400 |
---|---|---|
committer | Niels de Vos <ndevos@redhat.com> | 2015-09-24 07:37:42 -0700 |
commit | 1d82db506d1cd5b20d14820d89033de2e4a14210 (patch) | |
tree | b4bc67f988b054d5e738884a91ce18c48244161a /xlators/cluster | |
parent | 84367f0c9106f5a604ac05a02898d4521fa5c832 (diff) |
build: export minimum symbols from xlators for correct resolution
We've been lucky that we haven't had any symbol collisions until now.
Now we have a collision between the snapview-client's svc_lookup() and
libntirpc's svc_lookup() with nfs-ganesha's FSAL_GLUSTER and libgfapi.
As a short term solution all the snapview-client's FOP methods were
changed to static scope. See http://review.gluster.org/11805. This
works in snapview-client because all the FOP methods are defined in
a single source file. This solution doesn't work for other xlators
with FOP methods defined in multiple source files.
To address this we link with libtool's '-export-symbols $symbol-file'
(a wrapper around `ld --version-script ...` --- on linux anyway) and
only export the minimum required symbols from the xlator sharedlib.
N.B. the libtool man page says that the symbol file should be named
foo.sym, thus the rename of *.exports to *.sym. While foo.exports
worked, we will follow the documentation.
Signed-off-by: Kaleb S. KEITHLEY <kkeithle@redhat.com>
BUG: 1248669
Change-Id: I1de68b3e3be58ae690d8bfb2168bfc019983627c
Reviewed-on: http://review.gluster.org/11814
Tested-by: NetBSD Build System <jenkins@build.gluster.org>
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: soumya k <skoduri@redhat.com>
Reviewed-by: Niels de Vos <ndevos@redhat.com>
Diffstat (limited to 'xlators/cluster')
-rw-r--r-- | xlators/cluster/afr/src/Makefile.am | 4 | ||||
-rw-r--r-- | xlators/cluster/dht/src/Makefile.am | 11 | ||||
-rw-r--r-- | xlators/cluster/dht/src/dht.sym | 8 | ||||
-rw-r--r-- | xlators/cluster/dht/src/nufa.sym | 8 | ||||
-rw-r--r-- | xlators/cluster/dht/src/switch.sym | 8 | ||||
-rw-r--r-- | xlators/cluster/dht/src/tier.sym | 9 | ||||
-rw-r--r-- | xlators/cluster/ec/src/Makefile.am | 2 | ||||
-rw-r--r-- | xlators/cluster/ha/src/Makefile.am | 3 | ||||
-rw-r--r-- | xlators/cluster/map/src/Makefile.am | 3 | ||||
-rw-r--r-- | xlators/cluster/stripe/src/Makefile.am | 3 |
10 files changed, 48 insertions, 11 deletions
diff --git a/xlators/cluster/afr/src/Makefile.am b/xlators/cluster/afr/src/Makefile.am index ac66bf3bb11..27384d1c317 100644 --- a/xlators/cluster/afr/src/Makefile.am +++ b/xlators/cluster/afr/src/Makefile.am @@ -10,11 +10,11 @@ AFR_SELFHEAL_SOURCES = afr-self-heal-common.c afr-self-heal-data.c \ afr-self-heal-entry.c afr-self-heal-metadata.c afr-self-heald.c \ afr-self-heal-name.c -afr_la_LDFLAGS = -module -avoid-version +afr_la_LDFLAGS = $(GF_XLATOR_DEFAULT_LDFLAGS) afr_la_SOURCES = $(afr_common_source) $(AFR_SELFHEAL_SOURCES) afr.c afr_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la -pump_la_LDFLAGS = -module -avoid-version +pump_la_LDFLAGS = $(GF_XLATOR_DEFAULT_LDFLAGS) pump_la_SOURCES = $(afr_common_source) $(AFR_SELFHEAL_SOURCES) pump.c pump_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la diff --git a/xlators/cluster/dht/src/Makefile.am b/xlators/cluster/dht/src/Makefile.am index f6c9ef2607a..bb3308f14a3 100644 --- a/xlators/cluster/dht/src/Makefile.am +++ b/xlators/cluster/dht/src/Makefile.am @@ -18,17 +18,16 @@ nufa_la_SOURCES = $(dht_common_source) nufa.c switch_la_SOURCES = $(dht_common_source) switch.c tier_la_SOURCES = $(dht_common_source) tier.c -dht_la_LDFLAGS = -module -avoid-version +dht_la_LDFLAGS = -module -avoid-version -export-symbols $(top_srcdir)/xlators/cluster/dht/src/dht.sym dht_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la -nufa_la_LDFLAGS = -module -avoid-version +nufa_la_LDFLAGS = -module -avoid-version -export-symbols $(top_srcdir)/xlators/cluster/dht/src/nufa.sym nufa_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la -switch_la_LDFLAGS = -module -avoid-version +switch_la_LDFLAGS = -module -avoid-version -export-symbols $(top_srcdir)/xlators/cluster/dht/src/switch.sym switch_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la - -tier_la_LDFLAGS = -module -avoid-version +tier_la_LDFLAGS = -module -avoid-version -export-symbols $(top_srcdir)/xlators/cluster/dht/src/tier.sym tier_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la noinst_HEADERS = dht-common.h dht-mem-types.h dht-messages.h dht-helper.h tier.h\ @@ -43,6 +42,8 @@ AM_CPPFLAGS = $(GF_CPPFLAGS) -I$(top_srcdir)/libglusterfs/src \ CLEANFILES = +EXTRA_DIST = dht.sym nufa.sym switch.sym tier.sym + uninstall-local: rm -f $(DESTDIR)$(xlatordir)/distribute.so diff --git a/xlators/cluster/dht/src/dht.sym b/xlators/cluster/dht/src/dht.sym new file mode 100644 index 00000000000..780b5fc0387 --- /dev/null +++ b/xlators/cluster/dht/src/dht.sym @@ -0,0 +1,8 @@ +fops +cbks +class_methods +dht_methods +options +mem_acct_init +reconfigure +dumpops diff --git a/xlators/cluster/dht/src/nufa.sym b/xlators/cluster/dht/src/nufa.sym new file mode 100644 index 00000000000..780b5fc0387 --- /dev/null +++ b/xlators/cluster/dht/src/nufa.sym @@ -0,0 +1,8 @@ +fops +cbks +class_methods +dht_methods +options +mem_acct_init +reconfigure +dumpops diff --git a/xlators/cluster/dht/src/switch.sym b/xlators/cluster/dht/src/switch.sym new file mode 100644 index 00000000000..780b5fc0387 --- /dev/null +++ b/xlators/cluster/dht/src/switch.sym @@ -0,0 +1,8 @@ +fops +cbks +class_methods +dht_methods +options +mem_acct_init +reconfigure +dumpops diff --git a/xlators/cluster/dht/src/tier.sym b/xlators/cluster/dht/src/tier.sym new file mode 100644 index 00000000000..60205d145b6 --- /dev/null +++ b/xlators/cluster/dht/src/tier.sym @@ -0,0 +1,9 @@ +fops +cbks +class_methods +dht_methods +tier_methods +options +mem_acct_init +reconfigure +dumpops diff --git a/xlators/cluster/ec/src/Makefile.am b/xlators/cluster/ec/src/Makefile.am index 3ebd5ec3c53..c45a8f05713 100644 --- a/xlators/cluster/ec/src/Makefile.am +++ b/xlators/cluster/ec/src/Makefile.am @@ -33,7 +33,7 @@ ec_ext_sources = $(top_builddir)/xlators/lib/src/libxlator.c ec_ext_headers = $(top_builddir)/xlators/lib/src/libxlator.h -ec_la_LDFLAGS = -module -avoid-version +ec_la_LDFLAGS = $(GF_XLATOR_DEFAULT_LDFLAGS) ec_la_SOURCES = $(ec_sources) $(ec_headers) $(ec_ext_sources) $(ec_ext_headers) ec_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la diff --git a/xlators/cluster/ha/src/Makefile.am b/xlators/cluster/ha/src/Makefile.am index 5c1364b7f9d..4b730f9534e 100644 --- a/xlators/cluster/ha/src/Makefile.am +++ b/xlators/cluster/ha/src/Makefile.am @@ -1,7 +1,8 @@ xlator_LTLIBRARIES = ha.la xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/testing/cluster -ha_la_LDFLAGS = -module -avoid-version +ha_la_LDFLAGS = $(GF_XLATOR_DEFAULT_LDFLAGS) + ha_la_SOURCES = ha-helpers.c ha.c ha_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la diff --git a/xlators/cluster/map/src/Makefile.am b/xlators/cluster/map/src/Makefile.am index a278b05e2d1..6f4765ff2e4 100644 --- a/xlators/cluster/map/src/Makefile.am +++ b/xlators/cluster/map/src/Makefile.am @@ -1,7 +1,8 @@ xlator_LTLIBRARIES = map.la xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/testing/cluster -map_la_LDFLAGS = -module -avoid-version +map_la_LDFLAGS = $(GF_XLATOR_DEFAULT_LDFLAGS) + map_la_SOURCES = map.c map-helper.c map_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la diff --git a/xlators/cluster/stripe/src/Makefile.am b/xlators/cluster/stripe/src/Makefile.am index 4268d6f0382..a4c5370562c 100644 --- a/xlators/cluster/stripe/src/Makefile.am +++ b/xlators/cluster/stripe/src/Makefile.am @@ -1,7 +1,8 @@ xlator_LTLIBRARIES = stripe.la xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/cluster -stripe_la_LDFLAGS = -module -avoid-version +stripe_la_LDFLAGS = $(GF_XLATOR_DEFAULT_LDFLAGS) + stripe_la_SOURCES = stripe.c stripe-helpers.c \ $(top_builddir)/xlators/lib/src/libxlator.c |