From 5563ff6674ddac87265d800878774532f6fa0dae Mon Sep 17 00:00:00 2001 From: Simon Wilkinson Date: Thu, 24 May 2012 11:24:47 +0100 Subject: [PATCH] sys: Use libtool for pthreaded library Create a pthreaded version of libsys.a, called liboafs_sys.a On AIX, the sys library is special because it includes references to two syscall stubs - lpioctl and lsetpag. This means that we can't link the library with -no-undefined, as the references to these stubs are only resolved at run time. Change-Id: Iaae5923fe4eec7bc3f006e29df4e26e4ba8e5418 Reviewed-on: http://gerrit.openafs.org/8061 Tested-by: BuildBot Reviewed-by: Derrick Brashear --- src/sys/.gitignore | 2 -- src/sys/Makefile.in | 43 ++++++++++++++++++++++---------------- src/sys/liboafs_sys.la.sym | 3 +++ 3 files changed, 28 insertions(+), 20 deletions(-) create mode 100644 src/sys/liboafs_sys.la.sym diff --git a/src/sys/.gitignore b/src/sys/.gitignore index aa60e2d2d..f672d4f1f 100644 --- a/src/sys/.gitignore +++ b/src/sys/.gitignore @@ -1,8 +1,6 @@ # After changing this file, please run # git ls-files -i --exclude-standard # to check that you haven't inadvertently ignored any tracked files. - -/picobj /rmtsys.h /rmtsysd /afs.exp diff --git a/src/sys/Makefile.in b/src/sys/Makefile.in index 073ea8fb5..fcca762ac 100644 --- a/src/sys/Makefile.in +++ b/src/sys/Makefile.in @@ -9,9 +9,9 @@ srcdir=@srcdir@ include @TOP_OBJDIR@/src/config/Makefile.config +include @TOP_OBJDIR@/src/config/Makefile.libtool include @TOP_OBJDIR@/src/config/Makefile.lwp - SFLAGS=-I${TOP_INCDIR} LIBS=libsys.a \ ${TOP_LIBDIR}/librx.a \ @@ -22,12 +22,13 @@ LIBS=libsys.a \ ${TOP_LIBDIR}/libafshcrypto_lwp.a \ ${XLIBS} -OBJECTS= afssyscalls.o setpag.o pioctl.o glue.o \ - AFS_component_version_number.o -SHLIBOBJS = picobj/setpag.o picobj/glue.o syscall.o -RMTOBJS=rmtsysnet.o rmtsysc.o rmtsys.cs.o rmtsys.xdr.o rmtsys.ss.o rmtsyss.o +LT_objs = afssyscalls.lo setpag.lo pioctl.lo glue.lo \ + rmtsysnet.lo rmtsysc.lo rmtsys.cs.lo rmtsys.xdr.lo rmtsys.ss.lo \ + rmtsyss.lo AFS_component_version_number.lo +LT_deps = $(top_builddir)/src/rx/liboafs_rx.la all: \ + liboafs_sys.la \ rmtsysd \ ${TOP_INCDIR}/afs/afssyscalls.h \ ${TOP_INCDIR}/afs/afs.exp \ @@ -91,17 +92,23 @@ depinstall: \ ${UKERNELDIR}/afs/afsl.exp \ Krmtsys.cs.c Krmtsys.h Krmtsys.xdr.c rmtsys.h -libsys.a: ${OBJECTS} ${RMTOBJS} syscall.o afsl.exp AFS_component_version_number.o - $(RM) -f $@ +libsys.a: $(LT_objs) afsl.exp + @set -e; set -x; case "$(SYS_NAME)" in \ + rs_aix*) \ + $(LT_LDLIB_lwp) $(LT_objs) afsl.exp ;; \ + *) \ + $(LT_LDLIB_lwp) $(LT_objs) ;; \ + esac + +# On AIX, liboafs_sys uses lsetpag() and lpioctl() which are syscall stubs, +# we need to include afsl.exp in order to link against them +liboafs_sys.la: liboafs_sys.la.sym $(LT_objs) $(LT_deps) afsl.exp @set -e; set -x; case "$(SYS_NAME)" in \ - sgi_* | hp_ux10*) \ - ${AR} crv $@ ${OBJECTS} ${RMTOBJS} syscall.o ;; \ rs_aix*) \ - ${AR} crv $@ ${OBJECTS} ${RMTOBJS} syscall.o afsl.exp ;; \ + $(LT_LDLIB_shlib) -Wl,-bI:afsl.exp $(LT_objs) $(LT_deps) ;; \ *) \ - ${AR} crv $@ ${OBJECTS} ${RMTOBJS} ;; \ + $(LT_LDLIB_shlib) $(LT_objs) $(LT_deps) ;; \ esac - $(RANLIB) $@ tests: fixit iinc idec icreate iopen istat rmtsysd @@ -120,12 +127,12 @@ syscall.o: syscall.s ;; \ esac -afssyscalls.o: afssyscalls.c afssyscalls.h -glue.o: glue.c afssyscalls.h -setpag.o: setpag.c afssyscalls.h -pioctl.o: pioctl.c afssyscalls.h +afssyscalls.lo: afssyscalls.c afssyscalls.h +glue.lo: glue.c afssyscalls.h +setpag.lo: setpag.c afssyscalls.h +pioctl.lo: pioctl.c afssyscalls.h -rmtsysnet.o rmtsysc.o rmtsyss.o rmtsysd.o: rmtsys.h +rmtsysnet.lo rmtsysc.lo rmtsyss.lo rmtsysd.lo: rmtsys.h rmtsysd: AFS_component_version_number.o afs.exp afsl.exp rmtsys.cs.c: rmtsys.xg @@ -245,8 +252,8 @@ dest: libsys.a rmtsysd afssyscalls.h afs.exp xfsattrs.h include ../config/Makefile.version clean: + $(LT_CLEAN) $(RM) -f *.o libsys.a xfsinode iinc idec icreate iopen istat core \ rmtsysc rmtsyss *.o rmtsys.ss.c rmtsys.cs.c rmtsys.xdr.c rmtsys.h \ rmtsysd AFS_component_version_number.c \ afs.exp afsl.exp libafssetpag.* Krmtsys.cs.c Krmtsys.h Krmtsys.xdr.c - $(RM) -rf picobj diff --git a/src/sys/liboafs_sys.la.sym b/src/sys/liboafs_sys.la.sym new file mode 100644 index 000000000..17b7a8941 --- /dev/null +++ b/src/sys/liboafs_sys.la.sym @@ -0,0 +1,3 @@ +pioctl +rmtsysd +setpag -- 2.39.5