aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIan Kent <raven@themaw.net>2020-12-08 11:47:28 +0800
committerIan Kent <raven@themaw.net>2020-12-22 09:04:10 +0800
commitd2feac6784b6c306b6ccf882a919bfafac73d741 (patch)
treedc0590e280f4d67e297eba3d9c224ba174e46126
parentaf72300d30516464a69f4ee2a874ce952b8080f1 (diff)
downloadautofs-d2feac6784b6c306b6ccf882a919bfafac73d741.tar.gz
autofs-5.1.6 - make autofs.a a shared library
When the linker option -Bsymbolic-functions is used the static library that is linked to each object, automount and the shared lookup, parse and mount shared libraries becomes unusable because static storage allocated and initialized in the the library becomes undefined after certain events, such as forking to become a daemon. This can be fixed by changing the autofs static library to a shared library.
-rw-r--r--CHANGELOG1
-rw-r--r--Makefile.conf.in3
-rw-r--r--Makefile.rules5
-rw-r--r--autofs.spec1
-rw-r--r--daemon/Makefile2
-rw-r--r--lib/Makefile13
-rw-r--r--modules/Makefile12
7 files changed, 22 insertions, 15 deletions
diff --git a/CHANGELOG b/CHANGELOG
index dfffc156..ae8d2d3d 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -72,6 +72,7 @@ xx/xx/2020 autofs-5.1.7
- add helper to construct mount point path.
- check defaults_read_config() return.
- move AUTOFS_LIB to end of build rule lines.
+- make autofs.a a shared library.
07/10/2019 autofs-5.1.6
- support strictexpire mount option.
diff --git a/Makefile.conf.in b/Makefile.conf.in
index cbc3c0d7..df678eec 100644
--- a/Makefile.conf.in
+++ b/Makefile.conf.in
@@ -85,6 +85,9 @@ DMALLOCLIB = @DMALLOCLIB@
prefix = @prefix@
exec_prefix = @exec_prefix@
+# Shared library directory
+sharedlibdir = @libdir@
+
# SSS library module directory
ssslibdir=@sssldir@
diff --git a/Makefile.rules b/Makefile.rules
index ba694c83..43cf2963 100644
--- a/Makefile.rules
+++ b/Makefile.rules
@@ -17,7 +17,8 @@ endif
INSTALLROOT = $(DESTDIR)
# autofs utility library
-AUTOFS_LIB = ../lib/autofs.a
+AUTOFS_LIB = ../lib/libautofs.so
+AUTOFS_LIB_LINK = -L../lib -lautofs
# Compilers, linkers and flags
# The STRIP defined here *must not* remove any dynamic-loading symbols
@@ -71,5 +72,5 @@ LIBS += $(LIBCLOCK_GETTIME)
$(CC) $(CFLAGS) -S $<
.c.so:
- $(CC) $(SOLDFLAGS) $(CFLAGS) -o $*.so $< $(LDFLAGS) $(LIBS) $(AUTOFS_LIB)
+ $(CC) $(SOLDFLAGS) $(CFLAGS) -o $*.so $< $(LDFLAGS) $(LIBS) $(AUTOFS_LIB_LINK)
$(STRIP) $*.so
diff --git a/autofs.spec b/autofs.spec
index 22e7adf4..e0ab5d84 100644
--- a/autofs.spec
+++ b/autofs.spec
@@ -209,6 +209,7 @@ fi
%{_sbindir}/mount.fedfs
%{_sbindir}/fedfs-map-nfs4
%endif
+%{_libdir}/libautofs.so
%dir %{_libdir}/autofs
%{_libdir}/autofs/*
%{_mandir}/*/*
diff --git a/daemon/Makefile b/daemon/Makefile
index 28b94687..3af38e6f 100644
--- a/daemon/Makefile
+++ b/daemon/Makefile
@@ -38,7 +38,7 @@ endif
all: automount
automount: $(OBJS) $(AUTOFS_LIB)
- $(CC) $(DAEMON_LDFLAGS) -o automount $(OBJS) $(LDFLAGS) $(LIBS) $(AUTOFS_LIB)
+ $(CC) $(DAEMON_LDFLAGS) -o automount $(OBJS) $(LDFLAGS) $(LIBS) $(AUTOFS_LIB_LINK)
$(STRIP) automount
master_tok.c: master_tok.l
diff --git a/lib/Makefile b/lib/Makefile
index b6f3669f..83a80a1e 100644
--- a/lib/Makefile
+++ b/lib/Makefile
@@ -15,7 +15,7 @@ OBJS = cache.o mount_clnt.o mount_xdr.o cat_path.o rpc_subs.o \
YACCSRC = nss_tok.c nss_parse.tab.c nss_parse.tab.h
-LIB = autofs.a
+LIB = libautofs.so
CFLAGS += -I../include -fPIC -D_GNU_SOURCE
CFLAGS += -DAUTOFS_MAP_DIR=\"$(autofsmapdir)\"
@@ -27,12 +27,11 @@ endif
.PHONY: all install clean
-all: autofs.a
+all: libautofs.so
-autofs.a: $(OBJS)
- rm -f $(LIB)
- $(AR) $(ARFLAGS) $(LIB) $(OBJS)
- -$(RANLIB) $(LIB)
+libautofs.so: $(OBJS)
+ $(CC) $(SOLDFLAGS) $(CFLAGS) -o $*.so $^ $(LDFLAGS) $(LIBS)
+ $(STRIP) $*.so
mount.h: mount.x
$(RPCGEN) -h -o mount.h mount.x
@@ -64,6 +63,8 @@ nss_parse.tab.o: nss_parse.tab.c nss_parse.tab.h
rpc_subs.o: mount.h
install: all
+ install -d -m 755 $(INSTALLROOT)$(autofslibdir)
+ install -c $(LIB) -m 755 $(INSTALLROOT)$(sharedlibdir)
clean:
rm -f $(LIB) $(RPCS) $(OBJS) $(YACCSRC) *.output *~
diff --git a/modules/Makefile b/modules/Makefile
index f97e7cda..91dc20ab 100644
--- a/modules/Makefile
+++ b/modules/Makefile
@@ -110,7 +110,7 @@ amd_parse.tab.o: amd_parse.tab.c amd_parse.tab.h
parse_amd.so: parse_amd.c amd_parse.tab.o amd_tok.o
$(CC) $(SOLDFLAGS) $(CFLAGS) -o parse_amd.so \
- parse_amd.c amd_parse.tab.o amd_tok.o $(LDFLAGS) $(LIBS) $(AUTOFS_LIB)
+ parse_amd.c amd_parse.tab.o amd_tok.o $(LDFLAGS) $(LIBS) $(AUTOFS_LIB_LINK)
$(STRIP) parse_amd.so
#
@@ -118,17 +118,17 @@ parse_amd.so: parse_amd.c amd_parse.tab.o amd_tok.o
#
lookup_yp.so: lookup_yp.c
$(CC) $(SOLDFLAGS) $(CFLAGS) $(NSLCFLAGS) -o lookup_yp.so \
- lookup_yp.c $(LDFLAGS) $(LIBS) $(NSLLIB) $(AUTOFS_LIB)
+ lookup_yp.c $(LDFLAGS) $(LIBS) $(NSLLIB) $(AUTOFS_LIB_LINK)
$(STRIP) lookup_yp.so
lookup_nisplus.so: lookup_nisplus.c
$(CC) $(SOLDFLAGS) $(CFLAGS) $(NSLCFLAGS) -o lookup_nisplus.so \
- lookup_nisplus.c $(LDFLAGS) $(LIBS) $(NSLLIB) $(AUTOFS_LIB)
+ lookup_nisplus.c $(LDFLAGS) $(LIBS) $(NSLLIB) $(AUTOFS_LIB_LINK)
$(STRIP) lookup_nisplus.so
lookup_hesiod.so: lookup_hesiod.c
$(CC) $(SOLDFLAGS) $(CFLAGS) $(HESIOD_FLAGS) -o lookup_hesiod.so \
- lookup_hesiod.c $(LDFLAGS) $(LIBHESIOD) $(LIBRESOLV) $(LIBS) $(AUTOFS_LIB)
+ lookup_hesiod.c $(LDFLAGS) $(LIBHESIOD) $(LIBRESOLV) $(LIBS) $(AUTOFS_LIB_LINK)
$(STRIP) lookup_hesiod.so
cyrus-sasl.o: cyrus-sasl.c
@@ -140,11 +140,11 @@ cyrus-sasl-extern.o: cyrus-sasl-extern.c
lookup_ldap.so: lookup_ldap.c dclist.o base64.o $(SASL_OBJ)
$(CC) $(SOLDFLAGS) $(CFLAGS) $(LDAP_FLAGS) -o lookup_ldap.so \
lookup_ldap.c dclist.o base64.o $(SASL_OBJ) \
- $(LDFLAGS) $(LIBLDAP) $(LIBRESOLV) $(LIBS) $(AUTOFS_LIB)
+ $(LDFLAGS) $(LIBLDAP) $(LIBRESOLV) $(LIBS) $(AUTOFS_LIB_LINK)
$(STRIP) lookup_ldap.so
mount_nfs.so: mount_nfs.c replicated.o
$(CC) $(SOLDFLAGS) $(CFLAGS) -o mount_nfs.so \
- mount_nfs.c replicated.o $(LDFLAGS) $(LIBS) $(AUTOFS_LIB)
+ mount_nfs.c replicated.o $(LDFLAGS) $(LIBS) $(AUTOFS_LIB_LINK)
$(STRIP) mount_nfs.so