Makefile.am (sources): Add globals.cc.
authorMark Mitchell <mark@codesourcery.com>
Thu, 25 Jan 2001 22:39:29 +0000 (22:39 +0000)
committerMark Mitchell <mmitchel@gcc.gnu.org>
Thu, 25 Jan 2001 22:39:29 +0000 (22:39 +0000)
* 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
libstdc++-v3/src/Makefile.am
libstdc++-v3/src/Makefile.in
libstdc++-v3/src/globals.cc [new file with mode: 0644]
libstdc++-v3/src/ios.cc

index 9478830cc3c51b50a376e237815b37d15b1cdfc0..5031dbbb6a2c532d5dd1bd38364d845b0c5eec41 100644 (file)
@@ -1,3 +1,17 @@
+2001-01-25  Mark Mitchell  <mark@codesourcery.com>
+
+       * 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  <pme@sources.redhat.com>
 
        * include/bits/std_iterator.h:  Do not include stl_relops.h.
index b66c6ee6f6ecc97ee852dafe3f3d60ebeae10f12..945b9627b77ec846975b906cc050163ab484f8f9 100644 (file)
@@ -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
index 7b354c2e7f979e326ffa47ffb68e7696d73a95bc..a9f2aa71071838db5e87dcbec4be128f6a68ba22 100644 (file)
@@ -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 (file)
index 0000000..bd24d8f
--- /dev/null
@@ -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 <istream>
+#include <ostream>
+
+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
+}
index d61c2635351c5c90c22923182e2f3b3e5d072249..fe5d63065f6b6616853918ddfeda5e8e311a3c60 100644 (file)
@@ -35,6 +35,7 @@
 #include <bits/std_ostream.h>
 #include <bits/std_istream.h>
 #include <bits/std_fstream.h>
+#include <stdio.h>
 
 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()