From dc893c32f434f08c84d08717954a66ff497c84ba Mon Sep 17 00:00:00 2001 From: Michael Meffie Date: Sat, 5 Nov 2016 12:42:19 -0400 Subject: [PATCH] SOLARIS: convert from ancient _depends_on to ELF dependencies The ancient way of declaring module dependencies with _depends_on has been deprecated since SunOS 2.6 (circa 1996). The presence of the old _depends_on symbol triggers a warning message on the console starting with Solaris 12, and the kernel runtime loader (krtld) feature of using the _depends_on symbol to load dependencies may be removed in a future version of Solaris. Convert the kernel module from the ancient _depends_on method to modern ELF dependencies. Remove the old _depends_on symbol and specify the -dy and -N linker options to set the ELF dependencies at link time, as recommended in the Solaris device driver developer guidelines [1]. This commit does not change the declared dependencies, which may be vestiges of ancient afs versions. [1]: http://docs.oracle.com/cd/E19455-01/805-7378/6j6un037u/index.html#loading-16 Reviewed-on: https://gerrit.openafs.org/12453 Tested-by: BuildBot Reviewed-by: Benjamin Kaduk (cherry picked from commit 37db7985fde9e6a5e71ae628d0b7124a27bf31c3) Change-Id: I1a4ad8bface1ecf774e906b846c2e8263631d77a Reviewed-on: https://gerrit.openafs.org/12514 Tested-by: BuildBot Reviewed-by: Michael Meffie Reviewed-by: Mark Vitale Reviewed-by: Benjamin Kaduk Reviewed-by: Stephan Wiesand --- src/afs/SOLARIS/osi_vfsops.c | 8 -------- src/libafs/MakefileProto.SOLARIS.in | 10 ++++++++-- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/src/afs/SOLARIS/osi_vfsops.c b/src/afs/SOLARIS/osi_vfsops.c index 8cc7f6afe..dc58feb12 100644 --- a/src/afs/SOLARIS/osi_vfsops.c +++ b/src/afs/SOLARIS/osi_vfsops.c @@ -509,14 +509,6 @@ static struct sysent afssysent = { }; #endif /* AFS_SUN511_ENV */ -/* inter-module dependencies */ -char _depends_on[] = -#if AFS_SUN510_ENV - "drv/ip drv/udp strmod/rpcmod fs/ufs"; -#else - "drv/ip drv/udp strmod/rpcmod"; -#endif - /* * Info/Structs to link the afs module into the kernel */ diff --git a/src/libafs/MakefileProto.SOLARIS.in b/src/libafs/MakefileProto.SOLARIS.in index 4f4c8ed66..c92308a56 100644 --- a/src/libafs/MakefileProto.SOLARIS.in +++ b/src/libafs/MakefileProto.SOLARIS.in @@ -52,6 +52,12 @@ KDEFS_64 = -xarch=amd64 -xmodel=kernel CFLAGS=-I. -I.. -I${TOP_OBJDIR}/src/config ${FSINCLUDES} $(DEFINES) $(KDEFS) $(KOPTS) ${DBUG} + +LDFLAGS=-r -dy -N drv/ip -N drv/udp -N strmod/rpcmod + + +LDFLAGS=-r -dy -N drv/ip -N drv/udp -N strmod/rpcmod -N fs/ufs + # Name of directory to hold object files and libraries. KOBJ = MODLOAD @@ -160,9 +166,9 @@ dest_libafs: $(LIBAFS) $(LIBAFSNONFS) ${LIBAFS}: $(AFSAOBJS) $(AFSNFSOBJS) $(RM) -f $@ - $(LD) -r -o $@ $(AFSAOBJS) ${AFSNFSOBJS} + $(LD) $(LDFLAGS) -o $@ $(AFSAOBJS) ${AFSNFSOBJS} ${LIBAFSNONFS}: $(AFSAOBJS) $(AFSNONFSOBJS) $(RM) -f $@ - $(LD) -r -o $@ $(AFSAOBJS) ${AFSNONFSOBJS} + $(LD) $(LDFLAGS) -o $@ $(AFSAOBJS) ${AFSNONFSOBJS} -- 2.39.5