28d3ae407e
This is an automated DistroBaker update from upstream sources. If you do not know what this is about or would like to opt out, contact the OSCI team. Source: https://src.fedoraproject.org/rpms/device-mapper-multipath.git#26a2cd7a3e189bf91263d17bc8a8c449cc043fb0
150 lines
4.8 KiB
Diff
150 lines
4.8 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Martin Wilck <mwilck@suse.com>
|
|
Date: Wed, 16 Dec 2020 23:14:59 +0100
|
|
Subject: [PATCH] multipath-tools: make sure plugin DSOs use symbol versions
|
|
|
|
By adding -Wl,-z,defs, we'll get warnings about unresolved symbols
|
|
at the linking stage. This way we make sure our plugins (checkers etc.)
|
|
will use versioned symbols from libmultipath, and incompatible plugins
|
|
can't be loaded any more. Doing this requires explicitly linking
|
|
the plugins with all libraries they use, in particular libmultipath.
|
|
|
|
Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
|
|
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
|
---
|
|
Makefile | 1 +
|
|
Makefile.inc | 2 +-
|
|
libmpathpersist/Makefile | 8 ++++----
|
|
libmultipath/checkers/Makefile | 7 +++----
|
|
libmultipath/foreign/Makefile | 4 +++-
|
|
libmultipath/prioritizers/Makefile | 7 +++----
|
|
6 files changed, 15 insertions(+), 14 deletions(-)
|
|
|
|
diff --git a/Makefile b/Makefile
|
|
index f127ff91..bddb2bf7 100644
|
|
--- a/Makefile
|
|
+++ b/Makefile
|
|
@@ -31,6 +31,7 @@ $(BUILDDIRS):
|
|
|
|
libmultipath libdmmp: libmpathcmd
|
|
libmpathpersist libmpathvalid multipath multipathd: libmultipath
|
|
+libmultipath/prioritizers libmultipath/checkers libmultipath/foreign: libmultipath
|
|
mpathpersist multipathd: libmpathpersist
|
|
|
|
libmultipath/checkers.install \
|
|
diff --git a/Makefile.inc b/Makefile.inc
|
|
index 13587a9f..05429307 100644
|
|
--- a/Makefile.inc
|
|
+++ b/Makefile.inc
|
|
@@ -105,7 +105,7 @@ CFLAGS := --std=gnu99 $(CFLAGS) $(OPTFLAGS) $(WARNFLAGS) -pipe \
|
|
BIN_CFLAGS = -fPIE -DPIE
|
|
LIB_CFLAGS = -fPIC
|
|
SHARED_FLAGS = -shared
|
|
-LDFLAGS := $(LDFLAGS) -Wl,-z,relro -Wl,-z,now
|
|
+LDFLAGS := $(LDFLAGS) -Wl,-z,relro -Wl,-z,now -Wl,-z,defs
|
|
BIN_LDFLAGS = -pie
|
|
|
|
# Check whether a function with name $1 has been declared in header file $2.
|
|
diff --git a/libmpathpersist/Makefile b/libmpathpersist/Makefile
|
|
index 456ce4cf..57103e58 100644
|
|
--- a/libmpathpersist/Makefile
|
|
+++ b/libmpathpersist/Makefile
|
|
@@ -6,17 +6,17 @@ LIBS = $(DEVLIB).$(SONAME)
|
|
VERSION_SCRIPT := libmpathpersist.version
|
|
|
|
CFLAGS += $(LIB_CFLAGS) -I$(multipathdir) -I$(mpathpersistdir) -I$(mpathcmddir)
|
|
+LDFLAGS += -L$(multipathdir) -L$(mpathcmddir)
|
|
|
|
-LIBDEPS += -lpthread -ldevmapper -ldl -L$(multipathdir) -lmultipath \
|
|
- -L$(mpathcmddir) -lmpathcmd
|
|
+LIBDEPS += -lmultipath -lmpathcmd -ldevmapper -lpthread -ldl
|
|
|
|
OBJS = mpath_persist.o mpath_updatepr.o mpath_pr_ioctl.o
|
|
|
|
all: $(DEVLIB) man
|
|
|
|
$(LIBS): $(OBJS) $(VERSION_SCRIPT)
|
|
- $(CC) $(LDFLAGS) $(SHARED_FLAGS) $(LIBDEPS) -Wl,-soname=$@ \
|
|
- -Wl,--version-script=$(VERSION_SCRIPT) -o $@ $(OBJS)
|
|
+ $(CC) $(LDFLAGS) $(SHARED_FLAGS) -Wl,-soname=$@ \
|
|
+ -Wl,--version-script=$(VERSION_SCRIPT) -o $@ $(OBJS) $(LIBDEPS)
|
|
|
|
$(DEVLIB): $(LIBS)
|
|
$(LN) $(LIBS) $@
|
|
diff --git a/libmultipath/checkers/Makefile b/libmultipath/checkers/Makefile
|
|
index 01c04510..8e0ed5e9 100644
|
|
--- a/libmultipath/checkers/Makefile
|
|
+++ b/libmultipath/checkers/Makefile
|
|
@@ -4,6 +4,8 @@
|
|
include ../../Makefile.inc
|
|
|
|
CFLAGS += $(LIB_CFLAGS) -I..
|
|
+LDFLAGS += -L.. -lmultipath
|
|
+LIBDEPS = -lmultipath -laio -lpthread -lrt
|
|
|
|
# If you add or remove a checker also update multipath/multipath.conf.5
|
|
LIBS= \
|
|
@@ -17,11 +19,8 @@ LIBS= \
|
|
|
|
all: $(LIBS)
|
|
|
|
-libcheckdirectio.so: directio.o
|
|
- $(CC) $(LDFLAGS) $(SHARED_FLAGS) -o $@ $^ -laio
|
|
-
|
|
libcheck%.so: %.o
|
|
- $(CC) $(LDFLAGS) $(SHARED_FLAGS) -o $@ $^
|
|
+ $(CC) $(LDFLAGS) $(SHARED_FLAGS) -o $@ $^ $(LIBDEPS)
|
|
|
|
install:
|
|
$(INSTALL_PROGRAM) -m 755 $(LIBS) $(DESTDIR)$(libdir)
|
|
diff --git a/libmultipath/foreign/Makefile b/libmultipath/foreign/Makefile
|
|
index fae58a0d..f447a1c4 100644
|
|
--- a/libmultipath/foreign/Makefile
|
|
+++ b/libmultipath/foreign/Makefile
|
|
@@ -5,13 +5,15 @@ TOPDIR=../..
|
|
include ../../Makefile.inc
|
|
|
|
CFLAGS += $(LIB_CFLAGS) -I.. -I$(nvmedir)
|
|
+LDFLAGS += -L..
|
|
+LIBDEPS = -lmultipath -ludev -lpthread -lrt
|
|
|
|
LIBS = libforeign-nvme.so
|
|
|
|
all: $(LIBS)
|
|
|
|
libforeign-%.so: %.o
|
|
- $(CC) $(LDFLAGS) $(SHARED_FLAGS) -o $@ $^
|
|
+ $(CC) $(LDFLAGS) $(SHARED_FLAGS) -o $@ $^ $(LIBDEPS)
|
|
|
|
install:
|
|
$(INSTALL_PROGRAM) -m 755 $(LIBS) $(DESTDIR)$(libdir)
|
|
diff --git a/libmultipath/prioritizers/Makefile b/libmultipath/prioritizers/Makefile
|
|
index fc6e0e0c..8d34ae32 100644
|
|
--- a/libmultipath/prioritizers/Makefile
|
|
+++ b/libmultipath/prioritizers/Makefile
|
|
@@ -4,6 +4,8 @@
|
|
include ../../Makefile.inc
|
|
|
|
CFLAGS += $(LIB_CFLAGS) -I..
|
|
+LDFLAGS += -L..
|
|
+LIBDEPS = -lmultipath -lm -lpthread -lrt
|
|
|
|
# If you add or remove a prioritizer also update multipath/multipath.conf.5
|
|
LIBS = \
|
|
@@ -28,11 +30,8 @@ endif
|
|
|
|
all: $(LIBS)
|
|
|
|
-libpriopath_latency.so: path_latency.o
|
|
- $(CC) $(LDFLAGS) $(SHARED_FLAGS) -o $@ $^ -lm
|
|
-
|
|
libprio%.so: %.o
|
|
- $(CC) $(LDFLAGS) $(SHARED_FLAGS) -o $@ $^
|
|
+ $(CC) $(LDFLAGS) $(SHARED_FLAGS) -o $@ $^ $(LIBDEPS)
|
|
|
|
install: $(LIBS)
|
|
$(INSTALL_PROGRAM) -m 755 libprio*.so $(DESTDIR)$(libdir)
|
|
--
|
|
2.17.2
|
|
|