From: Russ Allbery Date: Sun, 12 Jul 2009 16:07:12 +0000 (-0700) Subject: Ensure PAM modules are built PIC and pthread-aware where needed X-Git-Tag: openafs-devel-1_5_61~121 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=2510a6ec675669739a625305bcc11ab2ad671122;p=packages%2Fo%2Fopenafs.git Ensure PAM modules are built PIC and pthread-aware where needed Link the PAM modules against libafsauthent_pic and libafsrpc_pic instead of the large collection of LWP AFS libraries so that they are always built PIC, even on platforms that don't normally build everything PIC. This also uses the pthread-aware version of the AFS routines on platforms that support it, avoiding conflict problems between LWP in PAM modules and pthread in a calling application. Build a separate copy of ktc.krb.o in the pam directory for pam_afs.krb since there is no AFS_KERBEROS_ENV-aware version of libafsauthent. Enable the PAM module build by default on x86_64-linux now that it's properly built PIC and can compile. Stop ignoring build failures in the PAM modules if they're configured to build. On platforms where they should not be built, they should be excluded in acinclude.m4. Reviewed-on: http://gerrit.openafs.org/65 Verified-by: Derrick Brashear Reviewed-by: Derrick Brashear --- diff --git a/Makefile.in b/Makefile.in index 632c9616d..08c7f2181 100644 --- a/Makefile.in +++ b/Makefile.in @@ -334,7 +334,7 @@ vfsck: vol ${COMPILE_PART1} vfsck ${COMPILE_PART2} ;; \ esac -pam: cmd comerr kauth rxkad +pam: auth shlibafsauthent shlibafsrpc +set -x; \ if test "@HAVE_PAM@" = "yes"; then \ ${COMPILE_PART1} pam ${COMPILE_PART2} ; \ diff --git a/acinclude.m4 b/acinclude.m4 index 54fa21bef..21e626ac0 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -778,7 +778,7 @@ else ;; x86_64-*-linux-gnu) AFS_SYSNAME="amd64_linuxXX" - enable_pam="no" + enable_pam="yes" ;; *) AC_MSG_ERROR(An AFS sysname is required) diff --git a/src/pam/Makefile.in b/src/pam/Makefile.in index ae1eefe38..020959e67 100644 --- a/src/pam/Makefile.in +++ b/src/pam/Makefile.in @@ -21,10 +21,10 @@ AFSLIBS = ${TOP_LIBDIR}/librxkad.a ${TOP_LIBDIR}/libsys.a \ ${TOP_LIBDIR}/util.a LDFLAGS = ${SHLIB_LDFLAGS} - LIBS = ${TOP_LIBDIR}/libkauth.a ${LIBSA} ${TOP_LIBDIR}/libauth.a \ - ${AFSLIBS} ${PAM_LIBS} @LIB_AFSDB@ - KLIBS = ${TOP_LIBDIR}/libkauth.krb.a ${LIBSA} ${TOP_LIBDIR}/libauth.krb.a \ - ${AFSLIBS} ${PAM_LIBS} @LIB_AFSDB@ + LIBS = ${TOP_LIBDIR}/libafsauthent_pic.a ${TOP_LIBDIR}/libafsrpc_pic.a \ + ${PAM_LIBS} @LIB_AFSDB@ ${MT_LIBS} + KLIBS = ktc_krb.o ${TOP_LIBDIR}/libafsauthent_pic.a \ + ${TOP_LIBDIR}/libafsrpc_pic.a ${PAM_LIBS} @LIB_AFSDB@ ${MT_LIBS} SHOBJS = afs_account.o afs_session.o afs_password.o \ afs_pam_msg.o afs_message.o AFS_component_version_number.o OBJS = $(SHOBJS) test_pam.o @@ -51,12 +51,20 @@ afs_util.o: afs_util.c afs_pam_msg.h afs_message.h afs_util.h afs_util_krb.o: afs_util.c afs_pam_msg.h afs_message.h afs_util.h ${CC} ${CFLAGS} -DAFS_KERBEROS_ENV -c ${srcdir}/afs_util.c -o afs_util_krb.o -pam_afs.so.1: $(SHOBJS) afs_setcred.o afs_auth.o afs_util.o - -../config/shlib-build -d $(srcdir) -f pam_afs.so.1 -l pam_afs -- \ +ktc_krb.o: ${srcdir}/../auth/ktc.c ${srcdir}/../auth/cellconfig.h \ + ${srcdir}/../auth/auth.h ${srcdir}/../auth/keys.h \ + ${TOP_INCDIR}/afs/vice.h + ${CC} ${CFLAGS} -DAFS_KERBEROS_ENV -c ${srcdir}/../auth/ktc.c -o $@ + +pam_afs.so.1: $(SHOBJS) afs_setcred.o afs_auth.o afs_util.o \ + ${TOP_LIBDIR}/libafsauthent_pic.a ${TOP_LIBDIR}/libafsrpc_pic.a + ../config/shlib-build -d $(srcdir) -f pam_afs.so.1 -l pam_afs -- \ afs_setcred.o afs_auth.o afs_util.o ${SHOBJS} ${LIBS} -pam_afs.krb.so.1: $(SHOBJS) afs_setcred_krb.o afs_auth_krb.o afs_util_krb.o - -../config/shlib-build -d $(srcdir) -f pam_afs.krb.so.1 -l pam_afs -- \ +pam_afs.krb.so.1: $(SHOBJS) afs_setcred_krb.o afs_auth_krb.o afs_util_krb.o \ + ktc_krb.o ${TOP_LIBDIR}/libafsauthent_pic.a \ + ${TOP_LIBDIR}/libafsrpc_pic.a + ../config/shlib-build -d $(srcdir) -f pam_afs.krb.so.1 -l pam_afs -- \ afs_setcred_krb.o afs_auth_krb.o afs_util_krb.o \ ${SHOBJS} ${KLIBS} @@ -77,13 +85,13 @@ test_pam: test_pam.o install: pam_afs.so.1 pam_afs.krb.so.1 ${INSTALL} -d ${DESTDIR}${libdir} - -${INSTALL_DATA} pam_afs.so.1 ${DESTDIR}${libdir}/pam_afs.so.1 - -${INSTALL_DATA} pam_afs.krb.so.1 ${DESTDIR}${libdir}/pam_afs.krb.so.1 + ${INSTALL_DATA} pam_afs.so.1 ${DESTDIR}${libdir}/pam_afs.so.1 + ${INSTALL_DATA} pam_afs.krb.so.1 ${DESTDIR}${libdir}/pam_afs.krb.so.1 dest: pam_afs.so.1 pam_afs.krb.so.1 ${INSTALL} -d ${DEST}/lib - -${INSTALL_DATA} pam_afs.so.1 ${DEST}/lib/pam_afs.so.1 - -${INSTALL_DATA} pam_afs.krb.so.1 ${DEST}/lib/pam_afs.krb.so.1 + ${INSTALL_DATA} pam_afs.so.1 ${DEST}/lib/pam_afs.so.1 + ${INSTALL_DATA} pam_afs.krb.so.1 ${DEST}/lib/pam_afs.krb.so.1 afs_pam_msg.o: afs_pam_msg.c afs_pam_msg.h afs_message.h afs_message.o: afs_message.c afs_message.h