implement symbol export restrictions for Solaris
authorKen Raeburn <raeburn@mit.edu>
Wed, 28 Jun 2006 05:18:38 +0000 (05:18 +0000)
committerKen Raeburn <raeburn@mit.edu>
Wed, 28 Jun 2006 05:18:38 +0000 (05:18 +0000)
* lib.in (solaris.versions): New target.  Currently no version id, just a
symbol list.
* libnover.in (solaris.versions): New target.
(clean-libs): Delete it.
* shlib.conf (*-*-solaris*): Use solaris.versions as map file.
(clean-libs): Delete it.

ticket: new

git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@18245 dc483132-0cff-0310-8789-dd5450dbe970

src/config/lib.in
src/config/libnover.in
src/config/shlib.conf

index 5d362743daa2f77a7bd561825b3e32a3527f2383..b3e6128104174b0ac3b657531ecd53cb589cf3c4 100644 (file)
@@ -59,6 +59,11 @@ binutils.versions: $(SHLIB_EXPORT_FILE) Makefile
        echo >> binutils.versions "};"
        echo >> binutils.versions "HIDDEN { local: __*; _rest*; _save*; *; };"
 
+solaris.versions: $(SHLIB_EXPORT_FILE) Makefile
+       echo >  solaris.versions "{ global:"
+       sed  >> solaris.versions < $(SHLIB_EXPORT_FILE) "s/$$/;/"
+       echo >> solaris.versions " local: *; };"
+
 darwin.exports: $(SHLIB_EXPORT_FILE) Makefile
        sed > darwin-exports.tmp < $(SHLIB_EXPORT_FILE) "s/^/_/"
        $(MV) darwin-exports.tmp darwin.exports
@@ -124,7 +129,7 @@ clean-libs:
        $(RM) lib$(LIBBASE)$(SHLIBSEXT)
        $(RM) lib$(LIBBASE)$(SHLIBEXT)
        $(RM) lib$(LIBBASE)$(PFLIBEXT)
-       $(RM) binutils.versions osf1.exports
+       $(RM) binutils.versions osf1.exports solaris.versions
 
 clean-liblinks:
        $(RM) $(TOPLIBD)/lib$(LIBBASE)$(STLIBEXT)
index 09c42dcc86a13f6b074c16d5153bcf44e500c158..a9685136a9585875549a5ee391a5007fc75428a8 100644 (file)
@@ -48,6 +48,11 @@ binutils.versions: $(SHLIB_EXPORT_FILE) Makefile
        sed  >> binutils.versions < $(SHLIB_EXPORT_FILE) "s/$$/;/"
        echo >> binutils.versions "};"
 
+solaris.versions: $(SHLIB_EXPORT_FILE) Makefile
+       echo >  solaris.versions "{ global:"
+       sed  >> solaris.versions < $(SHLIB_EXPORT_FILE) "s/$$/;/"
+       echo >> solaris.versions " local: *; };"
+
 osf1.exports: $(SHLIB_EXPORT_FILE) Makefile
        $(RM) osf1.tmp osf1.exports
        sed "s/^/-exported_symbol /" < $(SHLIB_EXPORT_FILE) > osf1.tmp
@@ -88,7 +93,7 @@ all-libs: $(LIBBASE)$(DYNOBJEXT) # $(LIBLIST)
 
 clean-libs:
        $(RM) $(LIBBASE)$(SHLIBEXT)
-       $(RM) binutils.versions osf1.exports
+       $(RM) binutils.versions osf1.exports solaris.versions
 
 install-libs: $(LIBINSTLIST)
 install-shared:
index fbd93393aa763f60c72e1891ce18310d28d7da95..8c3391636c92a1e3904d91ab491e755c2b630afa 100644 (file)
@@ -297,10 +297,12 @@ mips-*-netbsd*)
        if test "$krb5_cv_prog_gcc" = yes; then
                PICFLAGS=-fPIC
                LDCOMBINE='$(CC) $(CFLAGS) -shared -h $(LIBPREFIX)$(LIBBASE)$(SHLIBSEXT)'
+               LDCOMBINE_TAIL='$(LDFLAGS) -Wl,-M,solaris.versions'
        else
                PICFLAGS=-KPIC
                # Solaris cc doesn't default to stuffing the SONAME field...
                LDCOMBINE='$(CC) $(CFLAGS) -dy -G -z text -h $(LIBPREFIX)$(LIBBASE)$(SHLIBSEXT) $$initfini'
+               LDCOMBINE_TAIL='$(LDFLAGS) -M solaris.versions'
                #
                case $krb5_cv_host in
                *-*-solaris2.[1-7] | *-*-solaris2.[1-7].*)
@@ -313,7 +315,7 @@ mips-*-netbsd*)
                    ;;
                esac
        fi
-       LDCOMBINE_TAIL='$(LDFLAGS)'
+       SHLIB_EXPORT_FILE_DEP=solaris.versions
        SHLIBVEXT='.so.$(LIBMAJOR).$(LIBMINOR)'
        SHLIBSEXT='.so.$(LIBMAJOR)'
        SHLIBEXT=.so