From bfd7f4ecc75404c80b575bb9bd35cad4e78e5a1f Mon Sep 17 00:00:00 2001 From: Mark Mitchell Date: Thu, 25 Jan 2001 22:39:29 +0000 Subject: [PATCH] Makefile.am (sources): Add globals.cc. * src/Makefile.am (sources): Add globals.cc. * src/Makefile.in: Regenerated. * src/globals.cc: New file. * src/ios.cc (cin): Don't define here, just declare extern. (cout): Likewise. (cerr): Likewise. (clog): Likewise. (wcin): Likewise. (wcout): Likewise. (wcerr): Likewise. (wclog): Likewise. From-SVN: r39275 --- libstdc++-v3/ChangeLog | 14 ++++++++++ libstdc++-v3/src/Makefile.am | 3 ++- libstdc++-v3/src/Makefile.in | 8 +++--- libstdc++-v3/src/globals.cc | 61 ++++++++++++++++++++++++++++++++++++++++++++ libstdc++-v3/src/ios.cc | 17 ++++++------ 5 files changed, 90 insertions(+), 13 deletions(-) create mode 100644 libstdc++-v3/src/globals.cc diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 9478830..5031dbb 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,17 @@ +2001-01-25 Mark Mitchell + + * src/Makefile.am (sources): Add globals.cc. + * src/Makefile.in: Regenerated. + * src/globals.cc: New file. + * src/ios.cc (cin): Don't define here, just declare extern. + (cout): Likewise. + (cerr): Likewise. + (clog): Likewise. + (wcin): Likewise. + (wcout): Likewise. + (wcerr): Likewise. + (wclog): Likewise. + 2001-01-25 Phil Edwards * include/bits/std_iterator.h: Do not include stl_relops.h. diff --git a/libstdc++-v3/src/Makefile.am b/libstdc++-v3/src/Makefile.am index b66c6ee..945b962 100644 --- a/libstdc++-v3/src/Makefile.am +++ b/libstdc++-v3/src/Makefile.am @@ -21,7 +21,7 @@ ## Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, ## USA. -## $Id: Makefile.am,v 1.63 2001/01/10 17:24:11 bkoz Exp $ +## $Id: Makefile.am,v 1.64 2001/01/11 07:27:49 bkoz Exp $ AUTOMAKE_OPTIONS = 1.3 gnits MAINT_CHARSET = latin1 @@ -176,6 +176,7 @@ sources = \ limitsMEMBERS.cc \ complex_io.cc \ stdexcept.cc bitset.cc \ + globals.cc \ c++io.cc ios.cc strstream.cc \ locale.cc localename.cc codecvt.cc \ locale-inst.cc stl-inst.cc misc-inst.cc valarray-inst.cc string-inst.cc diff --git a/libstdc++-v3/src/Makefile.in b/libstdc++-v3/src/Makefile.in index 7b354c2..a9f2aa7 100644 --- a/libstdc++-v3/src/Makefile.in +++ b/libstdc++-v3/src/Makefile.in @@ -170,7 +170,7 @@ std_headers = algorithm bitset complex deque fstream functional iomanip ios i build_headers = bits/std_limits.h bits/c++config.h bits/c++io.h bits/c++threads.h bits/atomicity.h bits/os_defines.h bits/ctype_base.h bits/ctype_noninline.h bits/ctype_inline.h -sources = limitsMEMBERS.cc complex_io.cc stdexcept.cc bitset.cc c++io.cc ios.cc strstream.cc locale.cc localename.cc codecvt.cc locale-inst.cc stl-inst.cc misc-inst.cc valarray-inst.cc string-inst.cc +sources = limitsMEMBERS.cc complex_io.cc stdexcept.cc bitset.cc globals.cc c++io.cc ios.cc strstream.cc locale.cc localename.cc codecvt.cc locale-inst.cc stl-inst.cc misc-inst.cc valarray-inst.cc string-inst.cc wstring_sources = wstring-inst.cc @@ -259,9 +259,9 @@ libinst_wstring_la_LDFLAGS = libinst_wstring_la_LIBADD = libinst_wstring_la_OBJECTS = wstring-inst.lo libstdc___la_OBJECTS = limitsMEMBERS.lo complex_io.lo stdexcept.lo \ -bitset.lo c++io.lo ios.lo strstream.lo locale.lo localename.lo \ -codecvt.lo locale-inst.lo stl-inst.lo misc-inst.lo valarray-inst.lo \ -string-inst.lo +bitset.lo globals.lo c++io.lo ios.lo strstream.lo locale.lo \ +localename.lo codecvt.lo locale-inst.lo stl-inst.lo misc-inst.lo \ +valarray-inst.lo string-inst.lo CXXFLAGS = @CXXFLAGS@ CXXCOMPILE = $(CXX) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) CXXLD = $(CXX) diff --git a/libstdc++-v3/src/globals.cc b/libstdc++-v3/src/globals.cc new file mode 100644 index 0000000..bd24d8f --- /dev/null +++ b/libstdc++-v3/src/globals.cc @@ -0,0 +1,61 @@ +// Copyright (C) 2001 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 2, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING. If not, write to the Free +// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, +// USA. + +// As a special exception, you may use this file as part of a free software +// library without restriction. Specifically, if other files instantiate +// templates or use macros or inline functions from this file, or you compile +// this file and link it with other files to produce an executable, this +// file does not by itself cause the resulting executable to be covered by +// the GNU General Public License. This exception does not however +// invalidate any other reasons why the executable file might be covered by +// the GNU General Public License. + +// On AIX, and perhaps other systems, library initialization order +// is not guaranteed. For example, the static initializers for the +// main program might run before the static initializers for this +// library. That means that we cannot rely on static initialization in +// the library; there is no guarantee that things will get initialized +// in time. This file contains definitions of all global variables +// that require initialization as arrays of characters. + +#include +#include + +namespace std { + typedef char fake_istream[sizeof (istream)] + __attribute__ ((aligned (__alignof__ (istream)))); + typedef char fake_ostream[sizeof (ostream)] + __attribute__ ((aligned (__alignof__ (ostream)))); + + fake_istream cin; + fake_ostream cout; + fake_ostream cerr; + fake_ostream clog; + +#ifdef _GLIBCPP_USE_WCHAR_T + typedef char fake_wistream[sizeof (wistream)] + __attribute__ ((aligned (__alignof__ (wistream)))); + typedef char fake_wostream[sizeof (wostream)] + __attribute__ ((aligned (__alignof__ (wostream)))); + + fake_wistream wcin; + fake_wostream wcout; + fake_wostream wcerr; + fake_wostream wclog; +#endif +} diff --git a/libstdc++-v3/src/ios.cc b/libstdc++-v3/src/ios.cc index d61c263..fe5d630 100644 --- a/libstdc++-v3/src/ios.cc +++ b/libstdc++-v3/src/ios.cc @@ -35,6 +35,7 @@ #include #include #include +#include namespace std { @@ -109,15 +110,15 @@ namespace std int ios_base::Init::_S_ios_base_init = 0; bool ios_base::Init::_S_synced_with_stdio = true; - istream cin(NULL); - ostream cout(NULL); - ostream cerr(NULL); - ostream clog(NULL); + extern istream cin; + extern ostream cout; + extern ostream cerr; + extern ostream clog; #ifdef _GLIBCPP_USE_WCHAR_T - wistream wcin(NULL); - wostream wcout(NULL); - wostream wcerr(NULL); - wostream wclog(NULL); + extern wistream wcin; + extern wostream wcout; + extern wostream wcerr; + extern wostream wclog; #endif ios_base::failure::failure(const string& __str) throw() -- 2.7.4