mirror of
https://gcc.gnu.org/git/gcc.git
synced 2024-11-30 07:14:09 +08:00
howto.html: Update URL for SGI STL docs.
2003-07-16 Jonathan Wakely <redi@gcc.gnu.org> * docs/html/ext/howto.html: Update URL for SGI STL docs. * docs/html/faq/index.html: Same. * docs/html/faq/index.txt: Regenerate. From-SVN: r69463
This commit is contained in:
parent
1e0343ddbb
commit
dced0d12fb
@ -1,3 +1,9 @@
|
|||||||
|
2003-07-16 Jonathan Wakely <redi@gcc.gnu.org>
|
||||||
|
|
||||||
|
* docs/html/ext/howto.html: Update URL for SGI STL docs.
|
||||||
|
* docs/html/faq/index.html: Same.
|
||||||
|
* docs/html/faq/index.txt: Regenerate.
|
||||||
|
|
||||||
2003-07-16 Paolo Carlini <pcarlini@unitus.it>
|
2003-07-16 Paolo Carlini <pcarlini@unitus.it>
|
||||||
|
|
||||||
PR libstdc++/11528
|
PR libstdc++/11528
|
||||||
|
@ -79,12 +79,12 @@
|
|||||||
</p>
|
</p>
|
||||||
<p>Each of the associative containers map, multimap, set, and multiset
|
<p>Each of the associative containers map, multimap, set, and multiset
|
||||||
have a counterpart which uses a
|
have a counterpart which uses a
|
||||||
<a href="http://www.sgi.com/Technology/STL/HashFunction.html">hashing
|
<a href="http://www.sgi.com/tech/stl/HashFunction.html">hashing
|
||||||
function</a> to do the arranging, instead of a strict weak ordering
|
function</a> to do the arranging, instead of a strict weak ordering
|
||||||
function. The classes take as one of their template parameters a
|
function. The classes take as one of their template parameters a
|
||||||
function object that will return the hash value; by default, an
|
function object that will return the hash value; by default, an
|
||||||
instantiation of
|
instantiation of
|
||||||
<a href="http://www.sgi.com/Technology/STL/hash.html">hash</a>.
|
<a href="http://www.sgi.com/tech/stl/hash.html">hash</a>.
|
||||||
You should specialize this functor for your class, or define your own,
|
You should specialize this functor for your class, or define your own,
|
||||||
before trying to use one of the hashing classes.
|
before trying to use one of the hashing classes.
|
||||||
</p>
|
</p>
|
||||||
|
@ -868,7 +868,7 @@ http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff
|
|||||||
|
|
||||||
<hr />
|
<hr />
|
||||||
<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/tech/stl/">STL from SGI</a>,
|
||||||
version 3.3, was the most recent merge of the STL codebase. The
|
version 3.3, was the most recent merge of the STL codebase. The
|
||||||
code in libstdc++ contains many fixes and changes, and it is
|
code in libstdc++ contains many fixes and changes, and it is
|
||||||
very likely that the SGI code is no longer under active
|
very likely that the SGI code is no longer under active
|
||||||
|
@ -1,16 +1,16 @@
|
|||||||
|
|
||||||
libstdc++ Frequently Asked Questions
|
libstdc++ Frequently Asked Questions
|
||||||
|
|
||||||
The latest version of this document is always available at
|
The latest version of this document is always available at
|
||||||
[1]http://gcc.gnu.org/onlinedocs/libstdc++/faq/. The main
|
[1]http://gcc.gnu.org/onlinedocs/libstdc++/faq/. The main
|
||||||
documentation page is at
|
documentation page is at
|
||||||
[2]http://gcc.gnu.org/onlinedocs/libstdc++/documentation.html.
|
[2]http://gcc.gnu.org/onlinedocs/libstdc++/documentation.html.
|
||||||
|
|
||||||
To the [3]libstdc++-v3 homepage.
|
To the [3]libstdc++-v3 homepage.
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
Questions
|
Questions
|
||||||
|
|
||||||
1. [4]General Information
|
1. [4]General Information
|
||||||
1. [5]What is libstdc++-v3?
|
1. [5]What is libstdc++-v3?
|
||||||
2. [6]Why should I use libstdc++?
|
2. [6]Why should I use libstdc++?
|
||||||
@ -65,9 +65,9 @@
|
|||||||
7. [52]How do I get a copy of the ISO C++ Standard?
|
7. [52]How do I get a copy of the ISO C++ Standard?
|
||||||
8. [53]What's an ABI and why is it so messy?
|
8. [53]What's an ABI and why is it so messy?
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
1.0 General Information
|
1.0 General Information
|
||||||
|
|
||||||
1.1 What is libstdc++-v3?
|
1.1 What is libstdc++-v3?
|
||||||
|
|
||||||
The GNU Standard C++ Library v3 is an ongoing project to implement the
|
The GNU Standard C++ Library v3 is an ongoing project to implement the
|
||||||
@ -79,15 +79,15 @@
|
|||||||
just want the latest bleeding-edge code, the up-to-date source is
|
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
|
available over anonymous CVS, and can even be browsed over the Web
|
||||||
(see [55]1.4 below).
|
(see [55]1.4 below).
|
||||||
|
|
||||||
The older libstdc++-v2 project is no longer maintained; the code has
|
The older libstdc++-v2 project is no longer maintained; the code has
|
||||||
been completely replaced and rewritten. [56]If you are using V2, then
|
been completely replaced and rewritten. [56]If you are using V2, then
|
||||||
you need to report bugs to your system vendor, not to the V3 list.
|
you need to report bugs to your system vendor, not to the V3 list.
|
||||||
|
|
||||||
A more formal description of the V3 goals can be found in the official
|
A more formal description of the V3 goals can be found in the official
|
||||||
[57]design document.
|
[57]design document.
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
1.2 Why should I use libstdc++?
|
1.2 Why should I use libstdc++?
|
||||||
|
|
||||||
The completion of the ISO C++ standardization gave the C++ community a
|
The completion of the ISO C++ standardization gave the C++ community a
|
||||||
@ -95,51 +95,51 @@
|
|||||||
Library. However, all existing C++ implementations are (as the Draft
|
Library. However, all existing C++ implementations are (as the Draft
|
||||||
Standard used to say) "incomplet and incorrekt," and many suffer from
|
Standard used to say) "incomplet and incorrekt," and many suffer from
|
||||||
limitations of the compilers that use them.
|
limitations of the compilers that use them.
|
||||||
|
|
||||||
The GNU C/C++/FORTRAN/<pick-a-language> compiler (gcc, g++, etc) is
|
The GNU C/C++/FORTRAN/<pick-a-language> compiler (gcc, g++, etc) is
|
||||||
widely considered to be one of the leading compilers in the world. Its
|
widely considered to be one of the leading compilers in the world. Its
|
||||||
development has recently been taken over by the [58]GCC team. All of
|
development has recently been taken over by the [58]GCC team. All of
|
||||||
the rapid development and near-legendary [59]portability that are the
|
the rapid development and near-legendary [59]portability that are the
|
||||||
hallmarks of an open-source project are being applied to libstdc++.
|
hallmarks of an open-source project are being applied to libstdc++.
|
||||||
|
|
||||||
That means that all of the Standard classes and functions (such as
|
That means that all of the Standard classes and functions (such as
|
||||||
string, vector<>, iostreams, and algorithms) will be freely available
|
string, vector<>, iostreams, and algorithms) will be freely available
|
||||||
and fully compliant. Programmers will no longer need to "roll their
|
and fully compliant. Programmers will no longer need to "roll their
|
||||||
own" nor be worried about platform-specific incompatibilities.
|
own" nor be worried about platform-specific incompatibilities.
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
1.3 Who's in charge of it?
|
1.3 Who's in charge of it?
|
||||||
|
|
||||||
The libstdc++ project is contributed to by several developers all over
|
The libstdc++ project is contributed to by several developers all over
|
||||||
the world, in the same way as GCC or Linux. Benjamin Kosnik, Gabriel
|
the world, in the same way as GCC or Linux. Benjamin Kosnik, Gabriel
|
||||||
Dos Reis, Phil Edwards, Ulrich Drepper, Loren James Rittle, and Paolo
|
Dos Reis, Phil Edwards, Ulrich Drepper, Loren James Rittle, and Paolo
|
||||||
Carlini are the lead maintainers of the CVS archive.
|
Carlini are the lead maintainers of the CVS archive.
|
||||||
|
|
||||||
Development and discussion is held on the libstdc++ mailing list.
|
Development and discussion is held on the libstdc++ mailing list.
|
||||||
Subscribing to the list, or searching the list archives, is open to
|
Subscribing to the list, or searching the list archives, is open to
|
||||||
everyone. You can read instructions for doing so on the [60]homepage.
|
everyone. You can read instructions for doing so on the [60]homepage.
|
||||||
If you have questions, ideas, code, or are just curious, sign up!
|
If you have questions, ideas, code, or are just curious, sign up!
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
1.4 How do I get libstdc++?
|
1.4 How do I get libstdc++?
|
||||||
|
|
||||||
The [61]homepage has instructions for retrieving the latest CVS
|
The [61]homepage has instructions for retrieving the latest CVS
|
||||||
sources, and for browsing the CVS sources over the web.
|
sources, and for browsing the CVS sources over the web.
|
||||||
|
|
||||||
Stable versions of libstdc++-v3 are included with releases of [62]the
|
Stable versions of libstdc++-v3 are included with releases of [62]the
|
||||||
GCC compilers.
|
GCC compilers.
|
||||||
|
|
||||||
The subset commonly known as the Standard Template Library (chapters
|
The subset commonly known as the Standard Template Library (chapters
|
||||||
23 through 25, mostly) is adapted from the final release of the SGI
|
23 through 25, mostly) is adapted from the final release of the SGI
|
||||||
STL.
|
STL.
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
1.5 When is libstdc++ going to be finished?
|
1.5 When is libstdc++ going to be finished?
|
||||||
|
|
||||||
Nathan Myers gave the best of all possible answers, responding to a
|
Nathan Myers gave the best of all possible answers, responding to a
|
||||||
Usenet article asking this question: Sooner, if you help.
|
Usenet article asking this question: Sooner, if you help.
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
1.6 How do I contribute to the effort?
|
1.6 How do I contribute to the effort?
|
||||||
|
|
||||||
Here is [63]a page devoted to this topic. Subscribing to the mailing
|
Here is [63]a page devoted to this topic. Subscribing to the mailing
|
||||||
@ -149,25 +149,25 @@
|
|||||||
is willing to help write documentation, for example, or has found a
|
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!
|
bug in code that we all thought was working, is more than welcome!
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
1.7 What happened to libg++? I need that!
|
1.7 What happened to libg++? I need that!
|
||||||
|
|
||||||
The most recent libg++ README states that libg++ is no longer being
|
The most recent libg++ README states that libg++ is no longer being
|
||||||
actively maintained. It should not be used for new projects, and is
|
actively maintained. It should not be used for new projects, and is
|
||||||
only being kicked along to support older code.
|
only being kicked along to support older code.
|
||||||
|
|
||||||
The libg++ was designed and created when there was no Standard to
|
The libg++ was designed and created when there was no Standard to
|
||||||
provide guidance. Classes like linked lists are now provided for by
|
provide guidance. Classes like linked lists are now provided for by
|
||||||
list<T> and do not need to be created by genclass. (For that matter,
|
list<T> and do not need to be created by genclass. (For that matter,
|
||||||
templates exist now and are well-supported, whereas genclass (mostly)
|
templates exist now and are well-supported, whereas genclass (mostly)
|
||||||
predates them.)
|
predates them.)
|
||||||
|
|
||||||
There are other classes in libg++ that are not specified in the ISO
|
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
|
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 :-),
|
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
|
the Standards Committee couldn't include everything, and so a lot of
|
||||||
those "obvious" classes didn't get included.
|
those "obvious" classes didn't get included.
|
||||||
|
|
||||||
Since libstdc++ is an implementation of the Standard Library, we have
|
Since libstdc++ is an implementation of the Standard Library, we have
|
||||||
no plans at this time to include non-Standard utilities in the
|
no plans at this time to include non-Standard utilities in the
|
||||||
implementation, however handy they are. (The extensions provided in
|
implementation, however handy they are. (The extensions provided in
|
||||||
@ -176,15 +176,15 @@
|
|||||||
entirely plausable that the "useful stuff" from libg++ might be
|
entirely plausable that the "useful stuff" from libg++ might be
|
||||||
extracted into an updated utilities library, but nobody has started
|
extracted into an updated utilities library, but nobody has started
|
||||||
such a project yet.
|
such a project yet.
|
||||||
|
|
||||||
(The [64]Boost site houses free C++ libraries that do varying things,
|
(The [64]Boost site houses free C++ libraries that do varying things,
|
||||||
and happened to be started by members of the Standards Committee.
|
and happened to be started by members of the Standards Committee.
|
||||||
Certain "useful stuff" classes will probably migrate there.)
|
Certain "useful stuff" classes will probably migrate there.)
|
||||||
|
|
||||||
For the bold and/or desperate, the [65]GCC extensions page describes
|
For the bold and/or desperate, the [65]GCC extensions page describes
|
||||||
where to find the last libg++ source.
|
where to find the last libg++ source.
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
1.8 What if I have more questions?
|
1.8 What if I have more questions?
|
||||||
|
|
||||||
If you have read the README and RELEASE-NOTES files, and your question
|
If you have read the README and RELEASE-NOTES files, and your question
|
||||||
@ -192,19 +192,19 @@
|
|||||||
not need to be subscribed to the list to send a message to it. More
|
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
|
information is available on the homepage (including how to browse the
|
||||||
list archives); to send to the list, use [66]libstdc++@gcc.gnu.org.
|
list archives); to send to the list, use [66]libstdc++@gcc.gnu.org.
|
||||||
|
|
||||||
If you have a question that you think should be included here, or if
|
If you have a question that you think should be included here, or if
|
||||||
you have a question about a question/answer here, contact [67]Phil
|
you have a question about a question/answer here, contact [67]Phil
|
||||||
Edwards or [68]Gabriel Dos Reis.
|
Edwards or [68]Gabriel Dos Reis.
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
1.9 What are the license terms for libstdc++-v3?
|
1.9 What are the license terms for libstdc++-v3?
|
||||||
|
|
||||||
See [69]our license description for these and related questions.
|
See [69]our license description for these and related questions.
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
2.0 Installation
|
2.0 Installation
|
||||||
|
|
||||||
2.1 How do I install libstdc++-v3?
|
2.1 How do I install libstdc++-v3?
|
||||||
|
|
||||||
Complete instructions are not given here (this is a FAQ, not an
|
Complete instructions are not given here (this is a FAQ, not an
|
||||||
@ -216,26 +216,26 @@
|
|||||||
* GNU Make is recommended, but should not be required.
|
* GNU Make is recommended, but should not be required.
|
||||||
* The GNU Autotools are needed if you are messing with the configury
|
* The GNU Autotools are needed if you are messing with the configury
|
||||||
or makefiles.
|
or makefiles.
|
||||||
|
|
||||||
The file [70]documentation.html provides a good overview of the steps
|
The file [70]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, as well as patches and instructions for working with GCC
|
there also, as well as patches and instructions for working with GCC
|
||||||
2.95.
|
2.95.
|
||||||
|
|
||||||
The top-level install.html and [71]RELEASE-NOTES files contain the
|
The top-level install.html and [71]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 [removed]
|
2.2 [removed]
|
||||||
|
|
||||||
This question has become moot and has been removed. The stub is here
|
This question has become moot and has been removed. The stub is here
|
||||||
to preserve numbering (and hence links/bookmarks).
|
to preserve numbering (and hence links/bookmarks).
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
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
|
||||||
@ -243,30 +243,30 @@
|
|||||||
free (beer), and very high quality. The [72]CVS entry in the GNU
|
free (beer), and very high quality. The [72]CVS entry in the GNU
|
||||||
software catalogue has a better description as well as a [73]link to
|
software catalogue has a better description as well as a [73]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
|
||||||
FTP in that it allows anyone to retrieve the latest libstdc++ sources.
|
FTP in that it allows anyone to retrieve the latest libstdc++ sources.
|
||||||
|
|
||||||
After the first of April, American users will have a "/pharmacy"
|
After the first of April, American users will have a "/pharmacy"
|
||||||
command-line option...
|
command-line option...
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
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 ("make install") to run the testsuite, but you do
|
install the library ("make install") to run the testsuite, but you do
|
||||||
need DejaGNU, as described [74]here.
|
need DejaGNU, as described [74]here.
|
||||||
|
|
||||||
To run the testsuite on the library after building it, use "make
|
To run the testsuite on the library after building it, use "make
|
||||||
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 "make check-install"
|
library after building and installing it, use "make check-install"
|
||||||
instead.
|
instead.
|
||||||
|
|
||||||
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!
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
2.5 This library is HUGE! And what's libsupc++?
|
2.5 This library is HUGE! And what's libsupc++?
|
||||||
|
|
||||||
Usually the size of libraries on disk isn't noticeable. When a link
|
Usually the size of libraries on disk isn't noticeable. When a link
|
||||||
@ -277,7 +277,7 @@
|
|||||||
object file is extracted. (There's nothing unique to C++ or
|
object file is extracted. (There's nothing unique to C++ or
|
||||||
libstdc++-v3 about this; it's just common behavior, given here for
|
libstdc++-v3 about this; it's just common behavior, given here for
|
||||||
background reasons.)
|
background reasons.)
|
||||||
|
|
||||||
Some of the object files which make up libstdc++.a are rather large.
|
Some of the object files which make up libstdc++.a are rather large.
|
||||||
If you create a statically-linked executable with -static, those large
|
If you create a statically-linked executable with -static, those large
|
||||||
object files are suddenly part of your executable. Historically the
|
object files are suddenly part of your executable. Historically the
|
||||||
@ -288,10 +288,10 @@
|
|||||||
files in question contain template classes and template functions,
|
files in question contain template classes and template functions,
|
||||||
pre-instantiated, and splitting those up causes severe maintenance
|
pre-instantiated, and splitting those up causes severe maintenance
|
||||||
headaches.
|
headaches.
|
||||||
|
|
||||||
It's not a bug, and it's not really a problem. Nevertheless, some
|
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:
|
people don't like it, so here are two pseudo-solutions:
|
||||||
|
|
||||||
If the only functions from libstdc++.a which you need are language
|
If the only functions from libstdc++.a which you need are language
|
||||||
support functions (those listed in [75]clause 18 of the standard,
|
support functions (those listed in [75]clause 18 of the standard,
|
||||||
e.g., new and delete), then try linking against libsupc++.a (usually
|
e.g., new and delete), then try linking against libsupc++.a (usually
|
||||||
@ -300,27 +300,27 @@
|
|||||||
file. But if you are using anything from the rest of the library, such
|
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
|
as IOStreams or vectors, then you'll still need pieces from
|
||||||
libstdc++.a.
|
libstdc++.a.
|
||||||
|
|
||||||
The second method is one we hope to incorporate into the library build
|
The second method is one we hope to incorporate into the library build
|
||||||
process. Some platforms can place each function and variable into its
|
process. Some platforms can place each function and variable into its
|
||||||
own section in a .o file. The GNU linker can then perform garbage
|
own section in a .o file. The GNU linker can then perform garbage
|
||||||
collection on unused sections; this reduces the situation to only
|
collection on unused sections; this reduces the situation to only
|
||||||
copying needed functions into the executable, as before, but all
|
copying needed functions into the executable, as before, but all
|
||||||
happens automatically.
|
happens automatically.
|
||||||
|
|
||||||
Unfortunately the garbage collection in GNU ld is buggy; sections
|
Unfortunately the garbage collection in GNU ld is buggy; sections
|
||||||
(corresponding to functions and variables) which are used are
|
(corresponding to functions and variables) which are used are
|
||||||
mistakenly removed, leading to horrible crashes when your executable
|
mistakenly removed, leading to horrible crashes when your executable
|
||||||
starts up. For the time being, this feature is not used when building
|
starts up. For the time being, this feature is not used when building
|
||||||
the library.
|
the library.
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
3.0 Platform-Specific Issues
|
3.0 Platform-Specific Issues
|
||||||
|
|
||||||
3.1 Can libstdc++-v3 be used with <my favorite compiler>?
|
3.1 Can libstdc++-v3 be used with <my favorite compiler>?
|
||||||
|
|
||||||
Probably not. Yet.
|
Probably not. Yet.
|
||||||
|
|
||||||
Because GCC advances so rapidly, development and testing of libstdc++
|
Because GCC advances so rapidly, development and testing of libstdc++
|
||||||
is being done almost entirely under that compiler. If you are curious
|
is being done almost entirely under that compiler. If you are curious
|
||||||
about whether other, lesser compilers (*grin*) support libstdc++, you
|
about whether other, lesser compilers (*grin*) support libstdc++, you
|
||||||
@ -328,79 +328,79 @@
|
|||||||
(see above) will still require certain tools, however. Also keep in
|
(see above) will still require certain tools, however. Also keep in
|
||||||
mind that building libstdc++ does not imply that your compiler will be
|
mind that building libstdc++ does not imply that your compiler will be
|
||||||
able to use all of the features found in the C++ Standard Library.
|
able to use all of the features found in the C++ Standard Library.
|
||||||
|
|
||||||
Since the goal of ISO Standardization is for all C++ implementations
|
Since the goal of ISO Standardization is for all C++ implementations
|
||||||
to be able to share code, the final libstdc++ should, in theory, be
|
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
|
usable under any ISO-compliant compiler. It will still be targeted and
|
||||||
optimized for GCC/g++, however.
|
optimized for GCC/g++, however.
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
3.2 [removed]
|
3.2 [removed]
|
||||||
|
|
||||||
This question has become moot and has been removed. The stub is here
|
This question has become moot and has been removed. The stub is here
|
||||||
to preserve numbering (and hence links/bookmarks).
|
to preserve numbering (and hence links/bookmarks).
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
3.3 [removed]
|
3.3 [removed]
|
||||||
|
|
||||||
This question has become moot and has been removed. The stub is here
|
This question has become moot and has been removed. The stub is here
|
||||||
to preserve numbering (and hence links/bookmarks).
|
to preserve numbering (and hence links/bookmarks).
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
3.4 I can't use 'long long' on Solaris
|
3.4 I can't use 'long long' on Solaris
|
||||||
|
|
||||||
By default we try to support the C99 long long type. This requires
|
By default we try to support the C99 long long type. This requires
|
||||||
that certain functions from your C library be present.
|
that certain functions from your C library be present.
|
||||||
|
|
||||||
Up through release 3.0.2 the tests performed were too general, and
|
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
|
this feature was disabled when it did not need to be. The most
|
||||||
commonly reported platform affected was Solaris.
|
commonly reported platform affected was Solaris.
|
||||||
|
|
||||||
This has been fixed for 3.0.3 and onwards.
|
This has been fixed for 3.0.3 and onwards.
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
3.5 _XOPEN_SOURCE / _GNU_SOURCE / etc is always defined
|
3.5 _XOPEN_SOURCE / _GNU_SOURCE / etc is always defined
|
||||||
|
|
||||||
On Solaris, g++ (but not gcc) always defines the preprocessor macro
|
On Solaris, g++ (but not gcc) always defines the preprocessor macro
|
||||||
_XOPEN_SOURCE. On GNU/Linux, the same happens with _GNU_SOURCE. (This
|
_XOPEN_SOURCE. On GNU/Linux, the same happens with _GNU_SOURCE. (This
|
||||||
is not an exhaustive list; other macros and other platforms are also
|
is not an exhaustive list; other macros and other platforms are also
|
||||||
affected.)
|
affected.)
|
||||||
|
|
||||||
These macros are typically used in C library headers, guarding new
|
These macros are typically used in C library headers, guarding new
|
||||||
versions of functions from their older versions. The C++ standard
|
versions of functions from their older versions. The C++ standard
|
||||||
library includes the C standard library, but it requires the C90
|
library includes the C standard library, but it requires the C90
|
||||||
version, which for backwards-compatability reasons is often not the
|
version, which for backwards-compatability reasons is often not the
|
||||||
default for many vendors.
|
default for many vendors.
|
||||||
|
|
||||||
More to the point, the C++ standard requires behavior which is only
|
More to the point, the C++ standard requires behavior which is only
|
||||||
available on certain platforms after certain symbols are defined.
|
available on certain platforms after certain symbols are defined.
|
||||||
Usually the issue involves I/O-related typedefs. In order to ensure
|
Usually the issue involves I/O-related typedefs. In order to ensure
|
||||||
correctness, the compiler simply predefines those symbols.
|
correctness, the compiler simply predefines those symbols.
|
||||||
|
|
||||||
Note that it's not enough to #define them only when the library is
|
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'
|
being built (during installation). Since we don't have an 'export'
|
||||||
keyword, much of the library exists as headers, which means that the
|
keyword, much of the library exists as headers, which means that the
|
||||||
symbols must also be defined as your programs are parsed and compiled.
|
symbols must also be defined as your programs are parsed and compiled.
|
||||||
|
|
||||||
To see which symbols are defined, look for CPLUSPLUS_CPP_SPEC in the
|
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
|
gcc config headers for your target (and try changing them to see what
|
||||||
happens when building complicated code). You can also run "g++ -E -dM
|
happens when building complicated code). You can also run "g++ -E -dM
|
||||||
- < /dev/null" to display a list of predefined macros for any
|
- < /dev/null" to display a list of predefined macros for any
|
||||||
particular installation.
|
particular installation.
|
||||||
|
|
||||||
This has been discussed on the mailing lists [76]quite a bit.
|
This has been discussed on the mailing lists [76]quite a bit.
|
||||||
|
|
||||||
This method is something of a wart. We'd like to find a cleaner
|
This method is something of a wart. We'd like to find a cleaner
|
||||||
solution, but nobody yet has contributed the time.
|
solution, but nobody yet has contributed the time.
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
3.6 OS X ctype.h is broken! How can I hack it?
|
3.6 OS X ctype.h is broken! How can I hack it?
|
||||||
|
|
||||||
This is a long-standing bug in the OS X support. Fortunately, the
|
This is a long-standing bug in the OS X support. Fortunately, the
|
||||||
patch is quite simple, and well-known. [77]Here's a link to the
|
patch is quite simple, and well-known. [77]Here's a link to the
|
||||||
solution.
|
solution.
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
3.7 Threading is broken on i386
|
3.7 Threading is broken on i386
|
||||||
|
|
||||||
Support for atomic integer operations is/was broken on i386 platforms.
|
Support for atomic integer operations is/was broken on i386 platforms.
|
||||||
@ -409,10 +409,10 @@
|
|||||||
i386-linux, but actually used the programs on an i686, then you would
|
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
|
encounter no problems. Only when actually running the code on a i386
|
||||||
will the problem appear.
|
will the problem appear.
|
||||||
|
|
||||||
This is fixed in 3.2.2.
|
This is fixed in 3.2.2.
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
3.8 Recent GNU/Linux glibc required?
|
3.8 Recent GNU/Linux glibc required?
|
||||||
|
|
||||||
When running on GNU/Linux, libstdc++ 3.2.1 (shared library version
|
When running on GNU/Linux, libstdc++ 3.2.1 (shared library version
|
||||||
@ -420,12 +420,12 @@
|
|||||||
C library (glibc) version 2.2.5. That version of glibc is over a year
|
C library (glibc) version 2.2.5. That version of glibc is over a year
|
||||||
old and contains necessary bugfixes. Many GNU/Linux distros make glibc
|
old and contains necessary bugfixes. Many GNU/Linux distros make glibc
|
||||||
version 2.3.x available now.
|
version 2.3.x available now.
|
||||||
|
|
||||||
The guideline is simple: the more recent the C++ library, the more
|
The guideline is simple: the more recent the C++ library, the more
|
||||||
recent the C library. (This is also documented in the main GCC
|
recent the C library. (This is also documented in the main GCC
|
||||||
installation instructions.)
|
installation instructions.)
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
3.9 Can't use wchar_t/wstring on FreeBSD
|
3.9 Can't use wchar_t/wstring on FreeBSD
|
||||||
|
|
||||||
At the moment there are a few problems in FreeBSD's support for wide
|
At the moment there are a few problems in FreeBSD's support for wide
|
||||||
@ -433,30 +433,30 @@
|
|||||||
that wchar_t support should be disabled. Once the underlying problems
|
that wchar_t support should be disabled. Once the underlying problems
|
||||||
are fixed in FreeBSD (soon), the library support will automatically
|
are fixed in FreeBSD (soon), the library support will automatically
|
||||||
enable itself.
|
enable itself.
|
||||||
|
|
||||||
You can fix the problems yourself, and learn more about the situation,
|
You can fix the problems yourself, and learn more about the situation,
|
||||||
by reading [78]this short thread ("_GLIBCPP_USE_WCHAR_T undefined in
|
by reading [78]this short thread ("_GLIBCPP_USE_WCHAR_T undefined in
|
||||||
FreeBSD's c++config.h?").
|
FreeBSD's c++config.h?").
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
3.10 MIPS atomic operations
|
3.10 MIPS atomic operations
|
||||||
|
|
||||||
The atomic locking routines for MIPS targets requires MIPS II and
|
The atomic locking routines for MIPS targets requires MIPS II and
|
||||||
later. A patch went in just after the 3.3 release to make mips* use
|
later. A patch went in just after the 3.3 release to make mips* use
|
||||||
the generic implementation instead. You can also configure for
|
the generic implementation instead. You can also configure for
|
||||||
mipsel-elf as a workaround.
|
mipsel-elf as a workaround.
|
||||||
|
|
||||||
mips*-*-linux* continues to use the MIPS II routines, and more work in
|
mips*-*-linux* continues to use the MIPS II routines, and more work in
|
||||||
this area is expected.
|
this area is expected.
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
4.0 Known Bugs and Non-Bugs
|
4.0 Known Bugs and Non-Bugs
|
||||||
|
|
||||||
Note that this section can get rapdily outdated -- such is the nature
|
Note that this section can get rapdily outdated -- such is the nature
|
||||||
of an open-source project. For the latest information, join the
|
of an open-source project. For the latest information, join the
|
||||||
mailing list or look through recent archives. The RELEASE- NOTES and
|
mailing list or look through recent archives. The RELEASE- NOTES and
|
||||||
BUGS files are generally kept up-to-date.
|
BUGS files are generally kept up-to-date.
|
||||||
|
|
||||||
For 3.0.1, the most common "bug" is an apparently missing "../" in
|
For 3.0.1, the most common "bug" is an apparently missing "../" in
|
||||||
include/Makefile, resulting in files like gthr.h and gthr-single.h not
|
include/Makefile, resulting in files like gthr.h and gthr-single.h not
|
||||||
being found. Please read [79]the configuration instructions for GCC,
|
being found. Please read [79]the configuration instructions for GCC,
|
||||||
@ -464,7 +464,7 @@
|
|||||||
and how strongly recommended it is. Building in the source 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.
|
is fragile, is rarely tested, and tends to break, as in this case.
|
||||||
This was fixed for 3.0.2.
|
This was fixed for 3.0.2.
|
||||||
|
|
||||||
For 3.1, the most common "bug" is a parse error when using <fstream>,
|
For 3.1, the most common "bug" is a parse error when using <fstream>,
|
||||||
ending with a message, "bits/basic_file.h:52: parse error before `{'
|
ending with a message, "bits/basic_file.h:52: parse error before `{'
|
||||||
token." Please read [80]the installation instructions for GCC,
|
token." Please read [80]the installation instructions for GCC,
|
||||||
@ -472,34 +472,34 @@
|
|||||||
older versions. If you install 3.1 over a 3.0.x release, then the
|
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
|
wrong basic_file.h header will be found (its location changed between
|
||||||
releases).
|
releases).
|
||||||
|
|
||||||
Please do not report these as bugs. We know about them. Reporting this
|
Please do not report these as bugs. We know about them. Reporting this
|
||||||
-- or any other problem that's already been fixed -- hinders the
|
-- or any other problem that's already been fixed -- hinders the
|
||||||
development of GCC, because we have to take time to respond to your
|
development of GCC, because we have to take time to respond to your
|
||||||
report. Thank you.
|
report. Thank you.
|
||||||
|
|
||||||
4.1 What works already?
|
4.1 What works already?
|
||||||
|
|
||||||
Short answer: Pretty much everything works except for some corner
|
Short answer: Pretty much everything works except for some corner
|
||||||
cases. Also, localization is incomplete. For whether it works well, or
|
cases. Also, localization is incomplete. For whether it works well, or
|
||||||
as you expect it to work, see 5.2.
|
as you expect it to work, see 5.2.
|
||||||
|
|
||||||
Long answer: See the docs/html/17_intro/CHECKLIST file, which is badly
|
Long answer: See the docs/html/17_intro/CHECKLIST file, which is badly
|
||||||
outdated...
|
outdated...
|
||||||
|
|
||||||
What follows is a verbatim clip from the "Status" section of the
|
What follows is a verbatim clip from the "Status" section of the
|
||||||
RELEASE-NOTES for the latest snapshot. For a list of fixed bugs, see
|
RELEASE-NOTES for the latest snapshot. For a list of fixed bugs, see
|
||||||
that file.
|
that file.
|
||||||
New:
|
New:
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
4.2 Bugs in gcc/g++ (not libstdc++-v3)
|
4.2 Bugs in gcc/g++ (not libstdc++-v3)
|
||||||
|
|
||||||
This is by no means meant to be complete nor exhaustive, but mentions
|
This is by no means meant to be complete nor exhaustive, but mentions
|
||||||
some problems that users may encounter when building or using
|
some problems that users may encounter when building or using
|
||||||
libstdc++. If you are experiencing one of these problems, you can find
|
libstdc++. If you are experiencing one of these problems, you can find
|
||||||
more information on the libstdc++ and the GCC mailing lists.
|
more information on the libstdc++ and the GCC mailing lists.
|
||||||
|
|
||||||
Before reporting a bug, examine the [81]bugs database with the
|
Before reporting a bug, examine the [81]bugs database with the
|
||||||
category set to "libstdc++". The BUGS file in the source tree also
|
category set to "libstdc++". The BUGS file in the source tree also
|
||||||
tracks known serious problems.
|
tracks known serious problems.
|
||||||
@ -510,7 +510,7 @@ New:
|
|||||||
default on your platform. Also, [82]changing your GDB settings can
|
default on your platform. Also, [82]changing your GDB settings can
|
||||||
have a profound effect on your C++ debugging experiences. :-)
|
have a profound effect on your C++ debugging experiences. :-)
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
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 [83]message to the list,
|
Yes, unfortunately, there are some. In a [83]message to the list,
|
||||||
@ -519,25 +519,25 @@ New:
|
|||||||
concern the library. The list itself is [84]posted on his website.
|
concern the library. The list itself is [84]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 [85]here.
|
public list of the library defects is occasionally published [85]here.
|
||||||
Some of these have resulted in [86]code changes.
|
Some of these have resulted in [86]code changes.
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
4.4 Things in libstdc++ that only look like bugs
|
4.4 Things in libstdc++ that only look like bugs
|
||||||
|
|
||||||
There are things which are not bugs in the compiler (4.2) nor the
|
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++,
|
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.
|
||||||
|
|
||||||
-Weffc++ The biggest of these is the quadzillions of warnings about
|
-Weffc++ The biggest of these is the quadzillions of warnings about
|
||||||
the library 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.
|
while the Standard Library isn't necessarily trying to be OO.
|
||||||
|
|
||||||
reopening a stream fails Did I just say that -Weffc++ was our biggest
|
reopening a stream fails Did I just say that -Weffc++ was our biggest
|
||||||
false-bug report? I lied. (It used to be.) Today it seems to be
|
false-bug report? I lied. (It used to be.) Today it seems to be
|
||||||
reports that after executing a sequence like
|
reports that after executing a sequence like
|
||||||
@ -559,7 +559,7 @@ New:
|
|||||||
unchanged. You must insert a call to fs.clear() between the calls to
|
unchanged. You must insert a call to fs.clear() between the calls to
|
||||||
close() and open(), and then everything will work like we all expect
|
close() and open(), and then everything will work like we all expect
|
||||||
it to work.
|
it to work.
|
||||||
|
|
||||||
rel_ops Another is the rel_ops namespace and the template comparison
|
rel_ops Another is the rel_ops namespace and the template comparison
|
||||||
operator functions contained therein. If they become visible in the
|
operator functions contained therein. If they become visible in the
|
||||||
same namespace as other comparison functions (e.g., 'using' them and
|
same namespace as other comparison functions (e.g., 'using' them and
|
||||||
@ -567,26 +567,26 @@ New:
|
|||||||
numbers of ambiguity errors. This was discussed on the -v3 list;
|
numbers of ambiguity errors. This was discussed on the -v3 list;
|
||||||
Nathan Myers [88]sums things up here. The collisions with
|
Nathan Myers [88]sums things up here. The collisions with
|
||||||
vector/string iterator types have been fixed for 3.1.
|
vector/string iterator types have been fixed for 3.1.
|
||||||
|
|
||||||
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 [89]the GCC bug database).
|
paragraph of the page describing [89]the GCC bug database).
|
||||||
|
|
||||||
If the headers are in ${prefix}/include/g++-3, or if the installed
|
If the headers are in ${prefix}/include/g++-3, or if the installed
|
||||||
library's name looks like libstdc++-2.10.a or libstdc++-libc6-2.10.so,
|
library's name looks like libstdc++-2.10.a or libstdc++-libc6-2.10.so,
|
||||||
then you are using the old libstdc++-v2 library, which is nonstandard
|
then you are using the old libstdc++-v2 library, which is nonstandard
|
||||||
and unmaintained. Do not report problems with -v2 to the -v3 mailing
|
and unmaintained. Do not report problems with -v2 to the -v3 mailing
|
||||||
list.
|
list.
|
||||||
|
|
||||||
For GCC versions 3.0 and 3.1 the libstdc++-v3 header files are
|
For GCC versions 3.0 and 3.1 the libstdc++-v3 header files are
|
||||||
installed in ${prefix}/include/g++-v3 (see the 'v'?). Starting with
|
installed in ${prefix}/include/g++-v3 (see the 'v'?). Starting with
|
||||||
version 3.2 the headers are installed in
|
version 3.2 the headers are installed in
|
||||||
${prefix}/include/c++/${version} as this prevents headers from
|
${prefix}/include/c++/${version} as this prevents headers from
|
||||||
previous versions being found by mistake.
|
previous versions being found by mistake.
|
||||||
|
|
||||||
glibc If you're on a GNU/Linux system and have just upgraded to glibc
|
glibc 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
|
2.2, but are still using gcc 2.95.2, then you should have read the
|
||||||
glibc FAQ, specifically 2.34:
|
glibc FAQ, specifically 2.34:
|
||||||
@ -601,7 +601,7 @@ http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff
|
|||||||
Note that 2.95.x shipped with the [90]old v2 library which is no
|
Note that 2.95.x shipped with the [90]old v2 library which is no
|
||||||
longer maintained. Also note that gcc 2.95.3 fixes this problem, but
|
longer maintained. Also note that gcc 2.95.3 fixes this problem, but
|
||||||
requires a separate patch for libstdc++-v3.
|
requires a separate patch for libstdc++-v3.
|
||||||
|
|
||||||
concept checks If you see compilation errors containing messages about
|
concept checks If you see compilation errors containing messages about
|
||||||
fooConcept and a constraints member function, then most likely you
|
fooConcept and a constraints member function, then most likely you
|
||||||
have violated one of the requirements for types used during
|
have violated one of the requirements for types used during
|
||||||
@ -609,10 +609,10 @@ http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff
|
|||||||
EqualityComparableConcept appears if your types must be comparable
|
EqualityComparableConcept appears if your types must be comparable
|
||||||
with == and you have not provided this capability (a typo, or wrong
|
with == and you have not provided this capability (a typo, or wrong
|
||||||
visibility, or you just plain forgot, etc).
|
visibility, or you just plain forgot, etc).
|
||||||
|
|
||||||
More information, including how to optionally enable/disable the
|
More information, including how to optionally enable/disable the
|
||||||
checks, is available [91]here.
|
checks, is available [91]here.
|
||||||
|
|
||||||
dlopen/dlsym If you are using the C++ library across
|
dlopen/dlsym If you are using the C++ library across
|
||||||
dynamically-loaded objects, make certain that you are passing the
|
dynamically-loaded objects, make certain that you are passing the
|
||||||
correct options when compiling and linking:
|
correct options when compiling and linking:
|
||||||
@ -637,7 +637,7 @@ http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff
|
|||||||
want to test the library for memory leaks please read [93]Tips for
|
want to test the library for memory leaks please read [93]Tips for
|
||||||
memory leak hunting first.
|
memory leak hunting first.
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
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
|
||||||
@ -646,7 +646,7 @@ http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff
|
|||||||
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++ [95]contributors' page also
|
GCC patches mailing list. The libstdc++ [95]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
|
||||||
@ -654,26 +654,26 @@ http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff
|
|||||||
caught immediately by the [96]testsuite -- but only if such a test
|
caught immediately by the [96]testsuite -- but only if such a test
|
||||||
exists.
|
exists.
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
5.0 Miscellaneous
|
5.0 Miscellaneous
|
||||||
|
|
||||||
5.1 string::iterator is not char*; vector<T>::iterator is not T*
|
5.1 string::iterator is not char*; vector<T>::iterator is not T*
|
||||||
|
|
||||||
If you have code that depends on container<T> iterators being
|
If you have code that depends on container<T> iterators being
|
||||||
implemented as pointer-to-T, your code is broken.
|
implemented as pointer-to-T, your code is broken.
|
||||||
|
|
||||||
While there are arguments for iterators to be implemented in that
|
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
|
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
|
were never guaranteed by the Standard anyway. The type-safety achieved
|
||||||
by making iterators a real class rather than a typedef for T*
|
by making iterators a real class rather than a typedef for T*
|
||||||
outweighs nearly all opposing arguments.
|
outweighs nearly all opposing arguments.
|
||||||
|
|
||||||
Code which does assume that a vector iterator i is a pointer can often
|
Code which does assume that a vector iterator i is a pointer can often
|
||||||
be fixed by changing i in certain expressions to &*i . Future
|
be fixed by changing i in certain expressions to &*i . Future
|
||||||
revisions of the Standard are expected to bless this usage for
|
revisions of the Standard are expected to bless this usage for
|
||||||
vector<> (but not for basic_string<>).
|
vector<> (but not for basic_string<>).
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
5.2 What's next after libstdc++-v3?
|
5.2 What's next after libstdc++-v3?
|
||||||
|
|
||||||
Hopefully, not much. The goal of libstdc++-v3 is to produce a
|
Hopefully, not much. The goal of libstdc++-v3 is to produce a
|
||||||
@ -700,27 +700,27 @@ http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff
|
|||||||
they seem to be "standard" enough. (For example, the "long long"
|
they seem to be "standard" enough. (For example, the "long long"
|
||||||
type from C99.) Bugfixes and rewrites (to improve or fix thread
|
type from C99.) Bugfixes and rewrites (to improve or fix thread
|
||||||
safety, for instance) will of course be a continuing task.
|
safety, for instance) will of course be a continuing task.
|
||||||
|
|
||||||
[98]This question about the next libstdc++ prompted some brief but
|
[98]This question about the next libstdc++ prompted some brief but
|
||||||
interesting [99]speculation.
|
interesting [99]speculation.
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
5.3 What about the STL from SGI?
|
5.3 What about the STL from SGI?
|
||||||
|
|
||||||
The [100]STL from SGI, version 3.3, was the most recent merge of the
|
The [100]STL from SGI, version 3.3, was the most recent merge of the
|
||||||
STL codebase. The code in libstdc++ contains many fixes and changes,
|
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
|
and it is very likely that the SGI code is no longer under active
|
||||||
development. We expect that no future merges will take place.
|
development. We expect that no future merges will take place.
|
||||||
|
|
||||||
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
|
||||||
and some others. Classes like vector<> are, however we have made
|
and some others. Classes like vector<> are, however we have made
|
||||||
significant changes to them since then.
|
significant changes to them since then.
|
||||||
|
|
||||||
The FAQ for SGI's STL (one jump off of their main page) is recommended
|
The FAQ for SGI's STL (one jump off of their main page) is recommended
|
||||||
reading.
|
reading.
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
5.4 Extensions and Backward Compatibility
|
5.4 Extensions and Backward Compatibility
|
||||||
|
|
||||||
Headers in the ext and backward subdirectories should be referred to
|
Headers in the ext and backward subdirectories should be referred to
|
||||||
@ -731,7 +731,7 @@ http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff
|
|||||||
forward-compatible. (The situation is the same as that of other
|
forward-compatible. (The situation is the same as that of other
|
||||||
headers whose directories are not searched directly, e.g.,
|
headers whose directories are not searched directly, e.g.,
|
||||||
<sys/stat.h>, <X11/Xlib.h>.
|
<sys/stat.h>, <X11/Xlib.h>.
|
||||||
|
|
||||||
The extensions are no longer in the global or std namespaces, instead
|
The extensions are no longer in the global or std namespaces, instead
|
||||||
they are declared in the __gnu_cxx namespace. For maximum portability,
|
they are declared in the __gnu_cxx namespace. For maximum portability,
|
||||||
consider defining a namespace alias to use to talk about extensions,
|
consider defining a namespace alias to use to talk about extensions,
|
||||||
@ -756,16 +756,16 @@ http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff
|
|||||||
|
|
||||||
This is a bit cleaner than defining typedefs for all the
|
This is a bit cleaner than defining typedefs for all the
|
||||||
instantiations you might need.
|
instantiations you might need.
|
||||||
|
|
||||||
Extensions to the library have [101]their own page.
|
Extensions to the library have [101]their own page.
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
5.5 [removed]
|
5.5 [removed]
|
||||||
|
|
||||||
This question has become moot and has been removed. The stub is here
|
This question has become moot and has been removed. The stub is here
|
||||||
to preserve numbering (and hence links/bookmarks).
|
to preserve numbering (and hence links/bookmarks).
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
5.6 Is libstdc++-v3 thread-safe?
|
5.6 Is libstdc++-v3 thread-safe?
|
||||||
|
|
||||||
libstdc++-v3 strives to be thread-safe when all of the following
|
libstdc++-v3 strives to be thread-safe when all of the following
|
||||||
@ -774,7 +774,7 @@ http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff
|
|||||||
* gcc -v reports a thread model other than 'single',
|
* gcc -v reports a thread model other than 'single',
|
||||||
* [pre-3.3 only] a non-generic implementation of atomicity.h exists
|
* [pre-3.3 only] a non-generic implementation of atomicity.h exists
|
||||||
for the architecture in question.
|
for the architecture in question.
|
||||||
|
|
||||||
The user-code must guard against concurrent method calls which may
|
The user-code must guard against concurrent method calls which may
|
||||||
access any particular library object's state. Typically, the
|
access any particular library object's state. Typically, the
|
||||||
application programmer may infer what object locks must be held based
|
application programmer may infer what object locks must be held based
|
||||||
@ -809,11 +809,11 @@ a
|
|||||||
both read and write access to objects; unless otherwise documented as
|
both read and write access to objects; unless otherwise documented as
|
||||||
safe, do not assume that two threads may access a shared standard
|
safe, do not assume that two threads may access a shared standard
|
||||||
library object at the same time.
|
library object at the same time.
|
||||||
|
|
||||||
See chapters [102]17 (library introduction), [103]23 (containers), and
|
See chapters [102]17 (library introduction), [103]23 (containers), and
|
||||||
[104]27 (I/O) for more information.
|
[104]27 (I/O) for more information.
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
5.7 How do I get a copy of the ISO C++ Standard?
|
5.7 How do I get a copy of the ISO C++ Standard?
|
||||||
|
|
||||||
Copies of the full ISO 14882 standard are available on line via the
|
Copies of the full ISO 14882 standard are available on line via the
|
||||||
@ -825,11 +825,11 @@ a
|
|||||||
right [105]here. (And if you've already registered with them, clicking
|
right [105]here. (And if you've already registered with them, clicking
|
||||||
this link will take you to directly to the place where you can
|
this link will take you to directly to the place where you can
|
||||||
[106]buy the standard on-line.
|
[106]buy the standard on-line.
|
||||||
|
|
||||||
Who is your country's member body? Visit the [107]ISO homepage and
|
Who is your country's member body? Visit the [107]ISO homepage and
|
||||||
find out!
|
find out!
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
5.8 What's an ABI and why is it so messy?
|
5.8 What's an ABI and why is it so messy?
|
||||||
|
|
||||||
"ABI" stands for "Application Binary Interface." Conventionally, it
|
"ABI" stands for "Application Binary Interface." Conventionally, it
|
||||||
@ -842,7 +842,7 @@ a
|
|||||||
one ABI and all the OSes and compilers use it. In practice every ABI
|
one ABI and all the OSes and compilers use it. In practice every ABI
|
||||||
omits details that compiler implementers (consciously or accidentally)
|
omits details that compiler implementers (consciously or accidentally)
|
||||||
must choose for themselves.
|
must choose for themselves.
|
||||||
|
|
||||||
That ABI definition suffices for compilers to generate code so a
|
That ABI definition suffices for compilers to generate code so a
|
||||||
program can interact safely with an OS and its lowest-level libraries.
|
program can interact safely with an OS and its lowest-level libraries.
|
||||||
Users usually want an ABI to encompass more detail, allowing libraries
|
Users usually want an ABI to encompass more detail, allowing libraries
|
||||||
@ -855,7 +855,7 @@ a
|
|||||||
C++, and is immediately useful for embedded work relying only on a
|
C++, and is immediately useful for embedded work relying only on a
|
||||||
"free-standing implementation" that doesn't include (much of) the
|
"free-standing implementation" that doesn't include (much of) the
|
||||||
standard library. It is a good basis for the work to come.
|
standard library. It is a good basis for the work to come.
|
||||||
|
|
||||||
A useful C++ ABI must also incorporate many details of the standard
|
A useful C++ ABI must also incorporate many details of the standard
|
||||||
library implementation. For a C ABI, the layouts of a few structs
|
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.
|
(such as FILE, stat, jmpbuf, and the like) and a few macros suffice.
|
||||||
@ -867,7 +867,7 @@ a
|
|||||||
documenting library implementation details, but carefully designing
|
documenting library implementation details, but carefully designing
|
||||||
those details so that future bug fixes and optimizations don't force
|
those details so that future bug fixes and optimizations don't force
|
||||||
breaking the ABI.
|
breaking the ABI.
|
||||||
|
|
||||||
There are ways to help isolate library implementation details from the
|
There are ways to help isolate library implementation details from the
|
||||||
ABI, but they trade off against speed. Library details used in inner
|
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
|
loops (e.g., getchar) must be exposed and frozen for all time, but
|
||||||
@ -876,7 +876,7 @@ a
|
|||||||
happen before you can reasonably document a candidate C++ ABI that
|
happen before you can reasonably document a candidate C++ ABI that
|
||||||
encompasses the standard library.
|
encompasses the standard library.
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
See [108]license.html for copying conditions. Comments and suggestions
|
See [108]license.html for copying conditions. Comments and suggestions
|
||||||
are welcome, and may be sent to [109]the libstdc++ mailing list.
|
are welcome, and may be sent to [109]the libstdc++ mailing list.
|
||||||
|
|
||||||
@ -981,7 +981,7 @@ References
|
|||||||
97. ../ext/howto.html#5
|
97. ../ext/howto.html#5
|
||||||
98. http://gcc.gnu.org/ml/libstdc++/1999/msg00080.html
|
98. http://gcc.gnu.org/ml/libstdc++/1999/msg00080.html
|
||||||
99. http://gcc.gnu.org/ml/libstdc++/1999/msg00084.html
|
99. http://gcc.gnu.org/ml/libstdc++/1999/msg00084.html
|
||||||
100. http://www.sgi.com/Technology/STL/
|
100. http://www.sgi.com/tech/stl/
|
||||||
101. ../ext/howto.html
|
101. ../ext/howto.html
|
||||||
102. ../17_intro/howto.html#3
|
102. ../17_intro/howto.html#3
|
||||||
103. ../23_containers/howto.html#3
|
103. ../23_containers/howto.html#3
|
||||||
|
Loading…
Reference in New Issue
Block a user