Check-in [fa022cbc5d]
Overview
Comment:More work towards getting Mac OS X to export only the symbols we care about
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1:fa022cbc5d3145d5a144087402b5d567edbf5a4a
User & Date: rkeene on 2011-09-08 03:42:02
Other Links: manifest | tags
Context
2011-09-08
03:48
CACKey 0.6.5 check-in: ed5f20c85e user: rkeene tags: trunk, 0.6.5
03:42
More work towards getting Mac OS X to export only the symbols we care about check-in: fa022cbc5d user: rkeene tags: trunk
03:01
CACKey 0.6.4

Moved determining how to weaken and strip symbols into an autoconf macro

Added support for stripping symbols to Mac OS X builds check-in: 521abe23e2 user: rkeene tags: trunk, 0.6.4

Changes

Modified Makefile.in from [62d627a191] to [6f86f7629d].

    51     51   	rm -f libcackey.@SHOBJEXT@.def libcackey_g.@SHOBJEXT@.def
    52     52   	rm -f libcackey.@SHOBJEXT@.a libcackey_g.@SHOBJEXT@.a
    53     53   	rm -f cackey.o cackey_g.o
    54     54   	rm -f test
    55     55   	rm -f splint-cackey.txt
    56     56   
    57     57   distclean: clean
    58         -	rm -f config.log config.status config.h Makefile
           58  +	rm -f config.log config.status config.h Makefile libcackey.syms
    59     59   
    60     60   mrproper: distclean
    61     61   	rm -f configure config.h.in aclocal.m4 *~
    62     62   
    63     63   .PHONY: all clean distclean mrproper install

Modified aclocal/dc_versionscript.m4 from [7b1ee0452b] to [4ebe0b5820].

     1      1   AC_DEFUN(DC_SETVERSIONSCRIPT, [
     2      2   	VERSIONSCRIPT="$1"
            3  +	SYMFILE="$2"
            4  +
            5  +	delete_symfile='0'
            6  +	if test ! -f "${SYMFILE}"; then
            7  +		delete_symfile='1'
            8  +
            9  +		echo '' > "${SYMFILE}"
           10  +	fi
     3     11   
     4     12   	SAVE_LDFLAGS="${LDFLAGS}"
     5     13   
     6     14   	AC_MSG_CHECKING([for how to set version script])
     7     15   
     8         -	for tryaddldflags in "-Wl,--version-script -Wl,${VERSIONSCRIPT}"; do
           16  +	for tryaddldflags in "-Wl,--version-script -Wl,${VERSIONSCRIPT}" "-Wl,-exported_symbols_list -Wl,${SYMFILE}"; do
     9     17   		LDFLAGS="${SAVE_LDFLAGS} ${tryaddldflags}"
    10     18   		AC_TRY_LINK([], [], [
    11     19   			addldflags="${tryaddldflags}"
    12     20   
    13     21   			break
    14     22   		])
    15     23   	done
           24  +
           25  +	if test "${delete_symfile}" = "1"; then
           26  +		rm -f "${SYMFILE}"
           27  +	fi
    16     28   
    17     29   	if test -n "${addldflags}"; then
    18     30   		LDFLAGS="${SAVE_LDFLAGS} ${addldflags}"
    19     31   		AC_MSG_RESULT($addldflags)
    20     32   	else
    21     33   		LDFLAGS="${SAVE_LDFLAGS}"
    22     34   		AC_MSG_RESULT([don't know])
................................................................................
    32     44   
    33     45   	if test "x${STRIP}" = "xfalse"; then
    34     46   		STRIP="${OBJCOPY}"
    35     47   	fi
    36     48   
    37     49   	WEAKENSYMS='true'
    38     50   	REMOVESYMS='true'
           51  +	SYMPREFIX=''
    39     52   
    40     53   	case $host_os in
    41     54   		darwin*)
    42         -			REMOVESYMS="${STRIP} -s ${SYMFILE}"
           55  +			REMOVESYMS="${STRIP} -i -u -s ${SYMFILE}"
           56  +			SYMPREFIX="_"
    43     57   			;;
    44     58   		*)
    45     59   			if test "x${OBJCOPY}" != "xfalse"; then
    46     60   				WEAKENSYMS="${OBJCOPY} --keep-global-symbols=${SYMFILE}"
    47     61   				REMOVESYMS="${OBJCOPY} --discard-all"
    48     62   			elif test "x${STRIP}" != "xfalse"; then
    49     63   				REMOVESYMS="${STRIP} -x"
    50     64   			fi
    51     65   			;;
    52     66   	esac
    53     67   
    54     68   	AC_SUBST(WEAKENSYMS)
    55     69   	AC_SUBST(REMOVESYMS)
           70  +	AC_SUBST(SYMPREFIX)
    56     71   ])

Modified configure.ac from [f51a90fd29] to [108697b5ff].

   139    139   		AC_MSG_RESULT(failed)
   140    140   
   141    141   		AC_MSG_FAILURE([simple PC/SC program failed])
   142    142   	]
   143    143   )
   144    144   
   145    145   dnl Set version script, to limit the scope of symbols
   146         -DC_SETVERSIONSCRIPT(libcackey.vers)
          146  +DC_SETVERSIONSCRIPT(libcackey.vers, libcackey.syms)
   147    147   
   148    148   dnl Upate LDFLAGS to include setting the run-time linker path to the same as our compile-time linker
   149    149   DC_SYNC_RPATH
   150    150   
   151    151   dnl If we updated LIBOBJS, update SHLIBOBJS -- must be last.
   152    152   DC_SYNC_SHLIBOBJS
   153    153   
   154    154   dnl Produce Makefile
   155         -AC_OUTPUT(Makefile)
          155  +AC_OUTPUT(Makefile libcackey.syms)

Modified libcackey.syms.in from [cfac1b7560] to [546f0d7df5].

     1         -C_CancelFunction
     2         -C_CloseAllSessions
     3         -C_CloseSession
     4         -C_CopyObject
     5         -C_CreateObject
     6         -C_Decrypt
     7         -C_DecryptDigestUpdate
     8         -C_DecryptFinal
     9         -C_DecryptInit
    10         -C_DecryptUpdate
    11         -C_DecryptVerifyUpdate
    12         -C_DeriveKey
    13         -C_DestroyObject
    14         -C_Digest
    15         -C_DigestEncryptUpdate
    16         -C_DigestFinal
    17         -C_DigestInit
    18         -C_DigestKey
    19         -C_DigestUpdate
    20         -C_Encrypt
    21         -C_EncryptFinal
    22         -C_EncryptInit
    23         -C_EncryptUpdate
    24         -C_Finalize
    25         -C_FindObjects
    26         -C_FindObjectsFinal
    27         -C_FindObjectsInit
    28         -C_GenerateKey
    29         -C_GenerateKeyPair
    30         -C_GenerateRandom
    31         -C_GetAttributeValue
    32         -C_GetFunctionList
    33         -C_GetFunctionStatus
    34         -C_GetInfo
    35         -C_GetMechanismInfo
    36         -C_GetMechanismList
    37         -C_GetObjectSize
    38         -C_GetOperationState
    39         -C_GetSessionInfo
    40         -C_GetSlotInfo
    41         -C_GetSlotList
    42         -C_GetTokenInfo
    43         -C_InitPIN
    44         -C_InitToken
    45         -C_Initialize
    46         -C_Login
    47         -C_Logout
    48         -C_OpenSession
    49         -C_SeedRandom
    50         -C_SetAttributeValue
    51         -C_SetOperationState
    52         -C_SetPIN
    53         -C_Sign
    54         -C_SignEncryptUpdate
    55         -C_SignFinal
    56         -C_SignInit
    57         -C_SignRecover
    58         -C_SignRecoverInit
    59         -C_SignUpdate
    60         -C_UnwrapKey
    61         -C_Verify
    62         -C_VerifyFinal
    63         -C_VerifyInit
    64         -C_VerifyRecover
    65         -C_VerifyRecoverInit
    66         -C_VerifyUpdate
    67         -C_WaitForSlotEvent
    68         -C_WrapKey
            1  +@SYMPREFIX@C_CancelFunction
            2  +@SYMPREFIX@C_CloseAllSessions
            3  +@SYMPREFIX@C_CloseSession
            4  +@SYMPREFIX@C_CopyObject
            5  +@SYMPREFIX@C_CreateObject
            6  +@SYMPREFIX@C_Decrypt
            7  +@SYMPREFIX@C_DecryptDigestUpdate
            8  +@SYMPREFIX@C_DecryptFinal
            9  +@SYMPREFIX@C_DecryptInit
           10  +@SYMPREFIX@C_DecryptUpdate
           11  +@SYMPREFIX@C_DecryptVerifyUpdate
           12  +@SYMPREFIX@C_DeriveKey
           13  +@SYMPREFIX@C_DestroyObject
           14  +@SYMPREFIX@C_Digest
           15  +@SYMPREFIX@C_DigestEncryptUpdate
           16  +@SYMPREFIX@C_DigestFinal
           17  +@SYMPREFIX@C_DigestInit
           18  +@SYMPREFIX@C_DigestKey
           19  +@SYMPREFIX@C_DigestUpdate
           20  +@SYMPREFIX@C_Encrypt
           21  +@SYMPREFIX@C_EncryptFinal
           22  +@SYMPREFIX@C_EncryptInit
           23  +@SYMPREFIX@C_EncryptUpdate
           24  +@SYMPREFIX@C_Finalize
           25  +@SYMPREFIX@C_FindObjects
           26  +@SYMPREFIX@C_FindObjectsFinal
           27  +@SYMPREFIX@C_FindObjectsInit
           28  +@SYMPREFIX@C_GenerateKey
           29  +@SYMPREFIX@C_GenerateKeyPair
           30  +@SYMPREFIX@C_GenerateRandom
           31  +@SYMPREFIX@C_GetAttributeValue
           32  +@SYMPREFIX@C_GetFunctionList
           33  +@SYMPREFIX@C_GetFunctionStatus
           34  +@SYMPREFIX@C_GetInfo
           35  +@SYMPREFIX@C_GetMechanismInfo
           36  +@SYMPREFIX@C_GetMechanismList
           37  +@SYMPREFIX@C_GetObjectSize
           38  +@SYMPREFIX@C_GetOperationState
           39  +@SYMPREFIX@C_GetSessionInfo
           40  +@SYMPREFIX@C_GetSlotInfo
           41  +@SYMPREFIX@C_GetSlotList
           42  +@SYMPREFIX@C_GetTokenInfo
           43  +@SYMPREFIX@C_InitPIN
           44  +@SYMPREFIX@C_InitToken
           45  +@SYMPREFIX@C_Initialize
           46  +@SYMPREFIX@C_Login
           47  +@SYMPREFIX@C_Logout
           48  +@SYMPREFIX@C_OpenSession
           49  +@SYMPREFIX@C_SeedRandom
           50  +@SYMPREFIX@C_SetAttributeValue
           51  +@SYMPREFIX@C_SetOperationState
           52  +@SYMPREFIX@C_SetPIN
           53  +@SYMPREFIX@C_Sign
           54  +@SYMPREFIX@C_SignEncryptUpdate
           55  +@SYMPREFIX@C_SignFinal
           56  +@SYMPREFIX@C_SignInit
           57  +@SYMPREFIX@C_SignRecover
           58  +@SYMPREFIX@C_SignRecoverInit
           59  +@SYMPREFIX@C_SignUpdate
           60  +@SYMPREFIX@C_UnwrapKey
           61  +@SYMPREFIX@C_Verify
           62  +@SYMPREFIX@C_VerifyFinal
           63  +@SYMPREFIX@C_VerifyInit
           64  +@SYMPREFIX@C_VerifyRecover
           65  +@SYMPREFIX@C_VerifyRecoverInit
           66  +@SYMPREFIX@C_VerifyUpdate
           67  +@SYMPREFIX@C_WaitForSlotEvent
           68  +@SYMPREFIX@C_WrapKey