diff -uprN ../../libstdcxx-orig/libstdcxx/libstdc++-v3/config/os/bsd/darwin/eprintf.ver libstdc++-v3/config/os/bsd/darwin/eprintf.ver --- ../../libstdcxx-orig/libstdcxx/libstdc++-v3/config/os/bsd/darwin/eprintf.ver 1969-12-31 16:00:00.000000000 -0800 +++ libstdc++-v3/config/os/bsd/darwin/eprintf.ver 2005-08-19 15:49:02.000000000 -0700 @@ -0,0 +1 @@ + __eprintf; diff -uprN ../../libstdcxx-orig/libstdcxx/libstdc++-v3/src/Makefile.am libstdc++-v3/src/Makefile.am --- ../../libstdcxx-orig/libstdcxx/libstdc++-v3/src/Makefile.am 2005-08-19 15:05:54.000000000 -0700 +++ libstdc++-v3/src/Makefile.am 2005-08-19 15:50:31.000000000 -0700 @@ -28,10 +28,11 @@ include $(top_srcdir)/fragment.am toolexeclib_LTLIBRARIES = libstdc++.la # Symbol versioning for shared libraries. -if ENABLE_SYMVERS_GNU -version_arg = -Wl,--version-script=libstdc++-symbol.ver -version_dep = libstdc++-symbol.ver -libstdc++-symbol.ver: ${glibcxx_srcdir}/$(SYMVER_MAP) +# This could be conditional on +# ENABLE_SYMVERS_GNU || ENABLE_SYMVERS_DARWIN_EXPORT +# but automake doesn't support OR operations in conditionals. +libstdc++-symbol.ver: ${glibcxx_srcdir}/$(SYMVER_MAP) \ + $(port_specific_symbol_files) cp ${glibcxx_srcdir}/$(SYMVER_MAP) ./libstdc++-symbol.ver if test "x$(port_specific_symbol_files)" != x; then \ sed -n '1,/DO NOT DELETE/p' $@ > tmp.top; \ @@ -39,15 +40,19 @@ libstdc++-symbol.ver: ${glibcxx_srcdir} cat tmp.top $(port_specific_symbol_files) tmp.bottom > $@; \ rm tmp.top tmp.bottom; \ fi + +if ENABLE_SYMVERS_GNU +version_arg = -Wl,--version-script=libstdc++-symbol.ver +version_dep = libstdc++-symbol.ver else if ENABLE_SYMVERS_DARWIN_EXPORT version_arg = -Wl,-exported_symbols_list,libstdc++-symbol.explist version_dep = libstdc++-symbol.explist -libstdc++-symbol.explist : ${glibcxx_srcdir}/$(SYMVER_MAP) \ +libstdc++-symbol.explist : libstdc++-symbol.ver \ ${glibcxx_srcdir}/scripts/make_exports.pl \ $(libstdc___la_OBJECTS) $(libstdc___la_LIBADD) perl ${glibcxx_srcdir}/scripts/make_exports.pl \ - ${glibcxx_srcdir}/$(SYMVER_MAP) \ + libstdc++-symbol.ver \ $(libstdc___la_OBJECTS:%.lo=.libs/%.o) \ `echo $(libstdc___la_LIBADD) | \ sed 's,/\([^/.]*\)\.la,/.libs/\1.a,g'` \ @@ -152,6 +157,7 @@ sources = \ valarray-inst.cc \ wlocale-inst.cc \ wstring-inst.cc \ + compatibility.cc \ ${host_sources} \ ${host_sources_extra} @@ -168,7 +174,6 @@ libstdc___la_DEPENDENCIES = ${version_de libstdc___la_LDFLAGS = \ -version-info $(libtool_VERSION) ${version_arg} -lm - # Use special rules for the deprecated source files so that they find # deprecated include files. GLIBCXX_INCLUDE_DIR=$(glibcxx_builddir)/include diff -uprN ../../libstdcxx-orig/libstdcxx/libstdc++-v3/src/Makefile.in libstdc++-v3/src/Makefile.in --- ../../libstdcxx-orig/libstdcxx/libstdc++-v3/src/Makefile.in 2005-08-19 15:05:54.000000000 -0700 +++ libstdc++-v3/src/Makefile.in 2005-08-19 15:51:43.000000000 -0700 @@ -74,7 +74,8 @@ am__objects_3 = bitmap_allocator.lo pool istream-inst.lo istream.lo locale-inst.lo locale-misc-inst.lo \ misc-inst.lo ostream-inst.lo sstream-inst.lo streambuf-inst.lo \ streambuf.lo string-inst.lo valarray-inst.lo wlocale-inst.lo \ - wstring-inst.lo $(am__objects_1) $(am__objects_2) + wstring-inst.lo compatibility.lo $(am__objects_1) \ + $(am__objects_2) am_libstdc___la_OBJECTS = $(am__objects_3) libstdc___la_OBJECTS = $(am_libstdc___la_OBJECTS) DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) @@ -279,8 +280,6 @@ AM_CPPFLAGS = $(GLIBCXX_INCLUDES) toolexeclib_LTLIBRARIES = libstdc++.la @ENABLE_SYMVERS_DARWIN_EXPORT_FALSE@@ENABLE_SYMVERS_GNU_FALSE@version_arg = @ENABLE_SYMVERS_DARWIN_EXPORT_TRUE@@ENABLE_SYMVERS_GNU_FALSE@version_arg = -Wl,-exported_symbols_list,libstdc++-symbol.explist - -# Symbol versioning for shared libraries. @ENABLE_SYMVERS_GNU_TRUE@version_arg = -Wl,--version-script=libstdc++-symbol.ver @ENABLE_SYMVERS_DARWIN_EXPORT_FALSE@@ENABLE_SYMVERS_GNU_FALSE@version_dep = @ENABLE_SYMVERS_DARWIN_EXPORT_TRUE@@ENABLE_SYMVERS_GNU_FALSE@version_dep = libstdc++-symbol.explist @@ -351,6 +350,7 @@ sources = \ valarray-inst.cc \ wlocale-inst.cc \ wstring-inst.cc \ + compatibility.cc \ ${host_sources} \ ${host_sources_extra} @@ -670,19 +670,25 @@ uninstall-am: uninstall-info-am uninstal tags uninstall uninstall-am uninstall-info-am \ uninstall-toolexeclibLTLIBRARIES -@ENABLE_SYMVERS_GNU_TRUE@libstdc++-symbol.ver: ${glibcxx_srcdir}/$(SYMVER_MAP) -@ENABLE_SYMVERS_GNU_TRUE@ cp ${glibcxx_srcdir}/$(SYMVER_MAP) ./libstdc++-symbol.ver -@ENABLE_SYMVERS_GNU_TRUE@ if test "x$(port_specific_symbol_files)" != x; then \ -@ENABLE_SYMVERS_GNU_TRUE@ sed -n '1,/DO NOT DELETE/p' $@ > tmp.top; \ -@ENABLE_SYMVERS_GNU_TRUE@ sed -n '/DO NOT DELETE/,$$p' $@ > tmp.bottom; \ -@ENABLE_SYMVERS_GNU_TRUE@ cat tmp.top $(port_specific_symbol_files) tmp.bottom > $@; \ -@ENABLE_SYMVERS_GNU_TRUE@ rm tmp.top tmp.bottom; \ -@ENABLE_SYMVERS_GNU_TRUE@ fi -@ENABLE_SYMVERS_DARWIN_EXPORT_TRUE@@ENABLE_SYMVERS_GNU_FALSE@libstdc++-symbol.explist : ${glibcxx_srcdir}/$(SYMVER_MAP) \ + +# Symbol versioning for shared libraries. +# This could be conditional on +# ENABLE_SYMVERS_GNU || ENABLE_SYMVERS_DARWIN_EXPORT +# but automake doesn't support OR operations in conditionals. +libstdc++-symbol.ver: ${glibcxx_srcdir}/$(SYMVER_MAP) \ + $(port_specific_symbol_files) + cp ${glibcxx_srcdir}/$(SYMVER_MAP) ./libstdc++-symbol.ver + if test "x$(port_specific_symbol_files)" != x; then \ + sed -n '1,/DO NOT DELETE/p' $@ > tmp.top; \ + sed -n '/DO NOT DELETE/,$$p' $@ > tmp.bottom; \ + cat tmp.top $(port_specific_symbol_files) tmp.bottom > $@; \ + rm tmp.top tmp.bottom; \ + fi +@ENABLE_SYMVERS_DARWIN_EXPORT_TRUE@@ENABLE_SYMVERS_GNU_FALSE@libstdc++-symbol.explist : libstdc++-symbol.ver \ @ENABLE_SYMVERS_DARWIN_EXPORT_TRUE@@ENABLE_SYMVERS_GNU_FALSE@ ${glibcxx_srcdir}/scripts/make_exports.pl \ @ENABLE_SYMVERS_DARWIN_EXPORT_TRUE@@ENABLE_SYMVERS_GNU_FALSE@ $(libstdc___la_OBJECTS) $(libstdc___la_LIBADD) @ENABLE_SYMVERS_DARWIN_EXPORT_TRUE@@ENABLE_SYMVERS_GNU_FALSE@ perl ${glibcxx_srcdir}/scripts/make_exports.pl \ -@ENABLE_SYMVERS_DARWIN_EXPORT_TRUE@@ENABLE_SYMVERS_GNU_FALSE@ ${glibcxx_srcdir}/$(SYMVER_MAP) \ +@ENABLE_SYMVERS_DARWIN_EXPORT_TRUE@@ENABLE_SYMVERS_GNU_FALSE@ libstdc++-symbol.ver \ @ENABLE_SYMVERS_DARWIN_EXPORT_TRUE@@ENABLE_SYMVERS_GNU_FALSE@ $(libstdc___la_OBJECTS:%.lo=.libs/%.o) \ @ENABLE_SYMVERS_DARWIN_EXPORT_TRUE@@ENABLE_SYMVERS_GNU_FALSE@ `echo $(libstdc___la_LIBADD) | \ @ENABLE_SYMVERS_DARWIN_EXPORT_TRUE@@ENABLE_SYMVERS_GNU_FALSE@ sed 's,/\([^/.]*\)\.la,/.libs/\1.a,g'` \ diff -uprN ../../libstdcxx-orig/libstdcxx/libstdc++-v3/src/compatibility.cc libstdc++-v3/src/compatibility.cc --- ../../libstdcxx-orig/libstdcxx/libstdc++-v3/src/compatibility.cc 1969-12-31 16:00:00.000000000 -0800 +++ libstdc++-v3/src/compatibility.cc 2005-08-19 15:51:14.000000000 -0700 @@ -0,0 +1,24 @@ +#ifdef __APPLE__ +#if (defined(__ppc__) || defined (__ppc64__)) && defined (PIC) +/* __eprintf shouldn't have been made visible from libstdc++, or + anywhere, but on Mac OS X 10.4 it was defined in + libstdc++.6.0.3.dylib; so on that platform we have to keep defining + it to keep binary compatibility. We can't just put the libgcc + version in the export list, because that doesn't work; once a + symbol is marked as hidden, it stays that way. */ + +#include <cstdio> +#include <cstdlib> + +using namespace std; + +extern "C" void +__eprintf (const char *string, const char *expression, + unsigned int line, const char *filename) +{ + fprintf (stderr, string, expression, line, filename); + fflush (stderr); + abort (); +} +#endif +#endif /* __APPLE__ */ --- ../../libstdcxx-orig/libstdcxx/libstdc++-v3/configure.host 2005-01-13 14:48:14.000000000 -0800 +++ libstdc++-v3/configure.host 2005-08-19 17:15:07.000000000 -0700 @@ -180,12 +180,14 @@ case "${host_os}" in # treatment of coalesced symbols. OPT_LDFLAGS="${OPT_LDFLAGS} -Wl,-single_module -Wl,-flat_namespace" os_include_dir="os/bsd/darwin" + port_specific_symbol_files="\$(srcdir)/../config/os/bsd/darwin/eprintf.ver" ;; darwin[89] | darwin[89].* | darwin[1-9][0-9]* ) # On Darwin, performance is improved if libstdc++ is single-module, # and on 8+ compatibility is better if not -flat_namespace. OPT_LDFLAGS="${OPT_LDFLAGS} -Wl,-single_module" os_include_dir="os/bsd/darwin" + port_specific_symbol_files="\$(srcdir)/../config/os/bsd/darwin/eprintf.ver" ;; *djgpp*) # leading * picks up "msdosdjgpp" os_include_dir="os/djgpp"