Commit 462b7396 by Phil Edwards

user.cfg.in: Minor addition.

2001-05-30  Phil Edwards  <pme@sources.redhat.com>

	* docs/doxygen/user.cfg.in:  Minor addition.
	* docs/html/documentation.html:  Reorganize.  Put most-looked-at
	stuff first.
	* docs/html/install.html:  Update for 3.0.  HTML fixups.
	* docs/html/17_intro/howto.html:  Likewise.
	* docs/html/18_support/howto.html:  Likewise.
	* docs/html/19_diagnostics/howto.html:  Likewise.
	* docs/html/20_util/howto.html:  Likewise.
	* docs/html/23_containers/howto.html:  Likewise.
	* docs/html/24_iterators/howto.html:  Likewise.  More notes.
	* docs/html/25_algorithms/howto.html:  Likewise.
	* docs/html/26_numerics/howto.html:  Likewise.  More notes.
	* docs/html/27_io/howto.html:  Likewise.
	* docs/html/ext/howto.html:  Likewise.
	* docs/html/faq/index.html:  Likewise.
	* docs/html/faq/index.txt:  Regenerate.
	* docs/html/27_io/iostreams_hierarchy.pdf:  Remove in favor of
	Doxygen-created documentation.

From-SVN: r42723
parent 932c1783
2001-05-30 Phil Edwards <pme@sources.redhat.com>
* docs/doxygen/user.cfg.in: Minor addition.
* docs/html/documentation.html: Reorganize. Put most-looked-at
stuff first.
* docs/html/install.html: Update for 3.0. HTML fixups.
* docs/html/17_intro/howto.html: Likewise.
* docs/html/18_support/howto.html: Likewise.
* docs/html/19_diagnostics/howto.html: Likewise.
* docs/html/20_util/howto.html: Likewise.
* docs/html/23_containers/howto.html: Likewise.
* docs/html/24_iterators/howto.html: Likewise. More notes.
* docs/html/25_algorithms/howto.html: Likewise.
* docs/html/26_numerics/howto.html: Likewise. More notes.
* docs/html/27_io/howto.html: Likewise.
* docs/html/ext/howto.html: Likewise.
* docs/html/faq/index.html: Likewise.
* docs/html/faq/index.txt: Regenerate.
* docs/html/27_io/iostreams_hierarchy.pdf: Remove in favor of
Doxygen-created documentation.
2001-05-30 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE> 2001-05-30 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
* testsuite/lib/libstdc++-v3-dg.exp (libstdc++-v3-init): Use * testsuite/lib/libstdc++-v3-dg.exp (libstdc++-v3-init): Use
......
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
# The PROJECT_NAME tag is a single word (or a sequence of words surrounded # The PROJECT_NAME tag is a single word (or a sequence of words surrounded
# by quotes) that should identify the project. # by quotes) that should identify the project.
PROJECT_NAME = libstdc++-v3 PROJECT_NAME = "libstdc++-v3 Source"
# The PROJECT_NUMBER tag can be used to enter a project or revision number. # The PROJECT_NUMBER tag can be used to enter a project or revision number.
# This could be handy for archiving the generated documentation or # This could be handy for archiving the generated documentation or
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
<META NAME="GENERATOR" CONTENT="vi and eight fingers"> <META NAME="GENERATOR" CONTENT="vi and eight fingers">
<TITLE>libstdc++-v3 HOWTO: Chapter 17</TITLE> <TITLE>libstdc++-v3 HOWTO: Chapter 17</TITLE>
<LINK REL=StyleSheet HREF="../lib3styles.css"> <LINK REL=StyleSheet HREF="../lib3styles.css">
<!-- $Id: howto.html,v 1.2 2001/04/03 00:26:54 pme Exp $ --> <!-- $Id: howto.html,v 1.3 2001/05/30 08:30:02 ljrittle Exp $ -->
</HEAD> </HEAD>
<BODY> <BODY>
...@@ -125,8 +125,7 @@ ...@@ -125,8 +125,7 @@
<HR> <HR>
<H2><A NAME="4"><TT>&lt;foo&gt;</TT> vs <TT>&lt;foo.h&gt;</TT></A></H2> <H2><A NAME="4"><TT>&lt;foo&gt;</TT> vs <TT>&lt;foo.h&gt;</TT></A></H2>
<P>The new-style headers are fully supported in libstdc++-v3. The compiler <P>The new-style headers are fully supported in libstdc++-v3. The compiler
itself fully supports namespaces. However, at the moment, the compiler itself fully supports namespaces, including <TT>std::</TT>.
treats std:: as the global namespace by default.
</P> </P>
<P>For those of you new to ISO C++98, no, that isn't a typo, the headers <P>For those of you new to ISO C++98, no, that isn't a typo, the headers
really have new names. Marshall Cline's C++ FAQ Lite has a good really have new names. Marshall Cline's C++ FAQ Lite has a good
...@@ -145,7 +144,7 @@ ...@@ -145,7 +144,7 @@
<P CLASS="fineprint"><EM> <P CLASS="fineprint"><EM>
Comments and suggestions are welcome, and may be sent to Comments and suggestions are welcome, and may be sent to
<A HREF="mailto:libstdc++@gcc.gnu.org">the mailing list</A>. <A HREF="mailto:libstdc++@gcc.gnu.org">the mailing list</A>.
<BR> $Id: howto.html,v 1.2 2001/04/03 00:26:54 pme Exp $ <BR> $Id: howto.html,v 1.3 2001/05/30 08:30:02 ljrittle Exp $
</EM></P> </EM></P>
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
<META NAME="GENERATOR" CONTENT="vi and eight fingers"> <META NAME="GENERATOR" CONTENT="vi and eight fingers">
<TITLE>libstdc++-v3 HOWTO: Chapter 18</TITLE> <TITLE>libstdc++-v3 HOWTO: Chapter 18</TITLE>
<LINK REL=StyleSheet HREF="../lib3styles.css"> <LINK REL=StyleSheet HREF="../lib3styles.css">
<!-- $Id: howto.html,v 1.1 2000/12/10 04:04:54 pme Exp $ --> <!-- $Id: howto.html,v 1.2 2001/04/03 00:26:55 pme Exp $ -->
</HEAD> </HEAD>
<BODY> <BODY>
...@@ -186,6 +186,11 @@ ...@@ -186,6 +186,11 @@
out of them, Bad Things happen. out of them, Bad Things happen.
</OL> </OL>
</P> </P>
<P>Note also that <TT>atexit()</TT> is only required to store 32
functions, and the compiler/library might already be using some of
those slots. If you think you may run out, we recommend using
the xatexit/xexit combination from libiberty, which has no such limit.
</P>
<P>Return <A HREF="#top">to top of page</A> or <P>Return <A HREF="#top">to top of page</A> or
<A HREF="../faq/index.html">to the FAQ</A>. <A HREF="../faq/index.html">to the FAQ</A>.
</P> </P>
...@@ -260,7 +265,7 @@ ...@@ -260,7 +265,7 @@
<P CLASS="fineprint"><EM> <P CLASS="fineprint"><EM>
Comments and suggestions are welcome, and may be sent to Comments and suggestions are welcome, and may be sent to
<A HREF="mailto:libstdc++@gcc.gnu.org">the mailing list</A>. <A HREF="mailto:libstdc++@gcc.gnu.org">the mailing list</A>.
<BR> $Id: howto.html,v 1.1 2000/12/10 04:04:54 pme Exp $ <BR> $Id: howto.html,v 1.2 2001/04/03 00:26:55 pme Exp $
</EM></P> </EM></P>
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
<META NAME="GENERATOR" CONTENT="vi and eight fingers"> <META NAME="GENERATOR" CONTENT="vi and eight fingers">
<TITLE>libstdc++-v3 HOWTO: Chapter 19</TITLE> <TITLE>libstdc++-v3 HOWTO: Chapter 19</TITLE>
<LINK REL=StyleSheet HREF="../lib3styles.css"> <LINK REL=StyleSheet HREF="../lib3styles.css">
<!-- $Id: howto.html,v 1.2 2001/03/25 00:01:56 pme Exp $ --> <!-- $Id: howto.html,v 1.3 2001/04/03 00:26:55 pme Exp $ -->
</HEAD> </HEAD>
<BODY> <BODY>
...@@ -93,16 +93,8 @@ ...@@ -93,16 +93,8 @@
object file. The checks are also cleaner and easier to read and object file. The checks are also cleaner and easier to read and
understand. understand.
</P> </P>
<P>Concept checking can be disabled when you build your code, for example, <P>Right now they are off by default. More will be added once
to save space during a production build. Just define (via -D or GCC 3.0 is released and we have time to revisit this topic.
#define) any of the macros
<TT>_GLIBCPP_NO_CONCEPT_CHECKS (yes, with the leading underscore),
<TT>_STL_NO_CONCEPT_CHECKS</TT> (also with the leading underscore),
or <TT>NDEBUG</TT>. The first macro is specifically for this
feature, the second is the disabling macro for the replaced SGI
version (some code may assume SGI's version is in use), and the third
is the usual macro to disable <TT>assert()</TT>, which is often turned
off for production builds.
</P> </P>
<P>Return <A HREF="#top">to top of page</A> or <P>Return <A HREF="#top">to top of page</A> or
...@@ -116,7 +108,7 @@ ...@@ -116,7 +108,7 @@
<P CLASS="fineprint"><EM> <P CLASS="fineprint"><EM>
Comments and suggestions are welcome, and may be sent to Comments and suggestions are welcome, and may be sent to
<A HREF="mailto:libstdc++@gcc.gnu.org">the mailing list</A>. <A HREF="mailto:libstdc++@gcc.gnu.org">the mailing list</A>.
<BR> $Id: howto.html,v 1.2 2001/03/25 00:01:56 pme Exp $ <BR> $Id: howto.html,v 1.3 2001/04/03 00:26:55 pme Exp $
</EM></P> </EM></P>
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
<META NAME="GENERATOR" CONTENT="vi and eight fingers"> <META NAME="GENERATOR" CONTENT="vi and eight fingers">
<TITLE>libstdc++-v3 HOWTO: Chapter 20</TITLE> <TITLE>libstdc++-v3 HOWTO: Chapter 20</TITLE>
<LINK REL=StyleSheet HREF="../lib3styles.css"> <LINK REL=StyleSheet HREF="../lib3styles.css">
<!-- $Id: howto.html,v 1.2 2001/01/23 17:02:27 pme Exp $ --> <!-- $Id: howto.html,v 1.3 2001/04/03 00:26:55 pme Exp $ -->
</HEAD> </HEAD>
<BODY> <BODY>
...@@ -123,20 +123,7 @@ ...@@ -123,20 +123,7 @@
std::vector&lt; std::auto_ptr&lt;int&gt; &gt; vec_ap_int; std::vector&lt; std::auto_ptr&lt;int&gt; &gt; vec_ap_int;
} }
</PRE> </PRE>
Should you try this, you will see an error along the lines of the Should you try this with the checks enabled, you will see an error.
following (look through the ugly line-wrapping):
<PRE>
/installdir/include/g++-v3/bits/concept_checks.h: In
static member function `static _Type
<B>_STL_ERROR::__const_parameter_required_for_copy_constructor</B>(_Type, const
_Type&amp;) [with _Type = std::auto_ptr&lt;int&gt;]':
/installdir/include/g++-v3/bits/concept_checks.h:383: passing
`const std::auto_ptr&lt;int&gt;' as `this' argument of
`std::auto_ptr&lt;_Tp&gt;::operator std::auto_ptr_ref&lt;_Tp1&gt;()
[with _Tp1 = int, _Tp = int]' discards qualifiers
</PRE>
See the highlighted error? It starts with a message in all caps
to get your attention.
</P> </P>
<P>Return <A HREF="#top">to top of page</A> or <P>Return <A HREF="#top">to top of page</A> or
<A HREF="../faq/index.html">to the FAQ</A>. <A HREF="../faq/index.html">to the FAQ</A>.
...@@ -213,7 +200,7 @@ ...@@ -213,7 +200,7 @@
<P CLASS="fineprint"><EM> <P CLASS="fineprint"><EM>
Comments and suggestions are welcome, and may be sent to Comments and suggestions are welcome, and may be sent to
<A HREF="mailto:libstdc++@gcc.gnu.org">the mailing list</A>. <A HREF="mailto:libstdc++@gcc.gnu.org">the mailing list</A>.
<BR> $Id: howto.html,v 1.2 2001/01/23 17:02:27 pme Exp $ <BR> $Id: howto.html,v 1.3 2001/04/03 00:26:55 pme Exp $
</EM></P> </EM></P>
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
<META NAME="GENERATOR" CONTENT="vi and eight fingers"> <META NAME="GENERATOR" CONTENT="vi and eight fingers">
<TITLE>libstdc++-v3 HOWTO: Chapter 23</TITLE> <TITLE>libstdc++-v3 HOWTO: Chapter 23</TITLE>
<LINK REL=StyleSheet HREF="../lib3styles.css"> <LINK REL=StyleSheet HREF="../lib3styles.css">
<!-- $Id: howto.html,v 1.2 2001/04/03 00:26:55 pme Exp $ --> <!-- $Id: howto.html,v 1.3 2001/05/30 08:30:01 ljrittle Exp $ -->
</HEAD> </HEAD>
<BODY> <BODY>
...@@ -45,10 +45,8 @@ ...@@ -45,10 +45,8 @@
algorithms are only given endpoints to work with. For the container algorithms are only given endpoints to work with. For the container
classes, these are iterators (usually <TT>begin()</TT> and classes, these are iterators (usually <TT>begin()</TT> and
<TT>end()</TT>, but not always). For builtin arrays, these are <TT>end()</TT>, but not always). For builtin arrays, these are
the address of the first element and the past-the-end element. the address of the first element and the
<!-- a good explanation of the past-the-end rules is in order, <A HREF="../24_iterators/howto.html#2">past-the-end</A> element.
probably a link somewhere
-->
</P> </P>
<P>Some very simple wrapper functions can hide all of that from the <P>Some very simple wrapper functions can hide all of that from the
rest of the code. For example, a pair of functions called rest of the code. For example, a pair of functions called
...@@ -86,7 +84,7 @@ ...@@ -86,7 +84,7 @@
</P> </P>
<P>Second, the line <P>Second, the line
<PRE> <PRE>
inline unsigned int lengthof (T (&)[sz]) { return sz; } </PRE> inline unsigned int lengthof (T (&amp;)[sz]) { return sz; } </PRE>
looks just weird! Hint: unused parameters can be left nameless. looks just weird! Hint: unused parameters can be left nameless.
</P> </P>
<P>Return <A HREF="#top">to top of page</A> or <P>Return <A HREF="#top">to top of page</A> or
...@@ -134,7 +132,7 @@ ...@@ -134,7 +132,7 @@
some extra space, of course. (If you plan to write code like the some extra space, of course. (If you plan to write code like the
incorrect example above, where the bitset is a local variable, then you incorrect example above, where the bitset is a local variable, then you
may have to talk your compiler into allowing that much stack space; may have to talk your compiler into allowing that much stack space;
there may be zero spae overhead, but it's all allocated inside the there may be zero space overhead, but it's all allocated inside the
object.) object.)
</P> </P>
<P><B>A container&lt;bool&gt;.&nbsp;&nbsp;</B> The Committee made provision <P><B>A container&lt;bool&gt;.&nbsp;&nbsp;</B> The Committee made provision
...@@ -239,7 +237,7 @@ ...@@ -239,7 +237,7 @@
<P CLASS="fineprint"><EM> <P CLASS="fineprint"><EM>
Comments and suggestions are welcome, and may be sent to Comments and suggestions are welcome, and may be sent to
<A HREF="mailto:libstdc++@gcc.gnu.org">the mailing list</A>. <A HREF="mailto:libstdc++@gcc.gnu.org">the mailing list</A>.
<BR> $Id: howto.html,v 1.2 2001/04/03 00:26:55 pme Exp $ <BR> $Id: howto.html,v 1.3 2001/05/30 08:30:01 ljrittle Exp $
</EM></P> </EM></P>
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
<META NAME="GENERATOR" CONTENT="vi and eight fingers"> <META NAME="GENERATOR" CONTENT="vi and eight fingers">
<TITLE>libstdc++-v3 HOWTO: Chapter 24</TITLE> <TITLE>libstdc++-v3 HOWTO: Chapter 24</TITLE>
<LINK REL=StyleSheet HREF="../lib3styles.css"> <LINK REL=StyleSheet HREF="../lib3styles.css">
<!-- $Id: howto.html,v 1.1 2000/12/10 04:04:55 pme Exp $ --> <!-- $Id: howto.html,v 1.2 2001/04/03 00:26:56 pme Exp $ -->
</HEAD> </HEAD>
<BODY> <BODY>
...@@ -70,7 +70,98 @@ ...@@ -70,7 +70,98 @@
<HR> <HR>
<H2><A NAME="2">It ends <EM>where?</EM></A></H2> <H2><A NAME="2">It ends <EM>where?</EM></A></H2>
<P>Blah. <P>This starts off sounding complicated, but is actually very easy,
especially towards the end. Trust me.
</P>
<P>Beginners usually have a little trouble understand the whole
'past-the-end' thing, until they remember their early algebra classes
(see, they </EM>told</EM> you that stuff would come in handy!) and
the concept of half-open ranges.
</P>
<P>First, some history, and a reminder of some of the funkier rules in
C and C++ for builtin arrays. The following rules have always been
true for both languages:
<OL>
<LI>You can point anywhere in the array, <EM>or to the first element
past the end of the array</EM>. A pointer that points to one
past the end of the array is guaranteed to be as unique as a
pointer to somewhere inside the array, so that you can compare
such pointers safely.
<LI>You can only dereference a pointer that points into an array.
If your array pointer points outside the array -- even to just
one past the end -- and you dereference it, Bad Things happen.
<LI>Strictly speaking, simply pointing anywhere else invokes
undefined behavior. Most programs won't puke until such a
pointer is actually dereferenced, but the standards leave that
up to the platform.
</OL>
The reason this past-the-end addressing was allowed is to make it
easy to write a loop to go over an entire array, e.g.,
while (*d++ = *s++);.
</P>
<P>So, when you think of two pointers delimiting an array, don't think
of them as indexing 0 through n-1. Think of them as <EM>boundary
markers</EM>:
<PRE>
beginning end
| |
| | This is bad. Always having to
| | remember to add or subtract one.
| | Off-by-one bugs very common here.
V V
array of N elements
|---|---|--...--|---|---|
| 0 | 1 | ... |N-2|N-1|
|---|---|--...--|---|---|
^ ^
| |
| | This is good. This is safe. This
| | is guaranteed to work. Just don't
| | dereference 'end'.
beginning end
</PRE>
See? Everything between the boundary markers is part of the array.
Simple.
</P>
<P>Now think back to your junior-high school algebra course, when you
were learning how to draw graphs. Remember that a graph terminating
with a solid dot meant, &quot;Everything up through this point,&quot;
and a graph terminating with an open dot meant, &quot;Everything up
to, but not including, this point,&quot; respectively called closed
and open ranges? Remember how closed ranges were written with
brackets, <EM>[a,b]</EM>, and open ranges were written with parentheses,
<EM>(a,b)</EM>?
</P>
<P>The boundary markers for arrays describe a <EM>half-open range</EM>,
starting with (and including) the first element, and ending with (but
not including) the last element: <EM>[beginning,end)</EM>. See, I
told you it would be simple in the end.
</P>
<P>Iterators, and everything working with iterators, follows this same
time-honored tradition. A container's <TT>begin()</TT> method returns
an iterator referring to the first element, and its <TT>end()</TT>
method returns a past-the-end iterator, which is guaranteed to be
unique and comparable against any other iterator pointing into the
middle of the container.
</P>
<P>Container constructors, container methods, and algorithms, all take
pairs of iterators describing a range of values on which to operate.
All of these ranges are half-open ranges, so you pass the beginning
iterator as the starting parameter, and the one-past-the-end iterator
as the finishing parameter.
</P>
<P>This generalizes very well. You can operate on sub-ranges quite
easily this way; functions accepting a <EM>[first,last)</EM> range
don't know or care whether they are the boundaries of an entire {array,
sequence, container, whatever}, or whether they only enclose a few
elements from the center. This approach also makes zero-length
sequences very simple to recognize: if the two endpoints compare
equal, then the {array, sequence, container, whatever} is empty.
</P>
<P>Just don't dereference <TT>end()</TT>.
</P> </P>
<P>Return <A HREF="#top">to top of page</A> or <P>Return <A HREF="#top">to top of page</A> or
<A HREF="../faq/index.html">to the FAQ</A>. <A HREF="../faq/index.html">to the FAQ</A>.
...@@ -85,7 +176,7 @@ ...@@ -85,7 +176,7 @@
<P CLASS="fineprint"><EM> <P CLASS="fineprint"><EM>
Comments and suggestions are welcome, and may be sent to Comments and suggestions are welcome, and may be sent to
<A HREF="mailto:libstdc++@gcc.gnu.org">the mailing list</A>. <A HREF="mailto:libstdc++@gcc.gnu.org">the mailing list</A>.
<BR> $Id: howto.html,v 1.1 2000/12/10 04:04:55 pme Exp $ <BR> $Id: howto.html,v 1.2 2001/04/03 00:26:56 pme Exp $
</EM></P> </EM></P>
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
<META NAME="GENERATOR" CONTENT="vi and eight fingers"> <META NAME="GENERATOR" CONTENT="vi and eight fingers">
<TITLE>libstdc++-v3 HOWTO: Chapter 25</TITLE> <TITLE>libstdc++-v3 HOWTO: Chapter 25</TITLE>
<LINK REL=StyleSheet HREF="../lib3styles.css"> <LINK REL=StyleSheet HREF="../lib3styles.css">
<!-- $Id: howto.html,v 1.1 2000/12/10 04:04:55 pme Exp $ --> <!-- $Id: howto.html,v 1.2 2001/04/03 00:26:56 pme Exp $ -->
</HEAD> </HEAD>
<BODY> <BODY>
...@@ -59,7 +59,7 @@ ...@@ -59,7 +59,7 @@
<P>The single thing that trips people up the most is the definition of <P>The single thing that trips people up the most is the definition of
<EM>range</EM> used with iterators; the famous <EM>range</EM> used with iterators; the famous
&quot;past-the-end&quot; rule that everybody loves to hate. The &quot;past-the-end&quot; rule that everybody loves to hate. The
<A HREF="../24_iterators/howto.html">iterators chapter</A> of this <A HREF="../24_iterators/howto.html#2">iterators chapter</A> of this
document has a complete explanation of this simple rule that seems to document has a complete explanation of this simple rule that seems to
cause so much confusion. Once you get <EM>range</EM> into your head cause so much confusion. Once you get <EM>range</EM> into your head
(it's not that hard, honest!), then the algorithms are a cakewalk. (it's not that hard, honest!), then the algorithms are a cakewalk.
...@@ -87,7 +87,7 @@ ...@@ -87,7 +87,7 @@
<P CLASS="fineprint"><EM> <P CLASS="fineprint"><EM>
Comments and suggestions are welcome, and may be sent to Comments and suggestions are welcome, and may be sent to
<A HREF="mailto:libstdc++@gcc.gnu.org">the mailing list</A>. <A HREF="mailto:libstdc++@gcc.gnu.org">the mailing list</A>.
<BR> $Id: howto.html,v 1.1 2000/12/10 04:04:55 pme Exp $ <BR> $Id: howto.html,v 1.2 2001/04/03 00:26:56 pme Exp $
</EM></P> </EM></P>
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
<META NAME="GENERATOR" CONTENT="vi and eight fingers"> <META NAME="GENERATOR" CONTENT="vi and eight fingers">
<TITLE>libstdc++-v3 HOWTO: Chapter 26</TITLE> <TITLE>libstdc++-v3 HOWTO: Chapter 26</TITLE>
<LINK REL=StyleSheet HREF="../lib3styles.css"> <LINK REL=StyleSheet HREF="../lib3styles.css">
<!-- $Id: howto.html,v 1.1 2000/12/10 04:04:56 pme Exp $ --> <!-- $Id: howto.html,v 1.2 2001/04/03 00:26:56 pme Exp $ -->
</HEAD> </HEAD>
<BODY> <BODY>
...@@ -35,6 +35,7 @@ ...@@ -35,6 +35,7 @@
<LI><A HREF="#1">Complex Number Processing</A> <LI><A HREF="#1">Complex Number Processing</A>
<LI><A HREF="#2">Array Processing</A> <LI><A HREF="#2">Array Processing</A>
<LI><A HREF="#3">Numerical Functions</A> <LI><A HREF="#3">Numerical Functions</A>
<LI><A HREF="#4">C99</A>
</UL> </UL>
<HR> <HR>
...@@ -125,6 +126,27 @@ ...@@ -125,6 +126,27 @@
<A HREF="../faq/index.html">to the FAQ</A>. <A HREF="../faq/index.html">to the FAQ</A>.
</P> </P>
<HR>
<H2><A NAME="4">C99</A></H2>
<P>In addition to the other topics on this page, we'll note here some
of the C99 features that appear in libstdc++-v3.
</P>
<P>The C99 features depend on the <TT>--enable-c99</TT> configure flag.
This flag is already on by default, but it can be disabled by the
user. Also, the configuration machinery will disable it if the
neccessary support for C99 (e.g., header files) cannot be found.
</P>
<P>As of GCC 3.0, C99 support includes classification functions
such as <TT>isnormal</TT>, <TT>isgreater</TT>, <TT>isnan</TT>, etc.
The functions used for 'long long' support such as <TT>strtoll</TT>
are supported, as is the <TT>lldiv_t</TT> typedef. Also supported
are the wide character functions using 'long long', like
<TT>wcstoll</TT>.
</P>
<P>Return <A HREF="#top">to top of page</A> or
<A HREF="../faq/index.html">to the FAQ</A>.
</P>
<!-- ####################################################### --> <!-- ####################################################### -->
...@@ -133,7 +155,7 @@ ...@@ -133,7 +155,7 @@
<P CLASS="fineprint"><EM> <P CLASS="fineprint"><EM>
Comments and suggestions are welcome, and may be sent to Comments and suggestions are welcome, and may be sent to
<A HREF="mailto:libstdc++@gcc.gnu.org">the mailing list</A>. <A HREF="mailto:libstdc++@gcc.gnu.org">the mailing list</A>.
<BR> $Id: howto.html,v 1.1 2000/12/10 04:04:56 pme Exp $ <BR> $Id: howto.html,v 1.2 2001/04/03 00:26:56 pme Exp $
</EM></P> </EM></P>
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
<META NAME="GENERATOR" CONTENT="vi and eight fingers"> <META NAME="GENERATOR" CONTENT="vi and eight fingers">
<TITLE>libstdc++-v3 HOWTO: Chapter 27</TITLE> <TITLE>libstdc++-v3 HOWTO: Chapter 27</TITLE>
<LINK REL=StyleSheet HREF="../lib3styles.css"> <LINK REL=StyleSheet HREF="../lib3styles.css">
<!-- $Id: howto.html,v 1.3 2001/02/07 00:03:21 pme Exp $ --> <!-- $Id: howto.html,v 1.4 2001/04/03 00:26:56 pme Exp $ -->
</HEAD> </HEAD>
<BODY> <BODY>
...@@ -26,7 +26,6 @@ ...@@ -26,7 +26,6 @@
<LI><A HREF="#1">Copying a file</A> <LI><A HREF="#1">Copying a file</A>
<LI><A HREF="#2">The buffering is screwing up my program!</A> <LI><A HREF="#2">The buffering is screwing up my program!</A>
<LI><A HREF="#3">Binary I/O</A> <LI><A HREF="#3">Binary I/O</A>
<LI><A HREF="#4">Iostreams class hierarchy diagram</A>
<LI><A HREF="#5">What is this &lt;sstream&gt;/stringstreams thing?</A> <LI><A HREF="#5">What is this &lt;sstream&gt;/stringstreams thing?</A>
<LI><A HREF="#6">Deriving a stream buffer</A> <LI><A HREF="#6">Deriving a stream buffer</A>
<LI><A HREF="#7">More on binary I/O</A> <LI><A HREF="#7">More on binary I/O</A>
...@@ -285,14 +284,6 @@ ...@@ -285,14 +284,6 @@
</P> </P>
<HR> <HR>
<H2><A NAME="4">Iostreams class hierarchy diagram</A></H2>
<P>The <A HREF="iostreams_hierarchy.pdf">diagram</A> is in PDF. Rumor
has it that once Benjamin Kosnik has been dead for a few decades,
this work of his will be hung next to the Mona Lisa in the
<A HREF="http://www.louvre.fr/">Musee du Louvre</A>.
</P>
<HR>
<H2><A NAME="5">What is this &lt;sstream&gt;/stringstreams thing?</A></H2> <H2><A NAME="5">What is this &lt;sstream&gt;/stringstreams thing?</A></H2>
<P>Stringstreams (defined in the header <TT>&lt;sstream&gt;</TT>) <P>Stringstreams (defined in the header <TT>&lt;sstream&gt;</TT>)
are in this author's opinion one of the coolest things since are in this author's opinion one of the coolest things since
...@@ -416,7 +407,7 @@ ...@@ -416,7 +407,7 @@
<P CLASS="fineprint"><EM> <P CLASS="fineprint"><EM>
Comments and suggestions are welcome, and may be sent to Comments and suggestions are welcome, and may be sent to
<A HREF="mailto:libstdc++@gcc.gnu.org">the mailing list</A>. <A HREF="mailto:libstdc++@gcc.gnu.org">the mailing list</A>.
<BR> $Id: howto.html,v 1.3 2001/02/07 00:03:21 pme Exp $ <BR> $Id: howto.html,v 1.4 2001/04/03 00:26:56 pme Exp $
</EM></P> </EM></P>
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
<META NAME="KEYWORDS" CONTENT="libstdc++, homepage, home, g++, libg++, STL"> <META NAME="KEYWORDS" CONTENT="libstdc++, homepage, home, g++, libg++, STL">
<TITLE>Standard C++ Library v3</TITLE> <TITLE>Standard C++ Library v3</TITLE>
<LINK REL=StyleSheet HREF="lib3styles.css"> <LINK REL=StyleSheet HREF="lib3styles.css">
<!-- $Id: documentation.html,v 1.2 2001/05/19 20:27:36 pme Exp $ --> <!-- $Id: documentation.html,v 1.3 2001/05/23 02:00:05 pme Exp $ -->
</HEAD> </HEAD>
<BODY> <BODY>
...@@ -11,15 +11,42 @@ ...@@ -11,15 +11,42 @@
<P><B>All of these documents</B> (in fact, this entire homepage set) are <P><B>All of these documents</B> (in fact, this entire homepage set) are
bundled with the library source, under the <TT>docs</TT> subdirectory, bundled with the library source, under the <TT>docs</TT> subdirectory,
for releases and snapshots. The sole exception is the for releases and snapshots. The sole exception is the
<A HREF="#4">automatically-generated source documentation</A>, automatically-generated source documentation, available separately.
available separately.
</P> </P>
<HR>
<H2><A NAME="4">Source Documentation</A></H2>
<P>In addition to the distribution documentation (these pages), we also
have a set of HTML documents generated from the sources themselves,
using the Doxygen tool. These are useful for examining the signatures
of public member functions for the library classes, etc.
</P>
<P>
The latest collection is <TT>libstdc++-doxygen-20010501.tar.gz</TT> (3.7MB),
<A HREF="libstdc++-doxygen-20010501/index.html">viewable online</A>.
The collection is also available in the libstdc++ snapshots directory at
<TT>&lt;URL:ftp://gcc.gnu.org/pub/gcc/libstdc++/&gt;</TT>. You will
almost certainly need to use one of the
<A HREF="http://gcc.gnu.org/mirrors.html">mirror sites</A> to download
the tarball. After unpacking, simply load
libstdc++-doxygen-20010501/index.html <!-- also update this date -->
in a browser. Feedback (and additional documentation!) is welcome.
</P>
<HR>
<H2><A NAME="2">Configuring, Building, Installing</A></H2>
<UL>
<LI><A HREF="configopts.html">Configure options</A>
<LI><A HREF="install.html">Getting started: configure, build, install</A><BR>
</UL>
<HR>
<H2><A NAME="1">Introductory notes for libstdc++</A></H2> <H2><A NAME="1">Introductory notes for libstdc++</A></H2>
<P>This is a short list of text files pertaining to this <P>This is a short list of text files pertaining to this
implementation of ISO 14882. A brief description follows the name implementation of ISO 14882. A brief description follows the name
of the file. of the file.
</P> </P>
<P>
<UL> <UL>
<LI><A HREF="17_intro/BADNAMES">BADNAMES</A> <LI><A HREF="17_intro/BADNAMES">BADNAMES</A>
- names to avoid because of potential collisions - names to avoid because of potential collisions
...@@ -46,13 +73,7 @@ ...@@ -46,13 +73,7 @@
<LI><A HREF="17_intro/contribute.html">Contributor checklist</A> <LI><A HREF="17_intro/contribute.html">Contributor checklist</A>
<LI><A HREF="17_intro/libstdc++-assign.txt">Copyright assignment form for libstdc++-v3</A> <LI><A HREF="17_intro/libstdc++-assign.txt">Copyright assignment form for libstdc++-v3</A>
</UL> </UL>
</P>
<HR>
<H2><A NAME="2">Configuring, Building, Installing</A></H2>
<UL>
<LI><A HREF="configopts.html">Configure options</A>
<LI><A HREF="install.html">Getting started: configure, build, install</A><BR>
</UL>
<HR> <HR>
<H2><A NAME="3">Chapter-Specific Information, Extensions, Notes and Advice</A></H2> <H2><A NAME="3">Chapter-Specific Information, Extensions, Notes and Advice</A></H2>
...@@ -71,27 +92,5 @@ ...@@ -71,27 +92,5 @@
<LI><A HREF="ext/howto.html">Extensions to the Standard Library</A> <LI><A HREF="ext/howto.html">Extensions to the Standard Library</A>
</OL> </OL>
<HR>
<H2><A NAME="4">Source Documentation</A></H2>
<P>In addition to the distribution documentation (these pages), we also
have a set of HTML documents generated from the sources themselves,
using the Doxygen tool. These are useful for examining the signatures
of public member functions for the library classes, etc.
</P>
<P>
The latest
collection is libstdc++-doxygen-20010501.tar.gz (3.7MB), available in
the libstdc++ snapshots directory at
<TT>&lt;URL:ftp://gcc.gnu.org/pub/gcc/libstdc++/&gt;</TT>. You will
almost certainly need to use one of the
<A HREF="http://gcc.gnu.org/mirrors.html">mirror sites</A> to download
the tarball. After unpacking, simply load
libstdc++-doxygen-20010501/index.html in a browser. You can also
browse the same collection
<A HREF="libstdc++-doxygen-20010501/index.html">online</A>.
Feedback (and additional documentation!) is welcome.
</P>
</BODY> </BODY>
</HTML> </HTML>
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
<META NAME="GENERATOR" CONTENT="vi and eight fingers"> <META NAME="GENERATOR" CONTENT="vi and eight fingers">
<TITLE>libstdc++-v3 HOWTO: Extensions</TITLE> <TITLE>libstdc++-v3 HOWTO: Extensions</TITLE>
<LINK REL=StyleSheet HREF="../lib3styles.css"> <LINK REL=StyleSheet HREF="../lib3styles.css">
<!-- $Id: howto.html,v 1.3 2001/04/03 00:26:56 pme Exp $ --> <!-- $Id: howto.html,v 1.4 2001/05/02 01:39:03 pme Exp $ -->
</HEAD> </HEAD>
<BODY> <BODY>
...@@ -116,14 +116,21 @@ ...@@ -116,14 +116,21 @@
<P> <P>
<UL> <UL>
<LI><TT>filebuf</TT>s have another ctor with this signature:<BR> <LI><TT>filebuf</TT>s have another ctor with this signature:<BR>
<TT>basic_filebuf(int __fd, const char* __name, ios_base::openmode __mode);</TT> <TT>basic_filebuf(__c_file_type*, ios_base::openmode, int_type);</TT>
<BR>This comes in very handy in a number of places, such as <BR>This comes in very handy in a number of places, such as
attaching Unix sockets, pipes, and anything else which uses file attaching Unix sockets, pipes, and anything else which uses file
descriptors, into the IOStream buffering classes. The three descriptors, into the IOStream buffering classes. The three
arguments are as follows:<BR> arguments are as follows:
<TT>int __fd, </TT>// open file descriptor<BR> <UL>
<TT>const char* __name, </TT><BR> <LI><TT>__c_file_type* F </TT>
<TT>ios_base::openmode __mode </TT>// same as the other openmode uses // the __c_file_type typedef usually boils down to stdio's FILE
<LI><TT>ios_base::openmode M </TT>
// same as all the other uses of openmode
<LI><TT>int_type B </TT>
// buffer size, defaults to BUFSIZ
</UL>
For those wanting to use file descriptors instead of FILE*'s, I
invite you to contemplate the mysteries of C's <TT>fdopen()</TT>.
</UL> </UL>
</P> </P>
<P>Return <A HREF="#top">to top of page</A> or <P>Return <A HREF="#top">to top of page</A> or
...@@ -159,7 +166,7 @@ ...@@ -159,7 +166,7 @@
<P CLASS="fineprint"><EM> <P CLASS="fineprint"><EM>
Comments and suggestions are welcome, and may be sent to Comments and suggestions are welcome, and may be sent to
<A HREF="mailto:libstdc++@gcc.gnu.org">the mailing list</A>. <A HREF="mailto:libstdc++@gcc.gnu.org">the mailing list</A>.
<BR> $Id: howto.html,v 1.3 2001/04/03 00:26:56 pme Exp $ <BR> $Id: howto.html,v 1.4 2001/05/02 01:39:03 pme Exp $
</EM></P> </EM></P>
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
** Locations of "the most recent snapshot is the Nth" text are ** Locations of "the most recent snapshot is the Nth" text are
** answers 1_1, 1_4, 4_1, 5_6. ** answers 1_1, 1_4, 4_1, 5_6.
--> -->
<!-- $Id: index.html,v 1.7 2001/04/06 18:48:20 pme Exp $ --> <!-- $Id: index.html,v 1.8 2001/05/10 18:42:11 pme Exp $ -->
</HEAD> </HEAD>
<BODY> <BODY>
...@@ -41,8 +41,7 @@ http://gcc.gnu.org/onlinedocs/libstdc++/faq/</A>.</P> ...@@ -41,8 +41,7 @@ http://gcc.gnu.org/onlinedocs/libstdc++/faq/</A>.</P>
<LI><A HREF="#2_0">Installation</A> <LI><A HREF="#2_0">Installation</A>
<OL> <OL>
<LI><A HREF="#2_1">How do I install libstdc++-v3?</A> <LI><A HREF="#2_1">How do I install libstdc++-v3?</A>
<LI><A HREF="#2_2">Is this a drop-in replacement for the <LI><A HREF="#2_2">[removed]</A>
libstdc++ that's shipped with g++?</A>
<LI><A HREF="#2_3">What is this CVS thing that you keep <LI><A HREF="#2_3">What is this CVS thing that you keep
mentioning?</A> mentioning?</A>
<LI><A HREF="#2_4">How do I know if it works?</A> <LI><A HREF="#2_4">How do I know if it works?</A>
...@@ -52,7 +51,7 @@ http://gcc.gnu.org/onlinedocs/libstdc++/faq/</A>.</P> ...@@ -52,7 +51,7 @@ http://gcc.gnu.org/onlinedocs/libstdc++/faq/</A>.</P>
<OL> <OL>
<LI><A HREF="#3_1">Can libstdc++-v3 be used with &lt;my <LI><A HREF="#3_1">Can libstdc++-v3 be used with &lt;my
favorite compiler&gt;?</A> favorite compiler&gt;?</A>
<LI><A HREF="#3_2">Building under Cygwin hangs/explodes!?</A> <LI><A HREF="#3_2">[removed]</A>
<LI><A HREF="#3_3">Building under DEC OSF kills the assembler</A> <LI><A HREF="#3_3">Building under DEC OSF kills the assembler</A>
</OL> </OL>
...@@ -82,7 +81,7 @@ http://gcc.gnu.org/onlinedocs/libstdc++/faq/</A>.</P> ...@@ -82,7 +81,7 @@ http://gcc.gnu.org/onlinedocs/libstdc++/faq/</A>.</P>
<LI><A HREF="#5_2">What's next after libstdc++-v3?</A> <LI><A HREF="#5_2">What's next after libstdc++-v3?</A>
<LI><A HREF="#5_3">What about the STL from SGI?</A> <LI><A HREF="#5_3">What about the STL from SGI?</A>
<LI><A HREF="#5_4">Extensions and Backward Compatibility</A> <LI><A HREF="#5_4">Extensions and Backward Compatibility</A>
<LI><A HREF="#5_5">Compiling with &quot;-fnew-abi&quot;</A> <LI><A HREF="#5_5">[removed]</A>
<LI><A HREF="#5_6">Is libstdc++-v3 thread-safe?</A> <LI><A HREF="#5_6">Is libstdc++-v3 thread-safe?</A>
<LI><A HREF="#5_7">How do I get a copy of the ISO C++ Standard?</A> <LI><A HREF="#5_7">How do I get a copy of the ISO C++ Standard?</A>
</OL> </OL>
...@@ -148,8 +147,8 @@ HREF="http://gcc.gnu.org/gcc-2.95/buildstat.html">portability</A> ...@@ -148,8 +147,8 @@ HREF="http://gcc.gnu.org/gcc-2.95/buildstat.html">portability</A>
<P>Development and discussion is held on the libstdc++ mailing <P>Development and discussion is held on the libstdc++ mailing
list. Subscribing to the list, or searching the list list. Subscribing to the list, or searching the list
archives, is open to everyone. You can read instructions for 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 doing so on the <A HREF="http://gcc.gnu.org/libstdc++/">homepage</A>.
have questions, ideas, code, or are just curious, sign up! If you have questions, ideas, code, or are just curious, sign up!
</P> </P>
<HR> <HR>
...@@ -174,8 +173,8 @@ HREF="ftp://gcc.gnu.org/pub/libstdc++/libstdc++-2.92.tar.gz"> ...@@ -174,8 +173,8 @@ HREF="ftp://gcc.gnu.org/pub/libstdc++/libstdc++-2.92.tar.gz">
HREF="http://www.deja.com/getdoc.xp?AN=469581698&fmt=text">a HREF="http://www.deja.com/getdoc.xp?AN=469581698&fmt=text">a
Usenet article</A>.</P> Usenet article</A>.</P>
which is no longer available, thanks deja...--> which is no longer available, thanks deja...-->
<P>Nathan Myers gave the best of all possible answers, responding <P>Nathan Myers gave the best of all possible answers, responding to a
to a Usenet article asking this question: Sooner, if you help. Usenet article asking this question: <EM>Sooner, if you help.</EM>
</P> </P>
...@@ -254,20 +253,19 @@ which is no longer available, thanks deja...--> ...@@ -254,20 +253,19 @@ which is no longer available, thanks deja...-->
an installation document), but the tools required are few: an installation document), but the tools required are few:
</P> </P>
<UL> <UL>
<LI> A release of libstdc++. <LI> A 3.x release of GCC. Note that building GCC is much
<LI> A recent release of GCC (version 2.95 works). Note easier and more automated than building the GCC 2.[78]
that building GCC is much easier and more automated series was. If you are using GCC 2.95, you can still
than building the GCC 2.[78] series was. build earlier snapshots of libstdc++.
<LI> If you plan on hacking around with the makefiles, you
will need the tools <A
HREF="http://sources.redhat.com/autoconf/">autoconf</A>and <A
HREF="http://sources.redhat.com/automake/">automake</A>.
<LI> GNU Make is the only make that supports these makefiles. <LI> GNU Make is the only make that supports these makefiles.
<LI> The GNU Autotools are needed if you are messing with
the configury or makefiles.
</UL> </UL>
<P>The file <A HREF="../documentation.html">documentation.html</A> <P>The file <A HREF="../documentation.html">documentation.html</A>
provides a good overview of the steps necessary to build, install, provides a good overview of the steps necessary to build, install,
and use the library. Instructions for configuring the library and use the library. Instructions for configuring the library
with new flags such as --enable-threads are there also. with new flags such as --enable-threads are there also, as well as
patches and instructions for working with GCC 2.95.
</P> </P>
<P>The top-level install.html and <P>The top-level install.html and
<A HREF="../17_intro/RELEASE-NOTES">RELEASE-NOTES</A> files contain <A HREF="../17_intro/RELEASE-NOTES">RELEASE-NOTES</A> files contain
...@@ -278,11 +276,9 @@ HREF="http://sources.redhat.com/automake/">automake</A>. ...@@ -278,11 +276,9 @@ HREF="http://sources.redhat.com/automake/">automake</A>.
</P> </P>
<HR> <HR>
<H2><A NAME="2_2">2.2 Is this a drop-in replacement for the <H2><A NAME="2_2">2.2 [removed]</A></H2>
libstdc++ that's shipped with g++?</A></H2> <P>This question has become moot and has been removed. The stub
<P>Yes, as of 2.90.8, it is intended as such. And as of 2.91, is here to preserve numbering (and hence links/bookmarks).
libstdc++-v3 <EM>is</EM> the library that's shipped with
g++, so much of this answer has become moot.
</P> </P>
<HR> <HR>
...@@ -294,7 +290,7 @@ HREF="http://sources.redhat.com/automake/">automake</A>. ...@@ -294,7 +290,7 @@ HREF="http://sources.redhat.com/automake/">automake</A>.
HREF="http://www.gnu.org/software/cvs/cvs.html">CVS entry in HREF="http://www.gnu.org/software/cvs/cvs.html">CVS entry in
the GNU software catalogue</A> has a better description as the GNU software catalogue</A> has a better description as
well as a well as a
<A HREF="http://www.cyclic.com/">link to the makers of CVS</A>. <A HREF="http://www.cvshome.org/">link to the makers of CVS</A>.
</P> </P>
<P>The &quot;anonymous client checkout&quot; feature of CVS is <P>The &quot;anonymous client checkout&quot; feature of CVS is
similar to anonymous FTP in that it allows anyone to retrieve similar to anonymous FTP in that it allows anyone to retrieve
...@@ -309,22 +305,13 @@ HREF="http://sources.redhat.com/automake/">automake</A>. ...@@ -309,22 +305,13 @@ HREF="http://sources.redhat.com/automake/">automake</A>.
<H2><A NAME="2_4">2.4 How do I know if it works?</A></H2> <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 <P>libstdc++-v3 comes with its own testsuite. You do not need
to actually install the library (&quot;<TT>gmake to actually install the library (&quot;<TT>gmake
install</TT>&quot;) to run the testsuite. Note that 2.91 does install</TT>&quot;) to run the testsuite.
not use DejaGNU yet.
</P> </P>
<P>To run the testsuite on the library after building it, use <P>To run the testsuite on the library after building it, use
&quot;gmake check&quot; while in your build directory. To run &quot;gmake check&quot; while in your build directory. To run
the testsuite on the library after building and installing it, the testsuite on the library after building and installing it,
use &quot;gmake check-install&quot; instead. use &quot;gmake check-install&quot; instead.
</P> </P>
<P>The testsuite subdirectory in your build directory will then
contain three files of the form YYYYMMDD-mkcheck*.txt. One of
them (-mkcheck.txt itself) contains the results of the tests;
this can be mailed to the list. The other files (-mkchecklog.txt
and -mkcheckfiles.txt) contain messages from the compiler while
building the test programs, and a list of the tests to be run,
respectively.
</P>
<P>If you find bugs in the testsuite programs themselves, or if <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 you think of a new test program that should be added to the
suite, <B>please</B> write up your idea and send it to the list! suite, <B>please</B> write up your idea and send it to the list!
...@@ -353,29 +340,9 @@ HREF="http://sources.redhat.com/automake/">automake</A>. ...@@ -353,29 +340,9 @@ HREF="http://sources.redhat.com/automake/">automake</A>.
</P> </P>
<HR> <HR>
<H2><A NAME="3_2">3.2 Building under Cygwin hangs/explodes!?</A></H2> <H2><A NAME="3_2">3.2 [removed]</A></H2>
<P>Sometimes, yes. You're probably in the middle of generating <P>This question has become moot and has been removed. The stub
the <TT>numeric_limits</TT> specializations when it hangs, is here to preserve numbering (and hence links/bookmarks).
right? Thought so...
</P>
<P>The <TT>&lt;limits&gt;</TT> header and its associated library
code are platform-specific. These files get generated from
scratch during installation, and it is this generator that is
hanging. More specifically, the only sure way to determine
what the <TT>numeric_limits&lt;T&gt;::traps</TT> boolean
should be is to actually divide by zero and see if it is
trapped or not.
</P>
<P>Under NT, this will occasionally just hang. On those
occasions when the test does not hang, the zero-division is
in fact trapped. That doesn't prevent hanging elsewhere.
</P>
<P>You have two options. You can get a newer cygwin1.dll (see the
Cygwin paragraph in the
<A HREF="../install.html">installation instructions</A>).
Or you can get a prebuilt set of bits/std_limits.h and
src/limitsMEMBERS.cc files from Mumit Khan's
<A HREF="http://www.xraylith.wisc.edu/~khan/software/gnu-win32/libstdc++-v3.html">Cygwin-related website</A>.
</P> </P>
<HR> <HR>
...@@ -473,7 +440,8 @@ to the list</A>, Nathan Myers announced that he has started a list of ...@@ -473,7 +440,8 @@ to the list</A>, Nathan Myers announced that he has started a list of
libstdc++, either. Really! Please do not report these as bugs. libstdc++, either. Really! Please do not report these as bugs.
</P> </P>
<A NAME="4_4_Weff"> <A NAME="4_4_Weff">
<P>The biggest of these is the quadzillions of warnings about the <P><STRONG>-Weffc++</STRONG>
The biggest of these is the quadzillions of warnings about the
library headers emitted when <TT>-Weffc++</TT> is used. Making library headers emitted when <TT>-Weffc++</TT> is used. Making
libstdc++ &quot;-Weffc++-clean&quot; is not a goal of the project, libstdc++ &quot;-Weffc++-clean&quot; is not a goal of the project,
for a few reasons. Mainly, that option tries to enforce for a few reasons. Mainly, that option tries to enforce
...@@ -483,7 +451,8 @@ to the list</A>, Nathan Myers announced that he has started a list of ...@@ -483,7 +451,8 @@ to the list</A>, Nathan Myers announced that he has started a list of
</P> </P>
</A> </A>
<A NAME="4_4_rel_ops"> <A NAME="4_4_rel_ops">
<P>Another is the <TT>rel_ops</TT> namespace and the template <P><STRONG>rel_ops</STRONG>
Another is the <TT>rel_ops</TT> namespace and the template
comparison operator functions contained therein. If they become comparison operator functions contained therein. If they become
visible in the same namespace as other comparison functions visible in the same namespace as other comparison functions
(e.g., '<TT>using</TT>' them and the &lt;iterator&gt; header), (e.g., '<TT>using</TT>' them and the &lt;iterator&gt; header),
...@@ -514,7 +483,8 @@ to the list</A>, Nathan Myers announced that he has started a list of ...@@ -514,7 +483,8 @@ to the list</A>, Nathan Myers announced that he has started a list of
</P> </P>
</A> </A>
<A NAME="4_4_glibc"> <A NAME="4_4_glibc">
<P>If you're on a GNU/Linux system and have just upgraded to <P><STRONG>glibc</STRONG>
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 glibc 2.2, but are still using gcc 2.95.2, then you should have
read the glibc FAQ, specifically 2.34: read the glibc FAQ, specifically 2.34:
<PRE> <PRE>
...@@ -527,22 +497,24 @@ http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff ...@@ -527,22 +497,24 @@ http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff
</PRE> </PRE>
Note that 2.95.x shipped with the Note that 2.95.x shipped with the
<A HREF="#4_4_interface">old v2 library</A> which is no longer <A HREF="#4_4_interface">old v2 library</A> which is no longer
maintained. maintained. Also note that gcc 2.95.3 fixes this problem, but
requires a separate patch for libstdc++-v3.
</P> </P>
</A> </A>
<A NAME="4_4_checks"> <A NAME="4_4_checks">
<P>If you see compilation errors containing messages about <P><STRONG>concept checks</STRONG>
If you see compilation errors containing messages about
<TT> <EM>foo</EM>Concept </TT>and a<TT> constraints </TT> <TT> <EM>foo</EM>Concept </TT>and a<TT> constraints </TT>
member function, then most member function, then most likely you have violated one of the
likely you have violated one of the requirements for types used requirements for types used during instantiation of template
during instantiation of template containers. For example, containers and functions. For example, EqualityComparableConcept
EqualityComparableConcept appears appears if your types must be comparable with == and you have not
if your types must be comparable with == and you have not
provided this capability (a typo, or wrong visibility, or you provided this capability (a typo, or wrong visibility, or you
just plain forgot, etc). just plain forgot, etc).
</P> </P>
<P>More information, including how to optionally disable the checks, <P>More information, including how to optionally enable/disable the
is available <A HREF="../19_diagnostics/howto.html#3">here</A>. checks, is available
<A HREF="../19_diagnostics/howto.html#3">here</A>.
</P> </P>
</A> </A>
...@@ -614,9 +586,8 @@ HREF="http://gcc.gnu.org/ml/libstdc++/1999/msg00084.html">speculation</A>. ...@@ -614,9 +586,8 @@ HREF="http://gcc.gnu.org/ml/libstdc++/1999/msg00084.html">speculation</A>.
<H2><A NAME="5_3">5.3 What about the STL from SGI?</A></H2> <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> <P>The <A HREF="http://www.sgi.com/Technology/STL/">STL from SGI</A>
is merged into libstdc++-v3 with changes as necessary. is merged into libstdc++-v3 with changes as necessary.
Currently release 3.3 is being used. Changes in the STL Currently release 3.3 is being used as an initial codebase, plus
usually produce some weird bugs and lots of changes in the changes, fixes, and extensions.
rest of the libstdc++ source as we scramble to keep up. :-)
</P> </P>
<P>In particular, <TT>string</TT> is not from SGI and makes no <P>In particular, <TT>string</TT> is not from SGI and makes no
use of their &quot;rope&quot; class (which is included as an use of their &quot;rope&quot; class (which is included as an
...@@ -642,14 +613,9 @@ HREF="http://gcc.gnu.org/ml/libstdc++/1999/msg00084.html">speculation</A>. ...@@ -642,14 +613,9 @@ HREF="http://gcc.gnu.org/ml/libstdc++/1999/msg00084.html">speculation</A>.
</P> </P>
<HR> <HR>
<H2><A NAME="5_5">5.5 Compiling with &quot;-fnew-abi&quot;</A></H2> <H2><A NAME="5_5">5.5 [removed]</A></H2>
<P>Towards the end of July 1999, this subject was brought up again <P>This question has become moot and has been removed. The stub
on the mailing list under a different name. The related is here to preserve numbering (and hence links/bookmarks).
<A HREF="http://gcc.gnu.org/ml/libstdc++/1999-q3/msg00066.html">thread</A>
(by the name HOWTO-honor-std) is very instructive. More info
is at the end of RELEASE-NOTES.
</P>
<P>This functionality is now automated and turned on by default.
</P> </P>
<HR> <HR>
...@@ -672,16 +638,15 @@ HREF="http://gcc.gnu.org/ml/libstdc++/1999/msg00084.html">speculation</A>. ...@@ -672,16 +638,15 @@ HREF="http://gcc.gnu.org/ml/libstdc++/1999/msg00084.html">speculation</A>.
<HR> <HR>
<H2><A NAME="5_7">5.7 How do I get a copy of the ISO C++ Standard?</A></H2> <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 <P>Copies of the full ISO 14882 standard are available on line via the
via the ISO mirror site for committee members. Non-members, ISO mirror site for committee members. Non-members, or those who
or those who have not paid for the privilege of sitting on have not paid for the privilege of sitting on the committee and
the committee and sustained their two-meeting commitment for sustained their two-meeting commitment for voting rights, may get a
voting rights, may get a copy of the standard from their copy of the standard from their respective national standards
respective national standards organization. In the USA, organization. In the USA, this national standards organization is
this national standards organization is ANSI and their ANSI and their website is right <A HREF="http://www.ansi.org">here</A>.
website is right <A HREF="http://www.ansi.org">here</A>. (And if you've already registered with them, clicking this link will
(And if you've already registered with them, clicking this take you to directly to the place where you can
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 <A HREF="http://webstore.ansi.org/ansidocstore/product.asp?sku=ISO%2FIEC+14882%2D1998">buy
the standard on-line</A>. the standard on-line</A>.
</P> </P>
...@@ -695,9 +660,10 @@ HREF="http://gcc.gnu.org/ml/libstdc++/1999/msg00084.html">speculation</A>. ...@@ -695,9 +660,10 @@ HREF="http://gcc.gnu.org/ml/libstdc++/1999/msg00084.html">speculation</A>.
<P CLASS="fineprint"><EM> <P CLASS="fineprint"><EM>
Comments and suggestions are welcome, and may be sent to Comments and suggestions are welcome, and may be sent to
<A HREF="mailto:libstdc++@gcc.gnu.org">the mailing list</A>. <A HREF="mailto:libstdc++@gcc.gnu.org">the mailing list</A>.
<BR> $Id: index.html,v 1.7 2001/04/06 18:48:20 pme Exp $ <BR> $Id: index.html,v 1.8 2001/05/10 18:42:11 pme Exp $
</EM></P> </EM></P>
</BODY> </BODY>
</HTML> </HTML>
...@@ -20,13 +20,12 @@ ...@@ -20,13 +20,12 @@
8. [11]What if I have more questions? 8. [11]What if I have more questions?
2. [12]Installation 2. [12]Installation
1. [13]How do I install libstdc++-v3? 1. [13]How do I install libstdc++-v3?
2. [14]Is this a drop-in replacement for the libstdc++ that's 2. [14][removed]
shipped with g++?
3. [15]What is this CVS thing that you keep mentioning? 3. [15]What is this CVS thing that you keep mentioning?
4. [16]How do I know if it works? 4. [16]How do I know if it works?
3. [17]Platform-Specific Issues 3. [17]Platform-Specific Issues
1. [18]Can libstdc++-v3 be used with <my favorite compiler>? 1. [18]Can libstdc++-v3 be used with <my favorite compiler>?
2. [19]Building under Cygwin hangs/explodes!? 2. [19][removed]
3. [20]Building under DEC OSF kills the assembler 3. [20]Building under DEC OSF kills the assembler
4. [21]Known Bugs and Non-Bugs 4. [21]Known Bugs and Non-Bugs
1. [22]What works already? 1. [22]What works already?
...@@ -46,7 +45,7 @@ ...@@ -46,7 +45,7 @@
2. [34]What's next after libstdc++-v3? 2. [34]What's next after libstdc++-v3?
3. [35]What about the STL from SGI? 3. [35]What about the STL from SGI?
4. [36]Extensions and Backward Compatibility 4. [36]Extensions and Backward Compatibility
5. [37]Compiling with "-fnew-abi" 5. [37][removed]
6. [38]Is libstdc++-v3 thread-safe? 6. [38]Is libstdc++-v3 thread-safe?
7. [39]How do I get a copy of the ISO C++ Standard? 7. [39]How do I get a copy of the ISO C++ Standard?
_________________________________________________________________ _________________________________________________________________
...@@ -184,39 +183,39 @@ ...@@ -184,39 +183,39 @@
Complete instructions are not given here (this is a FAQ, not an Complete instructions are not given here (this is a FAQ, not an
installation document), but the tools required are few: installation document), but the tools required are few:
* A release of libstdc++. * A 3.x release of GCC. Note that building GCC is much easier and
* A recent release of GCC (version 2.95 works). Note that building more automated than building the GCC 2.[78] series was. If you are
GCC is much easier and more automated than building the GCC 2.[78] using GCC 2.95, you can still build earlier snapshots of
series was. libstdc++.
* If you plan on hacking around with the makefiles, you will need
the tools [53]autoconfand [54]automake.
* GNU Make is the only make that supports these makefiles. * GNU Make is the only make that supports these makefiles.
* The GNU Autotools are needed if you are messing with the configury
or makefiles.
The file [55]documentation.html provides a good overview of the steps The file [53]documentation.html provides a good overview of the steps
necessary to build, install, and use the library. Instructions for necessary to build, install, and use the library. Instructions for
configuring the library with new flags such as --enable-threads are configuring the library with new flags such as --enable-threads are
there also. there also, as well as patches and instructions for working with GCC
2.95.
The top-level install.html and [56]RELEASE-NOTES files contain the The top-level install.html and [54]RELEASE-NOTES files contain the
exact build and installation instructions. You may wish to browse exact build and installation instructions. You may wish to browse
those files over CVSweb ahead of time to get a feel for what's those files over CVSweb ahead of time to get a feel for what's
required. RELEASE-NOTES is located in the ".../docs/17_intro/" required. RELEASE-NOTES is located in the ".../docs/17_intro/"
directory of the distribution. directory of the distribution.
_________________________________________________________________ _________________________________________________________________
2.2 Is this a drop-in replacement for the libstdc++ that's shipped with g++? 2.2 [removed]
Yes, as of 2.90.8, it is intended as such. And as of 2.91, This question has become moot and has been removed. The stub is here
libstdc++-v3 is the library that's shipped with g++, so much of this to preserve numbering (and hence links/bookmarks).
answer has become moot.
_________________________________________________________________ _________________________________________________________________
2.3 What is this CVS thing that you keep mentioning? 2.3 What is this CVS thing that you keep mentioning?
The Concurrent Versions System is one of several revision control The Concurrent Versions System is one of several revision control
packages. It was selected for GNU projects because it's free (speech), packages. It was selected for GNU projects because it's free (speech),
free (beer), and very high quality. The [57]CVS entry in the GNU free (beer), and very high quality. The [55]CVS entry in the GNU
software catalogue has a better description as well as a [58]link to software catalogue has a better description as well as a [56]link to
the makers of CVS. the makers of CVS.
The "anonymous client checkout" feature of CVS is similar to anonymous The "anonymous client checkout" feature of CVS is similar to anonymous
...@@ -229,21 +228,13 @@ ...@@ -229,21 +228,13 @@
2.4 How do I know if it works? 2.4 How do I know if it works?
libstdc++-v3 comes with its own testsuite. You do not need to actually libstdc++-v3 comes with its own testsuite. You do not need to actually
install the library ("gmake install") to run the testsuite. Note that install the library ("gmake install") to run the testsuite.
2.91 does not use DejaGNU yet.
To run the testsuite on the library after building it, use "gmake To run the testsuite on the library after building it, use "gmake
check" while in your build directory. To run the testsuite on the check" while in your build directory. To run the testsuite on the
library after building and installing it, use "gmake check-install" library after building and installing it, use "gmake check-install"
instead. instead.
The testsuite subdirectory in your build directory will then contain
three files of the form YYYYMMDD-mkcheck*.txt. One of them
(-mkcheck.txt itself) contains the results of the tests; this can be
mailed to the list. The other files (-mkchecklog.txt and
-mkcheckfiles.txt) contain messages from the compiler while building
the test programs, and a list of the tests to be run, respectively.
If you find bugs in the testsuite programs themselves, or if you think 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, please write of a new test program that should be added to the suite, please write
up your idea and send it to the list! up your idea and send it to the list!
...@@ -269,26 +260,10 @@ ...@@ -269,26 +260,10 @@
and optimized for GCC/g++, however. and optimized for GCC/g++, however.
_________________________________________________________________ _________________________________________________________________
3.2 Building under Cygwin hangs/explodes!? 3.2 [removed]
Sometimes, yes. You're probably in the middle of generating the
numeric_limits specializations when it hangs, right? Thought so...
The <limits> header and its associated library code are
platform-specific. These files get generated from scratch during
installation, and it is this generator that is hanging. More
specifically, the only sure way to determine what the
numeric_limits<T>::traps boolean should be is to actually divide by
zero and see if it is trapped or not.
Under NT, this will occasionally just hang. On those occasions when This question has become moot and has been removed. The stub is here
the test does not hang, the zero-division is in fact trapped. That to preserve numbering (and hence links/bookmarks).
doesn't prevent hanging elsewhere.
You have two options. You can get a newer cygwin1.dll (see the Cygwin
paragraph in the [59]installation instructions). Or you can get a
prebuilt set of bits/std_limits.h and src/limitsMEMBERS.cc files from
Mumit Khan's [60]Cygwin-related website.
_________________________________________________________________ _________________________________________________________________
3.3 Building DEC OSF kills the assembler 3.3 Building DEC OSF kills the assembler
...@@ -299,7 +274,7 @@ ...@@ -299,7 +274,7 @@
install GNU as and arrange for the GCC build to use it (or merge the install GNU as and arrange for the GCC build to use it (or merge the
sources and build it during the bootstrap). sources and build it during the bootstrap).
Anyone who [61]knows the DEC assembler well enough to provide the Anyone who [57]knows the DEC assembler well enough to provide the
equivalent of these two pseudos would win praise and accolades from equivalent of these two pseudos would win praise and accolades from
many. many.
_________________________________________________________________ _________________________________________________________________
...@@ -352,16 +327,16 @@ New: ...@@ -352,16 +327,16 @@ New:
4.3 Bugs in the C++ language/lib specification 4.3 Bugs in the C++ language/lib specification
Yes, unfortunately, there are some. In a [62]message to the list, Yes, unfortunately, there are some. In a [58]message to the list,
Nathan Myers announced that he has started a list of problems in the Nathan Myers announced that he has started a list of problems in the
ISO C++ Standard itself, especially with regard to the chapters that ISO C++ Standard itself, especially with regard to the chapters that
concern the library. The list itself is [63]posted on his website. concern the library. The list itself is [59]posted on his website.
Developers who are having problems interpreting the Standard may wish Developers who are having problems interpreting the Standard may wish
to consult his notes. to consult his notes.
For those people who are not part of the ISO Library Group (i.e., 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 nearly all of us needing to read this page in the first place :-), a
public list of the library defects is occasionally published [64]here. public list of the library defects is occasionally published [60]here.
_________________________________________________________________ _________________________________________________________________
4.4 Things in libstdc++ that look like bugs 4.4 Things in libstdc++ that look like bugs
...@@ -370,26 +345,26 @@ New: ...@@ -370,26 +345,26 @@ New:
language specification (4.3), but aren't really bugs in libstdc++, language specification (4.3), but aren't really bugs in libstdc++,
either. Really! Please do not report these as bugs. either. Really! Please do not report these as bugs.
The biggest of these is the quadzillions of warnings about the library -Weffc++ The biggest of these is the quadzillions of warnings about
headers emitted when -Weffc++ is used. Making libstdc++ the library headers emitted when -Weffc++ is used. Making libstdc++
"-Weffc++-clean" is not a goal of the project, for a few reasons. "-Weffc++-clean" is not a goal of the project, for a few reasons.
Mainly, that option tries to enforce object-oriented programming, Mainly, that option tries to enforce object-oriented programming,
while the Standard Library isn't necessarily trying to be OO. There while the Standard Library isn't necessarily trying to be OO. There
are multiple solutions under discussion. are multiple solutions under discussion.
Another is the rel_ops namespace and the template comparison operator rel_ops Another is the rel_ops namespace and the template comparison
functions contained therein. If they become visible in the same operator functions contained therein. If they become visible in the
namespace as other comparison functions (e.g., 'using' them and the same namespace as other comparison functions (e.g., 'using' them and
<iterator> header), then you will suddenly be faced with huge numbers the <iterator> header), then you will suddenly be faced with huge
of ambiguity errors. This was discussed on the -v3 list; Nathan Myers numbers of ambiguity errors. This was discussed on the -v3 list;
[65]sums things up here. Nathan Myers [61]sums things up here.
The g++-3 headers are not ours The g++-3 headers are not ours
If you have found an extremely broken header file which is causing If you have found an extremely broken header file which is causing
problems for you, look carefully before submitting a "high" priority problems for you, look carefully before submitting a "high" priority
bug report (which you probably shouldn't do anyhow; see the last bug report (which you probably shouldn't do anyhow; see the last
paragraph of the page describing [66]the GCC bug database). paragraph of the page describing [62]the GCC bug database).
If the headers are in ${prefix}/include/g++-3, then you are using the If the headers are in ${prefix}/include/g++-3, then you are using the
old libstdc++-v2 library, which is nonstandard and unmaintained. Do old libstdc++-v2 library, which is nonstandard and unmaintained. Do
...@@ -397,11 +372,11 @@ New: ...@@ -397,11 +372,11 @@ New:
Currently our header files are installed in ${prefix}/include/g++-v3 Currently our header files are installed in ${prefix}/include/g++-v3
(see the 'v'?). This may change with the next release of GCC, as it (see the 'v'?). This may change with the next release of GCC, as it
may be too confusing, but [67]the question has not yet been decided. may be too confusing, but [63]the question has not yet been decided.
If you're on a GNU/Linux system and have just upgraded to glibc 2.2, glibc If you're on a GNU/Linux system and have just upgraded to glibc
but are still using gcc 2.95.2, then you should have read the glibc 2.2, but are still using gcc 2.95.2, then you should have read the
FAQ, specifically 2.34: glibc FAQ, specifically 2.34:
2.34. When compiling C++ programs, I get a compilation error in streambuf.h. 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 {BH} You are using g++ 2.95.2? After upgrading to glibc 2.2, you need to
...@@ -410,35 +385,36 @@ type has changed in glibc 2.2. The patch is at ...@@ -410,35 +385,36 @@ type has changed in glibc 2.2. The patch is at
http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff
Note that 2.95.x shipped with the [68]old v2 library which is no Note that 2.95.x shipped with the [64]old v2 library which is no
longer maintained. longer maintained. Also note that gcc 2.95.3 fixes this problem, but
requires a separate patch for libstdc++-v3.
If you see compilation errors containing messages about fooConcept and concept checks If you see compilation errors containing messages about
a constraints member function, then most likely you have violated one fooConcept and a constraints member function, then most likely you
of the requirements for types used during instantiation of template have violated one of the requirements for types used during
containers. For example, EqualityComparableConcept appears if your instantiation of template containers and functions. For example,
types must be comparable with == and you have not provided this EqualityComparableConcept appears if your types must be comparable
capability (a typo, or wrong visibility, or you just plain forgot, with == and you have not provided this capability (a typo, or wrong
etc). visibility, or you just plain forgot, etc).
More information, including how to optionally disable the checks, is More information, including how to optionally enable/disable the
available [69]here. checks, is available [65]here.
_________________________________________________________________ _________________________________________________________________
4.5 Aw, that's easy to fix! 4.5 Aw, that's easy to fix!
If you have found a bug in the library and you think you have a 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 working fix, then send it in! The main GCC site has a page on
[70]submitting patches that covers the procedure, but for libstdc++ [66]submitting patches that covers the procedure, but for libstdc++
you should also send the patch to our mailing list in addition to the you should also send the patch to our mailing list in addition to the
GCC patches mailing list. The libstdc++ [71]contributors' page also GCC patches mailing list. The libstdc++ [67]contributors' page also
talks about how to submit patches. talks about how to submit patches.
In addition to the description, the patch, and the ChangeLog entry, it 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 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 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 way of being reintroduced; if an old bug creeps back in, it will be
caught immediately by the [72]testsuite -- but only if such a test caught immediately by the [68]testsuite -- but only if such a test
exists. exists.
_________________________________________________________________ _________________________________________________________________
...@@ -476,16 +452,15 @@ http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff ...@@ -476,16 +452,15 @@ http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff
Bugfixes and rewrites (to improve or fix thread safety, for instance) Bugfixes and rewrites (to improve or fix thread safety, for instance)
will of course be a continuing task. will of course be a continuing task.
[73]This question about the next libstdc++ prompted some brief but [69]This question about the next libstdc++ prompted some brief but
interesting [74]speculation. interesting [70]speculation.
_________________________________________________________________ _________________________________________________________________
5.3 What about the STL from SGI? 5.3 What about the STL from SGI?
The [75]STL from SGI is merged into libstdc++-v3 with changes as The [71]STL from SGI is merged into libstdc++-v3 with changes as
necessary. Currently release 3.3 is being used. Changes in the STL necessary. Currently release 3.3 is being used as an initial codebase,
usually produce some weird bugs and lots of changes in the rest of the plus changes, fixes, and extensions.
libstdc++ source as we scramble to keep up. :-)
In particular, string is not from SGI and makes no use of their "rope" In particular, string is not from SGI and makes no use of their "rope"
class (which is included as an optional extension), nor is valarray class (which is included as an optional extension), nor is valarray
...@@ -503,17 +478,13 @@ http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff ...@@ -503,17 +478,13 @@ http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff
#include <ext/hash_map> #include <ext/hash_map>
Extensions to the library have [76]their own page. Extensions to the library have [72]their own page.
_________________________________________________________________ _________________________________________________________________
5.5 Compiling with "-fnew-abi" 5.5 [removed]
Towards the end of July 1999, this subject was brought up again on the
mailing list under a different name. The related [77]thread (by the
name HOWTO-honor-std) is very instructive. More info is at the end of
RELEASE-NOTES.
This functionality is now automated and turned on by default. This question has become moot and has been removed. The stub is here
to preserve numbering (and hence links/bookmarks).
_________________________________________________________________ _________________________________________________________________
5.6 Is libstdc++-v3 thread-safe? 5.6 Is libstdc++-v3 thread-safe?
...@@ -523,8 +494,8 @@ http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff ...@@ -523,8 +494,8 @@ http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff
This is assuming that your idea of "multithreaded" is the same as This is assuming that your idea of "multithreaded" is the same as
ours... The general question of multithreading and libstdc++-v3 is ours... The general question of multithreading and libstdc++-v3 is
addressed in the chapter-specific advice for [78]Library Introduction. addressed in the chapter-specific advice for [73]Library Introduction.
Threadsafe containers are covered in more detail in [79]the Received Threadsafe containers are covered in more detail in [74]the Received
Wisdom section on containers. Wisdom section on containers.
_________________________________________________________________ _________________________________________________________________
...@@ -536,17 +507,17 @@ http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff ...@@ -536,17 +507,17 @@ http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff
their two-meeting commitment for voting rights, may get a copy of the their two-meeting commitment for voting rights, may get a copy of the
standard from their respective national standards organization. In the standard from their respective national standards organization. In the
USA, this national standards organization is ANSI and their website is USA, this national standards organization is ANSI and their website is
right [80]here. (And if you've already registered with them, clicking right [75]here. (And if you've already registered with them, clicking
this link will take you to directly to the place where you can [81]buy this link will take you to directly to the place where you can [76]buy
the standard on-line. the standard on-line.
Who is your country's member body? Visit the [82]ISO homepage and find Who is your country's member body? Visit the [77]ISO homepage and find
out! out!
_________________________________________________________________ _________________________________________________________________
Comments and suggestions are welcome, and may be sent to [83]the Comments and suggestions are welcome, and may be sent to [78]the
mailing list. mailing list.
$Id: index.html,v 1.7 2001/04/06 18:48:20 pme Exp $ $Id: index.html,v 1.8 2001/05/10 18:42:11 pme Exp $
References References
...@@ -602,34 +573,29 @@ References ...@@ -602,34 +573,29 @@ References
50. mailto:libstdc++@gcc.gnu.org 50. mailto:libstdc++@gcc.gnu.org
51. mailto:pme@sources.redhat.com 51. mailto:pme@sources.redhat.com
52. mailto:gdr@gcc.gnu.org 52. mailto:gdr@gcc.gnu.org
53. http://sources.redhat.com/autoconf/ 53. ../documentation.html
54. http://sources.redhat.com/automake/ 54. ../17_intro/RELEASE-NOTES
55. ../documentation.html 55. http://www.gnu.org/software/cvs/cvs.html
56. ../17_intro/RELEASE-NOTES 56. http://www.cvshome.org/
57. http://www.gnu.org/software/cvs/cvs.html 57. http://gcc.gnu.org/ml/libstdc++/2000-12/msg00279.html
58. http://www.cyclic.com/ 58. http://gcc.gnu.org/ml/libstdc++/1998/msg00006.html
59. ../install.html 59. http://www.cantrip.org/draft-bugs.txt
60. http://www.xraylith.wisc.edu/~khan/software/gnu-win32/libstdc++-v3.html 60. http://anubis.dkuug.dk/jtc1/sc22/wg21/
61. http://gcc.gnu.org/ml/libstdc++/2000-12/msg00279.html 61. http://gcc.gnu.org/ml/libstdc++/2001-01/msg00247.html
62. http://gcc.gnu.org/ml/libstdc++/1998/msg00006.html 62. http://gcc.gnu.org/gnatswrite.html
63. http://www.cantrip.org/draft-bugs.txt 63. http://gcc.gnu.org/ml/gcc/2000-10/msg00732.html
64. http://anubis.dkuug.dk/jtc1/sc22/wg21/ 64. ../faq/index.html#4_4_interface
65. http://gcc.gnu.org/ml/libstdc++/2001-01/msg00247.html 65. ../19_diagnostics/howto.html#3
66. http://gcc.gnu.org/gnatswrite.html 66. http://gcc.gnu.org/contribute.html
67. http://gcc.gnu.org/ml/gcc/2000-10/msg00732.html 67. ../17_intro/contribute.html
68. ../faq/index.html#4_4_interface 68. ../faq/index.html#2_4
69. ../19_diagnostics/howto.html#3 69. http://gcc.gnu.org/ml/libstdc++/1999/msg00080.html
70. http://gcc.gnu.org/contribute.html 70. http://gcc.gnu.org/ml/libstdc++/1999/msg00084.html
71. ../17_intro/contribute.html 71. http://www.sgi.com/Technology/STL/
72. ../faq/index.html#2_4 72. ../ext/howto.html
73. http://gcc.gnu.org/ml/libstdc++/1999/msg00080.html 73. http://gcc.gnu.org/onlinedocs/libstdc++/17_intro/howto.html#3
74. http://gcc.gnu.org/ml/libstdc++/1999/msg00084.html 74. http://gcc.gnu.org/onlinedocs/libstdc++/23_containers/howto.html
75. http://www.sgi.com/Technology/STL/ 75. http://www.ansi.org/
76. ../ext/howto.html 76. http://webstore.ansi.org/ansidocstore/product.asp?sku=ISO%2FIEC+14882%2D1998
77. http://gcc.gnu.org/ml/libstdc++/1999-q3/msg00066.html 77. http://www.iso.ch/
78. http://gcc.gnu.org/onlinedocs/libstdc++/17_intro/howto.html#3 78. mailto:libstdc++@gcc.gnu.org
79. http://gcc.gnu.org/onlinedocs/libstdc++/23_containers/howto.html
80. http://www.ansi.org/
81. http://webstore.ansi.org/ansidocstore/product.asp?sku=ISO%2FIEC+14882%2D1998
82. http://www.iso.ch/
83. mailto:libstdc++@gcc.gnu.org
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
<META NAME="GENERATOR" CONTENT="vi and eight fingers"> <META NAME="GENERATOR" CONTENT="vi and eight fingers">
<TITLE>libstdc++-v3 Installation Instructions</TITLE> <TITLE>libstdc++-v3 Installation Instructions</TITLE>
<LINK REL=StyleSheet HREF="lib3styles.css"> <LINK REL=StyleSheet HREF="lib3styles.css">
<!-- $Id: install.html,v 1.4 2001/02/07 00:03:20 pme Exp $ --> <!-- $Id: install.html,v 1.5 2001/04/03 00:26:54 pme Exp $ -->
</HEAD> </HEAD>
<BODY> <BODY>
...@@ -39,27 +39,32 @@ ...@@ -39,27 +39,32 @@
<H2><A NAME="prereqs">Tools you will need beforehand</A></H2> <H2><A NAME="prereqs">Tools you will need beforehand</A></H2>
<P>You will need a recent version of g++ to compile the snapshot of <P>You will need a recent version of g++ to compile the snapshot of
libstdc++, one of the post-2.95.2 GCC libstdc++, such as one of the GCC 3.x snapshots (insert standard
snapshots (insert standard caveat about using snapshots rather caveat about using snapshots rather than formal releases). You
than formal releases). You will need the full source will need the full source
distribution to whatever compiler release you are using. The distribution to whatever compiler release you are using. The
GCC snapshots can be had from one of the sites on their GCC snapshots can be had from one of the sites on their
<A HREF="http://gcc.gnu.org/mirrors.html">mirror list</A>. <A HREF="http://gcc.gnu.org/mirrors.html">mirror list</A>.
</P> </P>
<P>In addition, if you plan to modify the makefiles or regenerate <P>In addition, if you plan to modify the makefiles or regenerate the
the configure scripts you'll need the nuevo automake, libtool configure scripts you'll need recent versions of the GNU Autotools:
and autoconf to regenerate the Makefiles and configure autoconf (version 2.50 or later),
scripts. These tools are all required to be installed in the automake (version 1.4 or later), <!-- special version? -->
same location (most linux distributions install these tools by and libtool (multilanguage, version 1.4 or later), <!-- really? -->
default, so no worries.) in order to rebuild the files.
These tools are all required to be installed in the same location
(most linux distributions install these tools by default, so no
worries as long as the versions are correct).
</P> </P>
<P>If you don't have bash, and want to run <TT>'make check'</TT> to <P>GNU Make is the only 'make' that will parse the makefiles correctly.
test your build, you'll need to get bash 2.x. Also recommended </P>
is GNU Make, since it is the only 'make' that will parse these
makefiles correctly. We are moving to DejaGNU, so you'll <P>To test your build, you will need either DejaGNU 1.4 (to run
probably want to get that. <TT>'make check'</TT> like
<A HREF="http://gcc.gnu.org/install/test.html">the rest of GCC</A>),
or Bash 2.x (to run <TT>'make check-script'</TT>).
</P> </P>
<P>As of June 19, 2000, libstdc++ attempts to use tricky and <P>As of June 19, 2000, libstdc++ attempts to use tricky and
...@@ -73,44 +78,20 @@ ...@@ -73,44 +78,20 @@
<A HREF="ftp://sources.redhat.com/pub/binutils">here</A>. <A HREF="ftp://sources.redhat.com/pub/binutils">here</A>.
</P> </P>
<!-- Commented until some system-specific requirements appear.
<P>Finally, a few system-specific requirements: <P>Finally, a few system-specific requirements:
<DL> <DL>
<DT>Cygwin <DT>Cygwin
<DD>If you are using Cygwin to compile libstdc++-v3 on Win32, you'll <DD>If you are using Cygwin to compile libstdc++-v3 on Win32, you'll
have to get a version of the cygwin1.dll that is dated on or [snip]
after February 1, 2000. This is necessary to successfully run
the script &quot;mknumeric_limits&quot; which probes the
floating-point
environment of the host in question -- before this date, Cygwin
would freeze when running this script. In addition, you may
want to get a current version of libtool (say libtool-1.3.4
and above) as earlier versions supposedly had problems creating
shared libraries.
</DL> </DL>
</P> </P>
-->
<HR> <HR>
<H2><A NAME="srcsetup">Setting up the source directories</A></H2> <H2><A NAME="srcsetup">Setting up the source directories</A></H2>
<P><EM>As the libstdc++-v3 sources and the core GCC sources have
converged, more and more effort goes to building the
library as the default version to be shipped with g++. With the
2.90.8 snapshot, and especially for CVS versions after this
release, this is treated as the usual scenario. If you want to
build the library all by itself, you will need to explicitly
disable certain features (like namespaces) since the core GCC
library, libgcc.a, will not be rebuilt with those same features.
</EM>
</P>
<P>By default, all configurations of libstdc++-v3 now have namespaces
enabled. Being able to select/de-select this option was a complex task
that had hopelessly confused many otherwise intelligent people, and
provided an endless stream of silent cursing and cries for help.
Because of this, gcc sources are required, and are no longer optional.
</P>
<P>The following definitions will be used throughout the rest of this <P>The following definitions will be used throughout the rest of this
document: document:
<UL> <UL>
...@@ -129,7 +110,7 @@ ...@@ -129,7 +110,7 @@
</UL> </UL>
Note: Note:
<OL> <OL>
<LI>The .91 snapshot and following are intended to replace the <LI>The 3.0 version and following are intended to replace the
library that comes with the compiler, so <EM>libsrcdir</EM> library that comes with the compiler, so <EM>libsrcdir</EM>
and <EM>libbuilddir</EM> must be contained under and <EM>libbuilddir</EM> must be contained under
<EM>gccsrcdir</EM> and <EM>gccbuilddir</EM>, respectively. <EM>gccsrcdir</EM> and <EM>gccbuilddir</EM>, respectively.
...@@ -140,43 +121,10 @@ ...@@ -140,43 +121,10 @@
</OL> </OL>
</P> </P>
<P>Since the release of libstdc++-2.90.8, configuration patches have gone <P>Check out or download the gcc sources: the resulting source directory
into CVS gcc that make the management of the various libstdc++ source (<TT>gcc</TT> or <TT>gcc-3.0</TT>, for example) is <EM>gccsrcdir</EM>.
trees a bit easier. Because of this, both libstdc++-v2 and Once in <EM>gccsrcdir</EM>, you'll need to rename or delete the
libstdc++-v3 and live together in peace, without the need libstdc++-v3 directory which comes with that snapshot:
for soft linking. The setup instructions are slightly different,
depending on whether you want to use CVS gcc or a snapshot. Please
choose the appropriate scenario:
</P>
<P><B>...with a gcc-2.9[67] snapshot</B>
<P>Unpack the <EM>gccsrcdir</EM> and go into that directory. For
instance, <TT>gcc-2.95.2</TT> is a valid <EM>gccsrcdir</EM>.
Once in <EM>gccsrcdir</EM>, you'll need to rename or delete
the libstdc++-v3 directory which comes with that snapshot:
<PRE>
mv libstdc++-v3 libstdc++-v3-previous <STRONG>[OR]</STRONG>
rm -r libstdc++-v3</PRE>
</P>
<P>Next, unpack the libstdc++-v3 library tarball into the
<EM>gccsrcdir</EM> directory; it will create a
<EM>libsrcdir</EM> called <TT>libstdc++-<EM>version</EM></TT>:
<PRE>
gzip -dc libstdc++-version.tar.gz | tar xf -</PRE>
</P>
<P>Finally, make a soft link between <EM>libsrcdir</EM> and
<TT>libstdc++-v3</TT> so that libstdc++-v3 will be the default C++
library used.
<PRE>
ln -s <EM>libsrcdir</EM> libstdc++-v3</PRE>
</P>
</P>
<P><B>...with CVS gcc</B>
<P>Check out or download the gcc sources: the resulting source
directory is <EM>gccsrcdir</EM>. Once in <EM>gccsrcdir</EM>,
you'll need to rename or delete the libstdc++-v3 directory
which comes with that snapshot:
<PRE> <PRE>
mv libstdc++-v3 libstdc++-v3-previous <STRONG>[OR]</STRONG> mv libstdc++-v3 libstdc++-v3-previous <STRONG>[OR]</STRONG>
rm -r libstdc++-v3</PRE> rm -r libstdc++-v3</PRE>
...@@ -192,7 +140,6 @@ ...@@ -192,7 +140,6 @@
<PRE> <PRE>
mv <EM>libsrcdir</EM> libstdc++-v3</PRE> mv <EM>libsrcdir</EM> libstdc++-v3</PRE>
</P> </P>
</P>
<HR> <HR>
...@@ -201,7 +148,7 @@ ...@@ -201,7 +148,7 @@
<A HREF="http://gcc.gnu.org/install/">GCC Installation <A HREF="http://gcc.gnu.org/install/">GCC Installation
Instructions</A> first. Instructions</A> first.
</P> </P>
<P>Due to namespaces, when building libstdc++-v3 you'll have to configure <P>When building libstdc++-v3 you'll have to configure
the entire <EM>gccsrcdir</EM> directory. The full list of libstdc++-v3 the entire <EM>gccsrcdir</EM> directory. The full list of libstdc++-v3
specific configuration options, not dependent on the specific compiler specific configuration options, not dependent on the specific compiler
release being used, can be found <A HREF="configopts.html">here</A>. release being used, can be found <A HREF="configopts.html">here</A>.
...@@ -235,13 +182,13 @@ ...@@ -235,13 +182,13 @@
<PRE> <PRE>
make all-target-<EM>libstdc++-v3</EM></PRE> make all-target-<EM>libstdc++-v3</EM></PRE>
This will configure and build the C++ library in the This will configure and build the C++ library in the
<EM>gccbuilddir/cpu-vendor-OS/</EM>libstdc++ directory. <EM>gccbuilddir/cpu-vendor-os/</EM>libstdc++ directory.
</P> </P>
<P>If you are rebuilding from a previous build [attempt], some <P>If you are rebuilding from a previous build [attempt], some
information is kept in a cache file. This is stored in information is kept in a cache file. This is stored in
<EM>gccbuilddir/cpu-vendor-OS/</EM> if you are building with <EM>gccbuilddir/cpu-vendor-os/</EM> if you are building with
multilibs (the default), or in multilibs (the default), or in
<EM>gccbuilddir/cpu-vendor-OS/</EM>libstdc++-v3 if you have <EM>gccbuilddir/cpu-vendor-os/</EM>libstdc++-v3 if you have
multilibs disabled. The filename is config.cache; if previous multilibs disabled. The filename is config.cache; if previous
information is causing problems, you can delete it entirely, or information is causing problems, you can delete it entirely, or
simply edit it and remove lines. simply edit it and remove lines.
...@@ -263,10 +210,9 @@ ...@@ -263,10 +210,9 @@
<PRE> <PRE>
lib/ lib/
include/g++-v3/ include/g++-v3/
backward/
bits/ bits/
ext/ <EM>cpu-vendor-os</EM>/bits/
CPU-vendor-OS/include/g++-v3/
bits/
ext/</PRE> ext/</PRE>
</P> </P>
<P>You can check the status of the build without installing it using <P>You can check the status of the build without installing it using
...@@ -316,6 +262,10 @@ ...@@ -316,6 +262,10 @@
<P>Use the <TT>ldd(1)</TT> utility to show which library the system <P>Use the <TT>ldd(1)</TT> utility to show which library the system
thinks it will get at runtime. thinks it will get at runtime.
</P> </P>
<P>A libstdc++.la file is also installed, for use with Libtool. If
you use Libtool to create your executables, these details are
taken care of for you.
</P>
</OL> </OL>
</P> </P>
...@@ -334,7 +284,7 @@ ...@@ -334,7 +284,7 @@
<P CLASS="fineprint"><EM> <P CLASS="fineprint"><EM>
Comments and suggestions are welcome, and may be sent to Comments and suggestions are welcome, and may be sent to
<A HREF="mailto:libstdc++@gcc.gnu.org">the mailing list</A>. <A HREF="mailto:libstdc++@gcc.gnu.org">the mailing list</A>.
<BR> $Id: install.html,v 1.4 2001/02/07 00:03:20 pme Exp $ <BR> $Id: install.html,v 1.5 2001/04/03 00:26:54 pme Exp $
</EM></P> </EM></P>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment