]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
Improve shared library building support
authorSimon Wilkinson <sxw@inf.ed.ac.uk>
Sun, 25 Apr 2010 18:11:06 +0000 (19:11 +0100)
committerDerrick Brashear <shadow@dementia.org>
Mon, 26 Apr 2010 03:49:19 +0000 (20:49 -0700)
This change removes the need to maintain two forms of symbol export
lists, instead generating the simpler lists required by AIX and Mac OS X
from the more complex Linux and Solaris mapfile. It can only handle
simple mapfiles at present, any more complex files (for example, those
which contain versioning information) will require changes to the
translation script. The now unused .exp files are removed, and a
dependency on the .map file added to the library build line.

This change adds support for export lists to Darwin for the first time.
Doing so identified a number of symbols in libafsrpc that are required
by libafsauthent, which were not being exported. Export these symbols,
and bump the minor revision of the shared library.

Change-Id: Ibd1d02bb89b85500dc2a010e6cde1f4b81efe050
Reviewed-on: http://gerrit.openafs.org/1831
Reviewed-by: Russ Allbery <rra@stanford.edu>
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: Derrick Brashear <shadow@dementia.org>
12 files changed:
src/config/shlib-build.in
src/kopenafs/Makefile.in
src/kopenafs/libkopenafs.exp [deleted file]
src/pam/.gitignore
src/pam/Makefile.in
src/shlibafsauthent/.gitignore [new file with mode: 0644]
src/shlibafsauthent/Makefile.in
src/shlibafsauthent/libafsauthent.exp [deleted file]
src/shlibafsrpc/.gitignore [new file with mode: 0644]
src/shlibafsrpc/Makefile.in
src/shlibafsrpc/libafsrpc.exp [deleted file]
src/shlibafsrpc/libafsrpc.map

index ff8dc54774e872e2addeb30b2498cca08ee00870..e54742b0cb474fef3afc4ba210fa2cfb271fc254 100644 (file)
@@ -79,8 +79,13 @@ if [ -z "$filename" ] ; then
 fi
 case $sysname in
 rs_aix*)
-    if [ -f "$srcdir/$library.exp" ] ; then
-        export="-bE:$srcdir/$library.exp"
+    if [ -f "$srcdir/$library.map" ] ; then
+       cat $srcdir/$library.map | \
+       awk '/local:/ {inglobal=0};
+            inglobal { sub(/;/,""); print };
+            /global:/ { inglobal=1};' \
+       > $library.exp
+        export="-bE:$library.exp"
     fi
     echo "$linker $export -o $filename $*"
     $linker $export -o "$filename" "$@"
@@ -116,6 +121,21 @@ hp_ux*)
     echo "$linker $export -o $filename $*"
     $linker $export -o "$filename" "$@"
     ;;
+*darwin*)
+    if [ -f "$srcdir/$library.map" ] ; then
+       # For 10.4 and later, the Mac exports list is a list of symbols,
+       # prefixed with an '_'
+       cat $srcdir/$library.map | \
+       awk '/local:/ {inglobal=0};
+            /^[\t ]+#/ {next};
+            inglobal { sub(/;/,""); sub(/[\t ]+/,"_"); print };
+            /global:/ { inglobal=1};' \
+       > $library.exp
+       export="-Wl,-exported_symbols_list,$library.exp"
+    fi
+    echo "$linker $export -o $filename $*"
+    $linker $export -o "$filename" "$@"
+    ;;
 *)
     echo "$linker -o $filename $*"
     $linker -o "$filename" "$@"
index ffcb4851a2a8fbc310cc58c2fb4899ac25c2e979..dceeb16422be27613288a4378dd76548d9cdd61f 100644 (file)
@@ -79,7 +79,7 @@ libkopenafs.a: ${LIBOBJS} syscall.o
        esac
        ${RANLIB} $@
 
-${LIBKOPENAFS}: ${LIBOBJS} syscall.o
+${LIBKOPENAFS}: ${LIBOBJS} syscall.o libkopenafs.map
        @set -e; set -x; case ${SYS_NAME} in \
        sgi_* | rs_aix* | hp_ux10*) \
                ../config/shlib-build -d $(srcdir) -l libkopenafs \
@@ -123,6 +123,6 @@ dest: ${LIBKOPENAFS}
 #
 clean:
        $(RM) -f *.o *.a ${LIBKOPENAFS} AFS_component_version_number.c \
-               test-setpag test-unlog
+               test-setpag test-unlog libkopenafs.exp
 
 include ../config/Makefile.version
diff --git a/src/kopenafs/libkopenafs.exp b/src/kopenafs/libkopenafs.exp
deleted file mode 100644 (file)
index 5cfc102..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-k_hasafs
-k_setpag
-k_unlog
-k_pioctl
index c381a3cd713439496bf394208a2d77af66b3126e..9781bb0dd5a9628518d5361834b1d09095d3aead 100644 (file)
@@ -3,3 +3,4 @@
 # to check that you haven't inadvertently ignored any tracked files.
 
 /test_pam
+/pam_afs.exp
index 29d759614ab444c8f26aa2be55efcfb0506a26bd..1955c91bfc4ba7a7908883c33cf5591913db214d 100644 (file)
@@ -57,13 +57,16 @@ ktc_krb.o: ${srcdir}/../auth/ktc.c ${TOP_INCDIR}/afs/cellconfig.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
+               ${TOP_LIBDIR}/libafsauthent_pic.a \
+               ${TOP_LIBDIR}/libafsrpc_pic.a \
+               pam_afs.map
        ../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 \
                ktc_krb.o ${TOP_LIBDIR}/libafsauthent_pic.a \
-               ${TOP_LIBDIR}/libafsrpc_pic.a
+               ${TOP_LIBDIR}/libafsrpc_pic.a \
+               pam_afs.map
        ../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}
@@ -100,6 +103,7 @@ afs_message.o: afs_message.c afs_message.h
 # Misc. targets
 #
 clean:
-       $(RM) -f *.a *.o *.so.1 test_pam core *~ AFS_component_version_number.c
+       $(RM) -f *.a *.o *.so.1 test_pam core *~ \
+               AFS_component_version_number.c pam_afs.exp
 
 include ../config/Makefile.version
diff --git a/src/shlibafsauthent/.gitignore b/src/shlibafsauthent/.gitignore
new file mode 100644 (file)
index 0000000..ae1588c
--- /dev/null
@@ -0,0 +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.
+
+/libafsauthent.exp
+
index cc630714c5d1a13f6e2509a4a43e3b5311336fca..48a9a3e579847b7895303c2b23b5a0441c546d33 100644 (file)
@@ -130,7 +130,7 @@ dest: ${LIBAFSAUTHENT} libafsauthent_pic.a
        ${INSTALL_DATA} libafsauthent_pic.a \
                ${DEST}/lib/libafsauthent_pic.a
 
-${LIBAFSAUTHENT}: ${LIBOBJS}
+${LIBAFSAUTHENT}: ${LIBOBJS} libafsauthent.map
        ../config/shlib-build -d $(srcdir) -l libafsauthent \
                -M ${LIBAFSAUTHENTMAJOR} -m ${LIBAFSAUTHENTMINOR} -- \
                -L${TOP_LIBDIR} -lafsrpc ${LIBOBJS} ${MT_LIBS}
@@ -304,4 +304,6 @@ pioctl.o: ${SYS}/pioctl.c
        ${CCRULE}
 
 clean:
-       $(RM) -f *.o *.a libafsauthent.a* libafsauthent.sl* libafsauthent.so* libafsauthent_pic.a libafsauthent.dylib.*
+       $(RM) -f *.o *.a libafsauthent.a* libafsauthent.sl* libafsauthent.so* \
+               libafsauthent_pic.a libafsauthent.dylib.* \
+               libafsauthent.exp
diff --git a/src/shlibafsauthent/libafsauthent.exp b/src/shlibafsauthent/libafsauthent.exp
deleted file mode 100644 (file)
index b7f34af..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-afsconf_AddKey
-afsconf_AddUser
-afsconf_CellApply
-afsconf_CheckAuth
-afsconf_ClientAuth
-afsconf_ClientAuthSecure
-afsconf_Close
-afsconf_DeleteKey
-afsconf_DeleteUser
-afsconf_GetCellInfo
-afsconf_GetKey
-afsconf_GetKeys
-afsconf_GetLatestKey
-afsconf_GetLocalCell
-afsconf_GetNoAuthFlag
-afsconf_GetNthUser
-afsconf_IntGetKeys
-afsconf_Open
-afsconf_ServerAuth
-afsconf_SetCellInfo
-afsconf_SetNoAuthFlag
-afsconf_SuperUser
-ka_AuthServerConn
-ka_Authenticate
-ka_CellConfig
-ka_CellToRealm
-ka_ChangePassword
-ka_ExpandCell
-ka_ExplicitCell
-ka_GetAdminToken
-ka_GetAuthToken
-ka_GetSecurity
-ka_GetServerToken
-ka_GetServers
-ka_GetToken
-ka_Init
-ka_LocalCell
-ka_ParseLoginName
-ka_ReadPassword
-ka_SingleServerConn
-ka_StringToKey
-ka_UserAuthenticateGeneral
-ka_VerifyUserToken
-ktc_ForgetAllTokens
-ktc_ForgetToken
-ktc_GetToken
-ktc_ListTokens
-ktc_OldPioctl
-ktc_SetToken
-ktc_curpag
-ubik_Call
-ubik_Call_New
-ubik_CallIter
-ubik_ClientDestroy
-ubik_ClientInit
-ubik_ParseClientList
diff --git a/src/shlibafsrpc/.gitignore b/src/shlibafsrpc/.gitignore
new file mode 100644 (file)
index 0000000..f1c8007
--- /dev/null
@@ -0,0 +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.
+
+/libafsrpc.exp
+
index b5d37161e24a7a4fe9f116199725467f7a195f2f..dddb5e723cfc1de5e62c14ba2e1e71e2525da493 100644 (file)
@@ -1,7 +1,7 @@
 # API version. When something changes, increment as appropriate. 
 # Ignore at your own risk.
 LIBAFSRPCMAJOR=1
-LIBAFSRPCMINOR=1
+LIBAFSRPCMINOR=2
 
 # Copyright 2000, International Business Machines Corporation and others.
 # All Rights Reserved.
@@ -159,7 +159,7 @@ dest: ${LIBAFSRPC} libafsrpc_pic.a
                -l libafsrpc -M ${LIBAFSRPCMAJOR} -m ${LIBAFSRPCMINOR}
        ${INSTALL_DATA} libafsrpc_pic.a ${DEST}/lib/libafsrpc_pic.a
 
-${LIBAFSRPC}: ${LIBOBJS}
+${LIBAFSRPC}: ${LIBOBJS} libafsrpc.map
        ../config/shlib-build -d $(srcdir) -l libafsrpc \
                -M ${LIBAFSRPCMAJOR} -m ${LIBAFSRPCMINOR} -- \
                ${LIBOBJS} ${MT_LIBS}
@@ -433,4 +433,5 @@ afsaux.o: ${FSINT}/afsaux.c
        ${CCRULE} -I../fsint
 
 clean:
-       $(RM) -f *.o libafsrpc.a* libafsrpc.sl* libafsrpc.so* libafsrpc_pic.a libafsrpc.dylib.*
+       $(RM) -f *.o libafsrpc.a* libafsrpc.sl* libafsrpc.so* \
+               libafsrpc_pic.a libafsrpc.dylib.* libafsrpc.exp
diff --git a/src/shlibafsrpc/libafsrpc.exp b/src/shlibafsrpc/libafsrpc.exp
deleted file mode 100755 (executable)
index c73bb63..0000000
+++ /dev/null
@@ -1,168 +0,0 @@
-des_cbc_cksum
-des_cbc_encrypt
-des_cbc_init
-des_check_key_parity
-des_cksum_init
-des_des_init
-des_ecb_encrypt
-des_fixup_key_parity
-des_generate_random_block
-des_init_random_number_generator
-des_is_weak_key
-des_key_sched
-des_pcbc_encrypt
-des_random_key
-des_string_to_key
-ktohl
-life_to_time
-rx_DestroyConnection
-rx_EndCall
-rx_EventPost
-rx_Finalize
-rx_GetCachedConnection
-rx_GetCall
-rx_GetIFInfo
-rx_Init
-rx_NewCall
-rx_NewConnection
-rx_NewService
-rx_PrintPeerStats
-rx_PrintStats
-rx_PrintTheseStats
-rx_ReadProc
-rx_ReleaseCachedConnection
-rx_ServerProc
-rx_StartServer
-rx_WriteProc
-rxevent_Init
-rxevent_Post
-rxkad_GetServerInfo
-rxkad_NewClientSecurityObject
-rxkad_NewServerSecurityObject
-rxkad_client_init
-rxkad_crypt_init
-rxnull_NewClientSecurityObject
-rxnull_NewServerSecurityObject
-rxs_Release
-time_to_life
-tkt_CheckTimes
-tkt_DecodeTicket
-tkt_MakeTicket
-xdr_array
-xdr_bool
-xdr_bytes
-xdr_char
-xdr_double
-xdr_enum
-xdr_float
-xdr_int
-xdr_long
-xdr_opaque
-xdr_pointer
-xdr_reference
-xdr_short
-xdr_string
-xdr_u_char
-xdr_u_int
-xdr_u_long
-xdr_u_short
-xdr_union
-xdr_vector
-xdr_void
-xdr_wrapstring
-xdrmem_create
-xdrrec_create
-xdrrec_endofrecord
-xdrrec_eof
-xdrrec_skiprecord
-xdrrx_create
-xdr_afsuuid
-xdr_int64
-hton_syserr_conv
-rxkad_global_stats
-rxkad_global_stats_lock
-rxkad_stats_key
-_et_list
-et_list_mutex
-afs_com_err
-afs_error_message
-rx_socket
-des_pcbc_init
-rx_BusyError
-rx_BusyThreshold
-rxi_connAbortThreshhold
-rxi_connAbortDelay
-rxi_callAbortThreshhold
-rxi_callAbortDelay
-RXSTATS_ExecuteRequest
-RXSTATS_RetrieveProcessRPCStats
-RXSTATS_RetrievePeerRPCStats
-RXSTATS_QueryProcessRPCStats
-RXSTATS_QueryPeerRPCStats
-RXSTATS_EnableProcessRPCStats
-RXSTATS_EnablePeerRPCStats
-RXSTATS_DisableProcessRPCStats
-RXSTATS_DisablePeerRPCStats
-RXSTATS_QueryRPCStatsVersion
-RXSTATS_ClearProcessRPCStats
-RXSTATS_ClearPeerRPCStats
-RXSTATS_function_names
-RXAFSCB_CallBack
-StartRXAFSCB_CallBack
-EndRXAFSCB_CallBack
-RXAFSCB_InitCallBackState
-RXAFSCB_Probe
-StartRXAFSCB_Probe
-EndRXAFSCB_Probe
-RXAFSCB_GetLock
-RXAFSCB_GetCE
-RXAFSCB_XStatsVersion
-RXAFSCB_GetXStats
-RXAFSCB_InitCallBackState2
-RXAFSCB_WhoAreYou
-RXAFSCB_InitCallBackState3
-RXAFSCB_ProbeUuid
-StartRXAFSCB_ProbeUuid
-EndRXAFSCB_ProbeUuid
-RXAFSCB_GetServerPrefs
-RXAFSCB_GetCellServDB
-RXAFSCB_GetLocalCell
-RXAFSCB_GetCacheConfig
-StartRXAFS_FetchData
-EndRXAFS_FetchData
-RXAFS_FetchACL
-RXAFS_FetchStatus
-StartRXAFS_StoreData
-EndRXAFS_StoreData
-RXAFS_StoreACL
-RXAFS_StoreStatus
-RXAFS_RemoveFile
-RXAFS_CreateFile
-RXAFS_Rename
-RXAFS_Symlink
-RXAFS_Link
-RXAFS_MakeDir
-RXAFS_RemoveDir
-RXAFS_OldSetLock
-RXAFS_OldExtendLock
-RXAFS_OldReleaseLock
-RXAFS_GetStatistics
-RXAFS_GiveUpCallBacks
-RXAFS_GetVolumeInfo
-RXAFS_GetVolumeStatus
-RXAFS_SetVolumeStatus
-RXAFS_GetRootVolume
-RXAFS_CheckToken
-RXAFS_GetTime
-RXAFS_NGetVolumeInfo
-RXAFS_BulkStatus
-RXAFS_SetLock
-RXAFS_ExtendLock
-RXAFS_ReleaseLock
-RXAFS_XStatsVersion
-RXAFS_GetXStats
-RXAFS_Lookup
-RXAFS_FlushCPS
-RXAFS_DFSSymlink
-RXAFSCB_function_names
-rx_GetLocalPeers
index 8272b43267d1bb0ef04379fc3ef7ee1c2f73694f..6a45ce27614e2d9b8e358dbba6c8ce4c6f7118f9 100755 (executable)
        RXSTATS_ClearProcessRPCStats;
        RXSTATS_ClearPeerRPCStats;
        TM_GetTimeOfDay;
+       FT_GetTimeOfDay;
        strcompose;
        stolower;
        ucstring;
        rx_SetMaxSendWindow;
        rx_GetMinPeerTimeout;
        rx_SetMinPeerTimeout;
-
+       afs_xdr_array;
+       afs_xdr_bytes;
+       afs_xdr_char;
+       afs_xdr_free;
+       afs_xdr_int;
+       afs_xdr_opaque;
+       afs_xdr_short;
+       afs_xdr_string;
+       afs_xdr_vector;
     local:
        *;
 };