]> oss.titaniummirror.com Git - msp430-gcc.git/blobdiff - libstdc++-v3/docs/html/faq/index.html
Imported gcc-4.4.3
[msp430-gcc.git] / libstdc++-v3 / docs / html / faq / index.html
diff --git a/libstdc++-v3/docs/html/faq/index.html b/libstdc++-v3/docs/html/faq/index.html
deleted file mode 100644 (file)
index f472bfc..0000000
+++ /dev/null
@@ -1,1042 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!DOCTYPE html
-          PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
-   <meta name="KEYWORDS" content="libstdc++, libstdc++-v3, GCC, g++, libg++, STL" />
-   <meta name="DESCRIPTION" content="FAQ for the GNU libstdc++ effort." />
-   <title>libstdc++-v3 FAQ</title>
-<link rel="StyleSheet" href="../lib3styles.css" />
-<!-- 
-  ** Locations of "the most recent snapshot is the Nth" text are 
-  ** answers 1_1, 1_4, 4_1.
--->
-</head>
-<body>
-
-<h1 class="centered">libstdc++ Frequently Asked Questions</h1>
-
-<p>The latest version of this document is always available at
-   <a href="http://gcc.gnu.org/onlinedocs/libstdc++/faq/">
-   http://gcc.gnu.org/onlinedocs/libstdc++/faq/</a>.  The main documentation
-   page is at
-   <a href="http://gcc.gnu.org/onlinedocs/libstdc++/documentation.html">
-   http://gcc.gnu.org/onlinedocs/libstdc++/documentation.html</a>.
-</p>
-
-<p>To the <a href="http://gcc.gnu.org/libstdc++/">libstdc++-v3 homepage</a>.
-</p>
-
-<!-- ####################################################### -->
-<hr />
-<h1>Questions</h1>
-<ol>
-   <li><a href="#1_0">General Information</a>
-   <!-- I suspect these will mostly be links to/into existing documents. -->
-   <ol>
-      <li><a href="#1_1">What is libstdc++-v3?</a> </li>
-      <li><a href="#1_2">Why should I use libstdc++?</a> </li>
-      <li><a href="#1_3">Who's in charge of it?</a> </li>
-      <li><a href="#1_4">How do I get libstdc++?</a> </li>
-      <li><a href="#1_5">When is libstdc++ going to be finished?</a> </li>
-      <li><a href="#1_6">How do I contribute to the effort?</a> </li>
-      <li><a href="#1_7">What happened to libg++?  I need that!</a> </li>
-      <li><a href="#1_8">What if I have more questions?</a> </li>
-      <li><a href="#1_9">What are the license terms for libstdc++-v3?</a> </li>
-   </ol>
-   </li>
-
-   <li><a href="#2_0">Installation</a>
-      <ol>
-         <li><a href="#2_1">How do I install libstdc++-v3?</a> </li>
-         <li><a href="#2_2">[removed]</a> </li>
-         <li><a href="#2_3">What is this CVS thing that you keep 
-                            mentioning?</a> </li>
-         <li><a href="#2_4">How do I know if it works?</a> </li>
-         <li><a href="#2_5">This library is HUGE!  And what's libsupc++?</a> </li>
-      </ol>
-   </li>
-
-   <li><a href="#3_0">Platform-Specific Issues</a>
-      <ol>
-         <li><a href="#3_1">Can libstdc++-v3 be used with &lt;my
-                            favorite compiler&gt;?</a> </li>
-         <li><a href="#3_2">[removed]</a> </li>
-         <li><a href="#3_3">[removed]</a> </li>
-         <li><a href="#3_4">I can't use 'long long' on Solaris</a> </li>
-         <li><a href="#3_5"><code>_XOPEN_SOURCE</code> /
-                            <code>_GNU_SOURCE</code> / etc is always defined</a>
-         </li>
-         <li><a href="#3_6">OS X ctype.h is broken!  How can I hack it?</a></li>
-         <li><a href="#3_7">Threading is broken on i386</a></li>
-      </ol>
-   </li>
-
-   <li><a href="#4_0">Known Bugs and Non-Bugs</a>
-      <ol>
-         <li><a href="#4_1">What works already?</a> </li>
-         <li><a href="#4_2">Bugs in gcc/g++ (not libstdc++-v3)</a> </li>
-         <li><a href="#4_3">Bugs in the C++ language/lib specification</a> </li>
-         <li><a href="#4_4">Things in libstdc++ that only look like bugs</a><ul>
-           <li><a href="#4_4_iostreamclear">reopening a stream fails</a> </li>
-           <li><a href="#4_4_Weff">-Weffc++ complains too much</a> </li>
-           <li><a href="#4_4_rel_ops">&quot;ambiguous overloads&quot;
-                               after including an old-style header</a> </li>
-           <li><a href="#4_4_interface">The g++-3 headers are
-                               <strong>not ours</strong></a> </li>
-           <li><a href="#4_4_glibc">compilation errors from streambuf.h</a> </li>
-           <li><a href="#4_4_checks">errors about <em>*Concept</em> and
-                               <em>constraints</em> in the STL...</a> </li>
-           <li><a href="#4_4_dlsym">program crashes when using library code
-                               in a dynamically-loaded library</a> </li>
-         </ul>
-         </li>
-         <li><a href="#4_5">Aw, that's easy to fix!</a> </li>
-      </ol>
-   </li>
-
-   <li><a href="#5_0">Miscellaneous</a>
-      <ol>
-         <li><a href="#5_1">string::iterator is not char*;
-                            vector&lt;T&gt;::iterator is not T*</a> </li>
-         <li><a href="#5_2">What's next after libstdc++-v3?</a> </li>
-         <li><a href="#5_3">What about the STL from SGI?</a> </li>
-         <li><a href="#5_4">Extensions and Backward Compatibility</a> </li>
-         <li><a href="#5_5">[removed]</a> </li>
-         <li><a href="#5_6">Is libstdc++-v3 thread-safe?</a> </li>
-         <li><a href="#5_7">How do I get a copy of the ISO C++ Standard?</a> </li>
-         <li><a href="#5_8">What's an ABI and why is it so messy?</a> </li>
-      </ol>
-   </li>
-
-</ol>
-
-<hr />
-
-<!-- ####################################################### -->
-
-<h1><a name="1_0">1.0 General Information</a></h1>
-<!-- I suspect these will mostly be links to/into existing documents. -->
-   <h2><a name="1_1">1.1 What is libstdc++-v3?</a></h2>
-      <p>The GNU Standard C++ Library v3 is an
-         ongoing project to implement the ISO 14882 Standard C++ library 
-         as described in chapters 17 through 27 and annex D.  As the 
-         library reaches stable plateaus, it is captured in a snapshot
-         and released.  The latest release is
-         <a href="http://gcc.gnu.org/libstdc++/index.html#download">the
-         fourteenth snapshot</a> but newer versions have been included
-         in recent GCC releases.  For those who want to see exactly how
-         far the project has come, or just want the latest
-         bleeding-edge code, the up-to-date source is available over
-         anonymous CVS, and can even be browsed over the Web (see
-         <a href="#1_4">1.4</a> below). 
-      </p>
-      <p>The older libstdc++-v2 project is no longer maintained; the code
-         has been completely replaced and rewritten.
-         <a href="#4_4_interface">If you are using V2</a>, then you need to
-         report bugs to your system vendor, not to the V3 list.
-      </p>
-      <p>A more formal description of the V3 goals can be found in the
-         official <a href="../17_intro/DESIGN">design document</a>. 
-      </p>
-
-<hr />
-   <h2><a name="1_2">1.2 Why should I use libstdc++?</a></h2>
-      <p>The completion of the ISO C++ standardization gave the
-         C++ community a powerful set of reuseable tools in the form
-         of the C++ Standard Library.  However, all existing C++
-         implementations are (as the Draft Standard used to say)
-         &quot;incomplet and incorrekt,&quot; and many suffer from
-         limitations of the compilers that use them.
-      </p> 
-      <p>The GNU C/C++/FORTRAN/&lt;pick-a-language&gt; compiler
-         (<code>gcc</code>, <code>g++</code>, etc) is widely considered to be
-         one of the leading compilers in the world.  Its development
-         has recently been taken over by the 
-         <a href="http://gcc.gnu.org/">GCC team</a>.  All of
-         the rapid development and near-legendary
-         <a href="http://gcc.gnu.org/gcc-3.0/buildstat.html">portability</a>
-         that are the hallmarks of an open-source project are being
-         applied to libstdc++.
-      </p>
-      <p>That means that all of the Standard classes and functions
-         (such as <code>string</code>, <code>vector&lt;&gt;</code>, iostreams,
-         and algorithms) will be freely available and fully compliant.
-         Programmers will no longer need to &quot;roll their own&quot;
-         nor be worried about platform-specific incompatibilities.
-      </p>
-
-<hr />
-   <h2><a name="1_3">1.3 Who's in charge of it?</a></h2>
-      <p>The libstdc++ project is contributed to by several developers
-         all over the world, in the same way as GCC or Linux.
-         Benjamin Kosnik, Gabriel Dos Reis, Phil Edwards, Ulrich Drepper, 
-         Loren James Rittle, and Paolo Carlini are the lead maintainers of 
-         the CVS archive.
-      </p>
-      <p>Development and discussion is held on the libstdc++ mailing
-         list.  Subscribing to the list, or searching the list
-         archives, is open to everyone.  You can read instructions for
-         doing so on the <a href="http://gcc.gnu.org/libstdc++/">homepage</a>.
-         If you have questions, ideas, code, or are just curious, sign up!
-      </p>
-
-<hr />
-   <h2><a name="1_4">1.4 How do I get libstdc++?</a></h2>
-      <p>The fourteenth (and latest) snapshot of libstdc++-v3 is
-         <a href="http://gcc.gnu.org/libstdc++/index.html#download">available
-         via ftp</a>.
-      </p>
-      <p>The <a href="http://gcc.gnu.org/libstdc++/">homepage</a>
-         has instructions for retrieving the latest CVS sources, and for
-         browsing the CVS sources over the web.
-      </p>
-      <p>The subset commonly known as the Standard Template Library
-         (chapters 23 through 25, mostly) is adapted from the final release
-         of the SGI STL.
-      </p> 
-
-<hr />
-   <h2><a name="1_5">1.5 When is libstdc++ going to be finished?</a></h2>
-<!--      <p>Nathan Myers gave the best of all possible answers in <a 
-         href="http://www.deja.com/getdoc.xp?AN=469581698&fmt=text">a 
-         Usenet article</a>.</p>
-which is no longer available, thanks deja...-->
-      <p>Nathan Myers gave the best of all possible answers, responding to a
-         Usenet article asking this question:  <em>Sooner, if you help.</em>
-      </p>
-
-<hr />
-   <h2><a name="1_6">1.6 How do I contribute to the effort?</a></h2>
-      <p>Here is <a href="../17_intro/contribute.html">a
-         page devoted to this topic</a>.  Subscribing to the mailing
-         list (see above, or the homepage) is a very good idea if you
-         have something to contribute, or if you have spare time and
-         want to help.  Contributions don't have to be in the form of
-         source code; anybody who is willing to help write
-         documentation, for example, or has found a bug in code that
-         we all thought was working, is more than welcome!
-      </p> 
-
-<hr />
-   <h2><a name="1_7">1.7 What happened to libg++?  I need that!</a></h2>
-      <p>The most recent libg++ README states that libg++ is no longer
-         being actively maintained.  It should not be used for new
-         projects, and is only being kicked along to support older code.
-      </p>
-      <p>The libg++ was designed and created when there was no Standard
-         to provide guidance.  Classes like linked lists are now provided
-         for by <code>list&lt;T&gt;</code> and do not need to be created by
-         <code>genclass</code>.  (For that matter, templates exist now and
-         are well-supported, whereas genclass (mostly) predates them.)
-      </p>
-      <p>There are other classes in libg++ that are not specified in the
-         ISO Standard (e.g., statistical analysis).  While there are a
-         lot of really useful things that are used by a lot of people
-         (e.g., statistics :-), the Standards Committee couldn't include
-         everything, and so a lot of those &quot;obvious&quot; classes
-         didn't get included.
-      </p>
-      <p>Since libstdc++ is an implementation of the Standard Library, we
-         have no plans at this time to include non-Standard utilities
-         in the implementation, however handy they are.  (The extensions
-         provided in the SGI STL aren't maintained by us and don't get
-         a lot of our attention, because they don't require a lot of our
-         time.)  It is entirely plausable that the &quot;useful stuff&quot;
-         from libg++ might be extracted into an updated utilities library,
-         but nobody has stated such a project yet.
-      </p>
-      <!-- The advertisement, so to speak, might have to go.  Hmmmmm.  -->
-      <p>(The <a href="http://www.boost.org/">Boost</a> site houses free
-         C++ libraries that do varying things, and happened to be started
-         by members of the Standards Committee.  Certain &quot;useful
-         stuff&quot; classes will probably migrate there.)
-      </p>
-      <p>For the bold and/or desperate, the
-         <a href="http://gcc.gnu.org/fom_serv/cache/33.html">GCC FAQ</a>
-         describes where to find the last libg++ source.
-      </p>
-
-<hr />
-   <h2><a name="1_8">1.8 What if I have more questions?</a></h2>
-      <p>If you have read the README and RELEASE-NOTES files, and your
-         question remains unanswered, then just ask the mailing list.
-         At present, you do not need to be subscribed to the list to
-         send a message to it.  More information is available on the
-         homepage (including how to browse the list archives); to send
-         to the list, use <a href="mailto:libstdc++@gcc.gnu.org">
-         <code>libstdc++@gcc.gnu.org</code></a>.
-      </p>
-      <p>If you have a question that you think should be included here,
-         or if you have a question <em>about</em> a question/answer here,
-         contact <a href="mailto:pme@gcc.gnu.org">Phil Edwards</a>
-         or <a href="mailto:gdr@gcc.gnu.org">Gabriel Dos Reis</a>.
-      </p>
-
-<hr />
-   <h2><a name="1_9">1.9 What are the license terms for libstdc++-v3?</a></h2>
-      <p>See <a href="../17_intro/license.html">our license description</a>
-         for these and related questions.
-      </p>
-
-<hr />
-<h1><a name="2_0">2.0 Installation</a></h1>
-   <h2><a name="2_1">2.1 How do I install libstdc++-v3?</a></h2>
-      <p>Complete instructions are not given here (this is a FAQ, not
-         an installation document), but the tools required are few:
-      </p>
-         <ul>
-            <li> A 3.x release of GCC.  Note that building GCC is much
-                 easier and more automated than building the GCC 2.[78]
-                 series was.  If you are using GCC 2.95, you can still
-                 build earlier snapshots of libstdc++.
-            </li>
-            <li> GNU Make is recommended, but should not be required.
-            </li>
-            <li> The GNU Autotools are needed if you are messing with
-                 the configury or makefiles.
-            </li>
-         </ul>
-      <p>The file <a href="../documentation.html">documentation.html</a>
-         provides a good overview of the steps necessary to build, install,
-         and use the library.  Instructions for configuring the library
-         with new flags such as --enable-threads are there also, as well as
-         patches and instructions for working with GCC 2.95.
-      </p>
-      <p>The top-level install.html and
-         <a href="../17_intro/RELEASE-NOTES">RELEASE-NOTES</a> files contain
-         the exact build and installation instructions.  You may wish to
-         browse those files over CVSweb ahead of time to get a feel for
-         what's required.  RELEASE-NOTES is located in the
-         &quot;.../docs/17_intro/&quot; directory of the distribution.
-      </p> 
-
-<hr />
-   <h2><a name="2_2">2.2 [removed]</a></h2>
-      <p>This question has become moot and has been removed.  The stub
-         is here to preserve numbering (and hence links/bookmarks).
-      </p>
-
-<hr />
-   <h2><a name="2_3">2.3 What is this CVS thing that you
-                         keep mentioning?</a></h2>
-      <p>The <em>Concurrent Versions System</em> is one of several revision
-         control packages.  It was selected for GNU projects because it's
-         free (speech), free (beer), and very high quality.  The <a
-         href="http://www.gnu.org/software/cvs/cvs.html">CVS entry in
-         the GNU software catalogue</a> has a better description as 
-         well as a
-         <a href="http://www.cvshome.org/">link to the makers of CVS</a>. 
-      </p>
-      <p>The &quot;anonymous client checkout&quot; feature of CVS is
-         similar to anonymous FTP in that it allows anyone to retrieve
-         the latest libstdc++ sources.
-      </p>
-      <p>After the first of April, American users will have a
-         &quot;/pharmacy&quot; command-line option...
-         <!-- wonder how long that'll live -->
-      </p>
-
-<hr />
-   <h2><a name="2_4">2.4 How do I know if it works?</a></h2>
-      <p>libstdc++-v3 comes with its own testsuite.  You do not need
-         to actually install the library (&quot;<code>make
-         install</code>&quot;) to run the testsuite.
-      </p>
-      <p>To run the testsuite on the library after building it, use
-         &quot;make check&quot; while in your build directory.  To run
-         the testsuite on the library after building and installing it,
-         use &quot;make check-install&quot; instead.
-      </p>
-      <p>If you find bugs in the testsuite programs themselves, or if you
-         think of a new test program that should be added to the suite,
-         <strong>please</strong> write up your idea and send it to the list!
-      </p>
-
-<hr />
-   <h2><a name="2_5">2.4 This library is HUGE!  And what's libsupc++?</a></h2>
-      <p>Usually the size of libraries on disk isn't noticeable.  When a
-         link editor (or simply &quot;linker&quot;) pulls things from a
-         static archive library, only the necessary object files are copied
-         into your executable, not the entire library.  Unfortunately, even
-         if you only need a single function or variable from an object file,
-         the entire object file is extracted.  (There's nothing unique to C++
-         or libstdc++-v3 about this; it's just common behavior, given here
-         for background reasons.)
-      </p>
-      <p>Some of the object files which make up libstdc++.a are rather large.
-         If you create a statically-linked executable with
-         <code> -static</code>, those large object files are suddenly part
-         of your executable.  Historically the best way around this was to
-         only place a very few functions (often only a single one) in each
-         source/object file; then extracting a single function is the same
-         as extracting a single .o file.  For libstdc++-v3 this is only
-         possible to a certain extent; the object files in question contain
-         template classes and template functions, pre-instantiated, and
-         splitting those up causes severe maintenance headaches.
-      </p>
-      <p>It's not a bug, and it's not really a problem.  Nevertheless, some
-         people don't like it, so here are two pseudo-solutions:
-      </p>
-      <p>If the only functions from libstdc++.a which you need are language
-         support functions (those listed in
-         <a href="../18_support/howto.html">clause 18</a> of the standard,
-         e.g., <code>new</code> and <code>delete</code>), then try linking
-         against <code>libsupc++.a</code> (usually specifying
-         <code>-lsupc++</code> when calling g++ for the final link step will
-         do it).  This library contains only those support routines, one per
-         object file.  But if you are using anything from the rest of the
-         library, such as IOStreams or vectors, then you'll still need
-         pieces from <code>libstdc++.a</code>.
-      </p>
-      <p>The second method is one we hope to incorporate into the library
-         build process.  Some platforms can place each function and variable
-         into its own section in a .o file.  The GNU linker can then perform
-         garbage collection on unused sections; this reduces the situation
-         to only copying needed functions into the executable, as before,
-         but all happens automatically.
-      </p>
-      <p>Unfortunately the garbage collection in GNU ld is buggy; sections
-         (corresponding to functions and variables) which <em>are</em> used
-         are mistakenly removed, leading to horrible crashes when your
-         executable starts up.  For the time being, this feature is not used
-         when building the library.
-      </p>
-
-<hr />
-<h1><a name="3_0">3.0 Platform-Specific Issues</a></h1>
-   <h2><a name="3_1">3.1 Can libstdc++-v3 be used with &lt;my
-                         favorite compiler&gt;?</a></h2>
-      <p>Probably not.  Yet.</p>
-      <p>Because GCC advances so rapidly, development and testing of
-         libstdc++ is being done almost entirely under that compiler.
-         If you are curious about whether other, lesser compilers
-         (*grin*) support libstdc++, you are more than welcome to try.
-         Configuring and building the library (see above) will still
-         require certain tools, however.  Also keep in mind that
-         <em>building</em> libstdc++ does not imply that your compiler
-         will be able to <em>use</em> all of the features found in the
-         C++ Standard Library.
-      </p>
-      <p>Since the goal of ISO Standardization is for all C++
-         implementations to be able to share code, the final libstdc++
-         should, in theory, be usable under any ISO-compliant
-         compiler.  It will still be targeted and optimized for
-         GCC/g++, however.
-      </p> 
-
-<hr />
-   <h2><a name="3_2">3.2 [removed]</a></h2>
-      <p>This question has become moot and has been removed.  The stub
-         is here to preserve numbering (and hence links/bookmarks).
-      </p>
-
-<hr />
-   <h2><a name="3_3">3.3 [removed]</a></h2>
-      <p>This question has become moot and has been removed.  The stub
-         is here to preserve numbering (and hence links/bookmarks).
-      </p>
-
-<hr />
-   <h2><a name="3_4">3.4 I can't use 'long long' on Solaris</a></h2>
-      <p>By default we try to support the C99 <code>long long</code> type.
-         This requires that certain functions from your C library be present.
-      </p>
-      <p>Up through release 3.0.2 the tests performed were too general, and
-         this feature was disabled when it did not need to be.  The most
-         commonly reported platform affected was Solaris.
-      </p>
-      <p>This has been fixed for 3.0.3 and onwards.
-      </p>
-
-<hr />
-   <h2><a name="3_5">3.5 <code>_XOPEN_SOURCE</code> / <code>_GNU_SOURCE</code>
-                         / etc is always defined</a></h2>
-      <p>On Solaris, g++ (but not gcc) always defines the preprocessor
-         macro <code>_XOPEN_SOURCE</code>.  On GNU/Linux, the same happens
-         with <code>_GNU_SOURCE</code>.  (This is not an exhaustive list;
-         other macros and other platforms are also affected.)
-      </p>
-      <p>These macros are typically used in C library headers, guarding new
-         versions of functions from their older versions.  The C++ standard
-         library includes the C standard library, but it requires the C90
-         version, which for backwards-compatability reasons is often not the
-         default for many vendors.
-      </p>
-      <p>More to the point, the C++ standard requires behavior which is only
-         available on certain platforms after certain symbols are defined.
-         Usually the issue involves I/O-related typedefs.  In order to
-         ensure correctness, the compiler simply predefines those symbols.
-      </p>
-      <p>Note that it's not enough to #define them only when the library is
-         being built (during installation).  Since we don't have an 'export'
-         keyword, much of the library exists as headers, which means that
-         the symbols must also be defined as your programs are parsed and
-         compiled.
-      </p>
-      <p>To see which symbols are defined, look for CPLUSPLUS_CPP_SPEC in
-         the gcc config headers for your target (and try changing them to
-         see what happens when building complicated code).  You can also run
-         <code>&quot;g++ -E -dM - &lt; /dev/null&quot;</code> to display
-         a list of predefined macros for any particular installation.
-      </p>
-      <p>This has been discussed on the mailing lists
-         <a href="http://gcc.gnu.org/cgi-bin/htsearch?method=and&amp;format=builtin-long&amp;sort=score&amp;words=_XOPEN_SOURCE+Solaris">quite a bit</a>.
-      </p>
-      <p>This method is something of a wart.  We'd like to find a cleaner
-         solution, but nobody yet has contributed the time.
-      </p>
-
-<hr />
-   <h2><a name="3_6">3.6 OS X ctype.h is broken!  How can I hack it?</a></h2>
-      <p>This is a long-standing bug in the OS X support.  Fortunately,
-         the patch is quite simple, and well-known.
-         <a href="http://gcc.gnu.org/ml/gcc/2002-03/msg00817.html"> Here's a
-         link to the solution.</a>
-      </p>
-
-<hr />
-   <h2><a name="3_7">Threading is broken on i386</a></h2>
-      <p>Support for atomic integer operations is/was broken on i386
-         platforms.  The assembly code accidentally used opcodes that are
-         only available on the i486 and later.  So if you configured GCC
-         to target, for example, i386-linux, but actually used the programs
-        on an i686, then you would encounter no problems.  Only when
-        actually running the code on a i386 will the problem appear.  
-      </p>
-      <p>This is fixed in 3.2.2.
-      </p>
-
-<hr />
-<h1><a name="4_0">4.0 Known Bugs and Non-Bugs</a></h1>
-   <em>Note that this section can get rapdily outdated -- such is the
-   nature of an open-source project.  For the latest information, join
-   the mailing list or look through recent archives.   The RELEASE-
-   NOTES and BUGS files are generally kept up-to-date.</em> 
-
-   <p>For 3.0.1, the most common &quot;bug&quot; is an apparently missing
-      &quot;<code>../</code>&quot; in include/Makefile, resulting in files
-      like gthr.h and gthr-single.h not being found.  Please read
-      <a href="http://gcc.gnu.org/install/configure.html">the configuration
-      instructions for GCC</a>,
-      specifically the part about configuring in a separate build directory,
-      and how strongly recommended it is.  Building in the source directory
-      is fragile, is rarely tested, and tends to break, as in this case.
-      This was fixed for 3.0.2.
-   </p>
-
-   <p>For 3.1, the most common &quot;bug&quot; is a parse error when using
-      <code>&lt;fstream&gt;</code>, ending with a message,
-      &quot;<code>bits/basic_file.h:52: parse error before `{'
-      token</code>.&quot;  Please read
-      <a href="http://gcc.gnu.org/install/">the installation instructions for
-      GCC</a>, specifically the part about not installing newer versions on
-      top of older versions.  If you install 3.1 over a 3.0.x release, then
-      the wrong basic_file.h header will be found (its location changed
-      between releases).
-   </p>
-
-   <p><strong>Please do not report these as bugs.  We know about them.</strong>
-      Reporting this -- or any other problem that's already been fixed --
-      hinders the development of GCC, because we have to take time to
-      respond to your report.  Thank you.
-   </p>
-
-   <h2><a name="4_1">4.1 What works already?</a></h2>
-      <p>This is a verbatim clip from the &quot;Status&quot; section
-         of the RELEASE-NOTES for the latest snapshot.  For a list of
-         fixed bugs, see that file.
-      </p> 
-
-<!-- Yeah, I meant that "verbatim clip" thing literally... :-)  -->
-
-<pre>
-New:
----
-(post 3.0.97)
-- more doxygen documentation
-- more named locale fixups
-- stdio_filebuf that takes fd, FILE
-- io performance tuning
-- allocation tuning, valgrind fixups
-- __cxa_demangle now supported
-(3.0.97)
-- more doxygen documentation.
-- more named locale bug fixes
-- support for symbol versioning when using GNU ld &gt;= 2.12
-- wide-io
-- tuning for executable size
-(3.0.96)
-- more doxygen documentation.
-- extensions moved out of namespace std
-- HPUX long long support
-- more string optimizations
-- support for NetBSD cross compiles
-- concept_check merge from boost
-- header simplification
-- named locale bug shakeout
-- thread testsuite
-(3.0.95)
-- add S390, m68k, x86-64 support.
-- doxygen documentation has been extended, including man pages.
-- verbose terminate handling has been added.
-- some libsupc++ tweaks
-- warnings for deprecated headers now active.
-- dejagnu testsuite preliminary documentation.
-- dejagnu testsuite default.
-- dejagnu testsuite cross compiler, multilib safe.
-- long long iostreams on by default, rework of ISO C99 support.
-- iterator re-write and testsuites.
-- container testsuites.
-- allocator revamp and testsuites.
-- more concept-checking work.
-- basic_string optimization and MT fixes.
-- new limits implementation.
-- update -fno-exceptions code, verify it works.
-- full named locale support fpr all facets, choice of gnu,
-  ieee_1003.1-200x (POSIX 2), or generic models. Full support depends
-  on target OS and underlying &quot;C&quot; library support.
-</pre>
-
-
-<hr />
-   <h2><a name="4_2">4.2 Bugs in gcc/g++ (not libstdc++-v3)</a></h2>
-      <p>This is by no means meant to be complete nor exhaustive, but
-         mentions some problems that users may encounter when building
-         or using libstdc++.  If you are experiencing one of these
-         problems, you can find more information on the libstdc++ and
-         the GCC mailing lists.
-      </p>
-      <p>Before reporting a bug, examine the
-         <a href="http://gcc.gnu.org/bugs.html">bugs database</a> with the
-         category set to &quot;libstdc++&quot;.  The BUGS file in the source
-         tree also tracks known serious problems.
-      </p>
-      <ul>
-         <li>Debugging is problematic, due to bugs in line-number generation
-             (mostly fixed in the compiler) and gdb lagging behind the
-             compiler (lack of personnel).  We recommend configuring the
-             compiler using <code>--with-dwarf2</code> if the DWARF2
-             debugging format is not already the default on your platform.
-             Also,
-<a href="http://gcc.gnu.org/ml/libstdc++/2002-02/msg00034.html">changing your
-             GDB settings</a> can have a profound effect on your C++ debugging
-             experiences.  :-)</li>
-      </ul>
-
-<hr />
-   <h2><a name="4_3">4.3 Bugs in the C++ language/lib specification</a></h2>
-      <p>Yes, unfortunately, there are some.  In a
-         <a href="http://gcc.gnu.org/ml/libstdc++/1998/msg00006.html">message
-         to the list</a>, Nathan Myers announced that he has started a list of
-         problems in the ISO C++ Standard itself, especially with
-         regard to the chapters that concern the library.  The list
-         itself is
-         <a href="http://www.cantrip.org/draft-bugs.txt">posted on his
-         website</a>.  Developers who are having problems interpreting
-         the Standard may wish to consult his notes.
-      </p>
-      <p>For those people who are not part of the ISO Library Group
-         (i.e., nearly all of us needing to read this page in the first
-         place :-), a public list of the library defects is occasionally
-         published <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/">here</a>.
-         Some of these have resulted in <a href="#5_2">code changes</a>.
-      </p>
-
-<hr />
-   <h2><a name="4_4">4.4 Things in libstdc++ that only look like bugs</a></h2>
-      <p>There are things which are not bugs in the compiler (4.2) nor
-         the language specification (4.3), but aren't really bugs in
-         libstdc++, either.  Really!  Please do not report these as bugs.
-      </p>
-      <p><a name="4_4_Weff"><strong>-Weffc++</strong></a>
-         The biggest of these is the quadzillions of warnings about the
-         library headers emitted when <code>-Weffc++</code> is used.  Making
-         libstdc++ &quot;-Weffc++-clean&quot; is not a goal of the project,
-         for a few reasons.  Mainly, that option tries to enforce
-         object-oriented programming, while the Standard Library isn't
-         necessarily trying to be OO.
-      </p>
-      <p><a name="4_4_iostreamclear"><strong>reopening a stream fails</strong>
-         </a> Did I just say that -Weffc++ was our biggest false-bug report?
-         I lied.  (It used to be.)  Today it seems to be reports that after
-         executing a sequence like
-      </p>
-      <pre>
-    #include &lt;fstream&gt;
-    ...
-    std::fstream  fs(&quot;a_file&quot;);
-    // .
-    // . do things with fs...
-    // .
-    fs.close();
-    fs.open(&quot;a_new_file&quot;);</pre>
-      <p>all operations on the re-opened <code>fs</code> will fail, or at
-         least act very strangely.  Yes, they often will, especially if
-         <code>fs</code> reached the EOF state on the previous file.  The
-         reason is that the state flags are <strong>not</strong> cleared
-         on a successful call to open().  The standard unfortunately did
-         not specify behavior in this case, and to everybody's great sorrow,
-         the <a href="../ext/howto.html#5">proposed LWG resolution</a> (see
-         DR #22) is to leave the flags unchanged.  You must insert a call
-         to <code>fs.clear()</code> between the calls to close() and open(),
-         and then everything will work like we all expect it to work.
-      </p>
-      <p><a name="4_4_rel_ops"><strong>rel_ops</strong></a>
-         Another is the <code>rel_ops</code> namespace and the template
-         comparison operator functions contained therein.  If they become
-         visible in the same namespace as other comparison functions
-         (e.g., '<code>using</code>' them and the &lt;iterator&gt; header),
-         then you will suddenly be faced with huge numbers of ambiguity
-         errors.  This was discussed on the -v3 list; Nathan Myers
-         <a href="http://gcc.gnu.org/ml/libstdc++/2001-01/msg00247.html">sums
-         things up here</a>.  The collisions with vector/string iterator
-         types have been fixed for 3.1.  <!-- more links to email here -->
-      </p>
-      <h3><a name="4_4_interface">The g++-3 headers are <em>not ours</em></a></h3>
-      <p>If you have found an extremely broken header file which is
-         causing problems for you, look carefully before submitting a
-         &quot;high&quot; priority bug report (which you probably shouldn't
-         do anyhow; see the last paragraph of the page describing
-         <a href="http://gcc.gnu.org/gnatswrite.html">the GCC bug database</a>).
-      </p>
-      <p>If the headers are in <code>${prefix}/include/g++-3</code>, or if
-         the installed library's name looks like <code>libstdc++-2.10.a</code>
-         or <code>libstdc++-libc6-2.10.so</code>,
-         then you are using the old libstdc++-v2 library, which is nonstandard
-         and unmaintained.  Do not report problems with -v2 to the -v3
-         mailing list.
-      </p>
-      <p>Currently our header files are installed in
-         <code>${prefix}/include/g++-v3</code> (see the 'v'?).  This may
-         change with the next release of GCC, as it may be too confusing,
-         but <a href="http://gcc.gnu.org/ml/gcc/2000-10/msg00732.html">the
-         question has not yet been decided</a>.
-      </p>
-      <p><a name="4_4_glibc"><strong>glibc</strong></a>
-         If you're on a GNU/Linux system and have just upgraded to
-         glibc 2.2, but are still using gcc 2.95.2, then you should have
-         read the glibc FAQ, specifically 2.34:
-      </p>
-      <pre>
-2.34.   When compiling C++ programs, I get a compilation error in streambuf.h.
-
-{BH} You are using g++ 2.95.2? After upgrading to glibc 2.2, you need to
-apply a patch to the include files in /usr/include/g++, because the fpos_t
-type has changed in glibc 2.2.  The patch is at
-http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff
-   </pre>
-      <p>Note that 2.95.x shipped with the
-         <a href="#4_4_interface">old v2 library</a> which is no longer
-         maintained.  Also note that gcc 2.95.3 fixes this problem, but
-         requires a separate patch for libstdc++-v3.
-      </p>
-      <p><a name="4_4_checks"><strong>concept checks</strong></a>
-         If you see compilation errors containing messages about
-         <code> <em>foo</em>Concept </code>and a<code> constraints </code>
-         member function, then most likely you have violated one of the
-         requirements for types used during instantiation of template
-         containers and functions.  For example, EqualityComparableConcept
-         appears if your types must be comparable with == and you have not
-         provided this capability (a typo, or wrong visibility, or you
-         just plain forgot, etc).
-      </p>
-      <p>More information, including how to optionally enable/disable the
-         checks, is available
-         <a href="../19_diagnostics/howto.html#3">here</a>.
-      </p>
-      <p><a name="4_4_dlsym"><strong>dlopen/dlsym</strong></a>
-         If you are using the C++ library across dynamically-loaded
-         objects, make certain that you are passing the correct options
-         when compiling and linking:
-      </p>
-      <pre>
-    // compile the library components
-    g++ -fPIC -c a.cc
-    g++ -fPIC -c b.cc
-    ...
-    g++ -fPIC -c z.cc
-
-    // create the library
-    g++ -fPIC -shared -rdynamic -o libfoo.so a.o b.o ... z.o
-
-    // link the executable
-    g++ -fPIC -rdynamic -o foo ... -L. -lfoo -ldl</pre>
-
-<hr />
-   <h2><a name="4_5">4.5 Aw, that's easy to fix!</a></h2>
-      <p>If you have found a bug in the library and you think you have
-         a working fix, then send it in!  The main GCC site has a page
-         on <a href="http://gcc.gnu.org/contribute.html">submitting
-         patches</a> that covers the procedure, but for libstdc++ you
-         should also send the patch to our mailing list in addition to
-         the GCC patches mailing list.  The libstdc++
-         <a href="../17_intro/contribute.html">contributors' page</a>
-         also talks about how to submit patches.
-      </p>
-      <p>In addition to the description, the patch, and the ChangeLog
-         entry, it is a Good Thing if you can additionally create a small
-         test program to test for the presence of the bug that your
-         patch fixes.  Bugs have a way of being reintroduced; if an old
-         bug creeps back in, it will be caught immediately by the 
-         <a href="#2_4">testsuite</a> -- but only if such a test exists.
-      </p>
-
-<hr />
-<h1><a name="5_0">5.0 Miscellaneous</a></h1>
-   <h2><a name="5_1">5.1 string::iterator is not char*;
-                     vector&lt;T&gt;::iterator is not T*</a></h2>
-      <p>If you have code that depends on container&lt;T&gt; iterators
-         being implemented as pointer-to-T, your code is broken.
-      </p>
-      <p>While there are arguments for iterators to be implemented in
-         that manner, A) they aren't very good ones in the long term,
-         and B) they were never guaranteed by the Standard anyway.  The
-         type-safety achieved by making iterators a real class rather
-         than a typedef for <code>T*</code> outweighs nearly all opposing
-         arguments.
-      </p>
-      <p>Code which does assume that a vector iterator <code> i </code>
-         is a pointer can often be fixed by changing <code> i </code> in
-         certain expressions to <code> &amp;*i </code>.  Future revisions
-         of the Standard are expected to bless this usage for
-         vector&lt;&gt; (but not for basic_string&lt;&gt;).
-      </p>
-
-<hr />
-   <h2><a name="5_2">5.2 What's next after libstdc++-v3?</a></h2>
-      <p>Hopefully, not much.  The goal of libstdc++-v3 is to produce
-         a fully-compliant, fully-portable Standard Library.  After that,
-         we're mostly done:  there won't <em>be</em> any more compliance
-         work to do.  However:
-      </p>
-      <ol>
-      <li><p>The ISO Committee will meet periodically to review Defect Reports
-         in the C++ Standard.  Undoubtedly some of these will result in
-         changes to the Standard, which will be reflected in patches to
-         libstdc++.  Some of that is already happening, see 4.2.  Some of
-         those changes are being predicted by the library maintainers, and
-         we add code to the library based on what the current proposed
-         resolution specifies.  Those additions are listed in
-         <a href="../ext/howto.html#5">the extensions page</a>.
-      </p></li>
-      <li><p>Performance tuning.  Lots of performance tuning.  This too is
-         already underway for post-3.0 releases, starting with memory
-         expansion in container classes and buffer usage in synchronized
-         stream objects.
-      </p></li>
-      <li><p>An ABI for libstdc++ is being developed, so that
-         multiple binary-incompatible copies of the library can be replaced
-         with a single backwards-compatible library, like libgcc_s.so is.
-      </p></li>
-      <li><p>The current libstdc++ contains extensions to the Library which
-         must be explicitly requested by client code (for example, the
-         hash tables from SGI).  Other extensions may be added to
-         libstdc++-v3 if they seem to be &quot;standard&quot; enough.
-         (For example, the &quot;long long&quot; type from C99.)
-         Bugfixes and rewrites (to improve or fix thread safety, for
-         instance) will of course be a continuing task.
-      </p></li>
-      </ol>
-      <p><a href="http://gcc.gnu.org/ml/libstdc++/1999/msg00080.html">This
-         question</a> about the next libstdc++ prompted some brief but
-         interesting
-         <a href="http://gcc.gnu.org/ml/libstdc++/1999/msg00084.html">speculation</a>.
-      </p>
-
-<hr />
-   <h2><a name="5_3">5.3 What about the STL from SGI?</a></h2>
-      <p>The <a href="http://www.sgi.com/Technology/STL/">STL from SGI</a>,
-         version 3.3, was the most recent merge of the STL codebase.  The
-         code in libstdc++ contains many fixes and changes, and it is
-         very likely that the SGI code is no longer under active
-         development.  We expect that no future merges will take place.
-      </p>
-      <p>In particular, <code>string</code> is not from SGI and makes no
-         use of their &quot;rope&quot; class (which is included as an
-         optional extension), nor is <code>valarray</code> and some others.
-         Classes like <code>vector&lt;&gt;</code> are, however.
-      </p>
-      <p>The FAQ for SGI's STL (one jump off of their main page) is
-         recommended reading.
-      </p>
-
-<hr />
-   <h2><a name="5_4">5.4 Extensions and Backward Compatibility</a></h2>
-      <p>Headers in the <code>ext</code> and <code>backward</code>
-         subdirectories should be referred to by their relative paths:
-         <!-- Careful, the leading spaces in PRE show up directly. -->
-      </p>
-      <pre>
-      #include &lt;ext/hash_map&gt; </pre>
-      <p>rather than using <code>-I</code> or other options.  This is more
-         portable and forward-compatible.  (The situation is the same as
-         that of other headers whose directories are not searched directly,
-         e.g., <code>&lt;sys/stat.h&gt;</code>, <code>&lt;X11/Xlib.h&gt;</code>.
-      </p>
-
-      <p>The extensions are no longer in the global or <code>std</code>
-         namespaces, instead they are declared in the <code>__gnu_cxx</code>
-         namespace. For maximum portability, consider defining a namespace
-         alias to use to talk about extensions, e.g.:
-      </p>
-      <pre>
-      #ifdef __GNUC__
-      #if __GNUC__ &lt; 3
-        #include &lt;hash_map.h&gt;
-        namespace Sgi { using ::hash_map; }; // inherit globals
-      #else
-        #include &lt;ext/hash_map&gt;
-        #if __GNUC_MINOR__ == 0
-          namespace Sgi = std;               // GCC 3.0
-        #else
-          namespace Sgi = ::__gnu_cxx;       // GCC 3.1 and later
-        #endif
-      #endif
-      #else      // ...  there are other compilers, right?
-        namespace Sgi = std;
-      #endif
-
-      Sgi::hash_map&lt;int,int&gt; my_map; </pre>
-      <p>This is a bit cleaner than defining typedefs for all the
-         instantiations you might need.
-      </p>
-
-      <p>Extensions to the library have
-         <a href="../ext/howto.html">their own page</a>.
-      </p>
-
-<hr />
-   <h2><a name="5_5">5.5 [removed]</a></h2>
-      <p>This question has become moot and has been removed.  The stub
-         is here to preserve numbering (and hence links/bookmarks).
-      </p>
-
-<hr />
-   <h2><a name="5_6">5.6 Is libstdc++-v3 thread-safe?</a></h2>
-      <p>When the system's libc is itself thread-safe, a non-generic
-         implementation of atomicity.h exists for the architecture, and gcc
-         itself reports a thread model other than single; libstdc++-v3
-         strives to be thread-safe.  The user-code must guard against
-         concurrent method calls which may access any particular library
-         object's state.  Typically, the application programmer may infer
-         what object locks must be held based on the objects referenced in
-         a method call.  Without getting into great detail, here is an
-         example which requires user-level locks:
-      </p>
-      <pre>
-     library_class_a shared_object_a;
-
-     thread_main () {
-       library_class_b *object_b = new library_class_b;
-       shared_object_a.add_b (object_b);   // must hold lock for shared_object_a
-       shared_object_a.mutate ();          // must hold lock for shared_object_a
-     }
-
-     // Multiple copies of thread_main() are started in independent threads.</pre>
-      <p>Under the assumption that object_a and object_b are never exposed to
-         another thread, here is an example that should not require any
-         user-level locks:
-      </p>
-      <pre>
-     thread_main () {
-       library_class_a object_a;
-       library_class_b *object_b = new library_class_b;
-       object_a.add_b (object_b);
-       object_a.mutate ();
-     } </pre>
-      <p>All library objects are safe to use in a multithreaded program as
-         long as each thread carefully locks out access by any other thread
-         while it uses any object visible to another thread.  In general,
-         this requirement includes both read and write access to objects;
-         unless otherwise documented as safe, do not assume that two
-         threads may access a shared standard library object at the
-         same time.
-      </p>
-      <p>See chapters <a href="../17_intro/howto.html#3">17</a> (library
-         introduction), <a href="../23_containers/howto.html#3">23</a>
-         (containers), and <a href="../27_io/howto.html#9">27</a> (I/O) for
-         more information.
-      </p>
-
-<hr />
-   <h2><a name="5_7">5.7 How do I get a copy of the ISO C++ Standard?</a></h2>
-      <p>Copies of the full ISO 14882 standard are available on line via the
-         ISO mirror site for committee members.  Non-members, or those who
-         have not paid for the privilege of sitting on the committee and
-         sustained their two-meeting commitment for voting rights, may get a
-         copy of the standard from their respective national standards
-         organization.  In the USA, this national standards organization is
-         ANSI and their website is right <a href="http://www.ansi.org">here</a>.
-         (And if you've already registered with them, clicking this link will
-         take you to directly to the place where you can
-<a href="http://webstore.ansi.org/ansidocstore/product.asp?sku=ISO%2FIEC+14882%2D1998">buy
-         the standard on-line</a>.
-      </p>
-      <p>Who is your country's member body?  Visit the
-         <a href="http://www.iso.ch/">ISO homepage</a> and find out!
-      </p>
-
-<hr />
-   <h2><a name="5_8">5.8 What's an ABI and why is it so messy?</a></h2>
-      <p>&quot;ABI&quot; stands for &quot;Application Binary Interface.&quot;
-         Conventionally, it refers to a great mass of details about how
-         arguments are arranged on the call stack and/or in registers, and
-         how various types are arranged and padded in structs.  A single CPU
-         design may suffer multiple ABIs designed by different development
-         tool vendors who made different choices, or even by the same vendor
-         for different target applications or compiler versions.  In ideal
-         circumstances the CPU designer presents one ABI and all the OSes and
-         compilers use it.  In practice every ABI omits details that compiler
-         implementers (consciously or accidentally) must choose for themselves.
-      </p>
-      <p>That ABI definition suffices for compilers to generate code so a
-         program can interact safely with an OS and its lowest-level libraries.
-         Users usually want an ABI to encompass more detail, allowing libraries
-         built with different compilers (or different releases of the same
-         compiler!) to be linked together.  For C++, this includes many more
-         details than for C, and CPU designers (for good reasons elaborated
-         below) have not stepped up to publish C++ ABIs.  The details include
-         virtual function implementation, struct inheritance layout, name
-         mangling, and exception handling.  Such an ABI has been defined for
-         GNU C++, and is immediately useful for embedded work relying only on
-         a &quot;free-standing implementation&quot; that doesn't include (much
-         of) the standard library.  It is a good basis for the work to come.
-      </p>
-      <p>A useful C++ ABI must also incorporate many details of the standard 
-         library implementation.  For a C ABI, the layouts of a few structs
-         (such as FILE, stat, jmpbuf, and the like) and a few macros suffice.
-         For C++, the details include the complete set of names of functions
-         and types used, the offsets of class members and virtual functions,
-         and the actual definitions of all inlines.  C++ exposes many more
-         library details to the caller than C does.  It makes defining
-         a complete ABI a much bigger undertaking, and requires not just
-         documenting library implementation details, but carefully designing
-         those details so that future bug fixes and optimizations don't
-         force breaking the ABI.
-      </p>
-      <p>There are ways to help isolate library implementation details from the 
-         ABI, but they trade off against speed.  Library details used in
-         inner loops (e.g., getchar) must be exposed and frozen for all
-         time, but many others may reasonably be kept hidden from user code,
-         so they may later be changed.  Deciding which, and implementing
-         the decisions, must happen before you can reasonably document a
-         candidate C++ ABI that encompasses the standard library.
-      </p>
-
-<!-- ####################################################### -->
-
-<hr />
-<p class="fineprint"><em>
-See <a href="../17_intro/license.html">license.html</a> for copying conditions.
-Comments and suggestions are welcome, and may be sent to
-<a href="mailto:libstdc++@gcc.gnu.org">the libstdc++ mailing list</a>.
-</em></p>
-
-
-</body>
-</html>
-