From: Jonathan Wakely Date: Wed, 11 Apr 2018 00:21:35 +0000 (+0100) Subject: Update libstdc++ manual in preparation for GCC 8 release X-Git-Tag: upstream/12.2.0~32382 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=52556a878d77b0b6c8ad680c79d5a3db14503a42;p=platform%2Fupstream%2Fgcc.git Update libstdc++ manual in preparation for GCC 8 release * doc/xml/manual/abi.xml: Document header locations in recent releases. * doc/xml/manual/evolution.xml: Add API changes since GCC 5. * doc/xml/manual/spine.xml: Update copyright years. * doc/xml/manual/strings.xml: Adjust tolower example to avoid undefined behaviour. * doc/xml/manual/test.xml: Update outdated notes on VERIFY in tests. * doc/html/*: Regenerate. From-SVN: r259308 --- diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 5423b08..9c82645 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,14 @@ +2018-04-11 Jonathan Wakely + + * doc/xml/manual/abi.xml: Document header locations in recent + releases. + * doc/xml/manual/evolution.xml: Add API changes since GCC 5. + * doc/xml/manual/spine.xml: Update copyright years. + * doc/xml/manual/strings.xml: Adjust tolower example to avoid + undefined behaviour. + * doc/xml/manual/test.xml: Update outdated notes on VERIFY in tests. + * doc/html/*: Regenerate. + 2018-04-10 Jonathan Wakely * doc/xml/faq.xml: Update links to archived copy of SGI STL docs. diff --git a/libstdc++-v3/doc/html/api.html b/libstdc++-v3/doc/html/api.html index 04fcb83..ec25525 100644 --- a/libstdc++-v3/doc/html/api.html +++ b/libstdc++-v3/doc/html/api.html @@ -6,7 +6,7 @@ , 2014 - FSF + FSF

License diff --git a/libstdc++-v3/doc/html/faq.html b/libstdc++-v3/doc/html/faq.html index 77ccac1..eaabb7f 100644 --- a/libstdc++-v3/doc/html/faq.html +++ b/libstdc++-v3/doc/html/faq.html @@ -2,7 +2,7 @@ Frequently Asked Questions

Frequently Asked Questions


1.1. What is libstdc++?
1.2. @@ -796,9 +796,9 @@ std::thread.

Libstdc++-v3 incorporates a lot of code from - the SGI STL + the SGI STL (the final merge was from - release 3.3). + release 3.3). The code in libstdc++ contains many fixes and changes compared to the original SGI code.

@@ -814,7 +814,7 @@ and backwards compatibility documentation.

- The FAQ + The FAQ for SGI's STL is still recommended reading.

7.4.

Extensions and Backward Compatibility diff --git a/libstdc++-v3/doc/html/index.html b/libstdc++-v3/doc/html/index.html index 3fd0219..30f0145 100644 --- a/libstdc++-v3/doc/html/index.html +++ b/libstdc++-v3/doc/html/index.html @@ -1,7 +1,7 @@ The GNU C++ Library

The GNU C++ Library

Short Contents

Copyright (C) 2008-2018 - FSF + FSF

Permission is granted to copy, distribute and/or modify this @@ -142,7 +142,7 @@ Existing tests

C++11 Requirements Test Sequence Descriptions -
ABI Policy and Guidelines
The C++ Interface
Versioning
Goals
History
Prerequisites
Configuring
Checking Active
Allowed Changes
Prohibited Changes
Implementation
Testing
Single ABI Testing
Multiple ABI Testing
Outstanding Issues
API Evolution and Deprecation History
3.0
3.1
3.2
3.3
3.4
4.0
4.1
4.2
4.3
4.4
4.5
4.6
4.7
4.8
4.9
5
Backwards Compatibility
First
No ios_base
No cout in <ostream.h>, no cin in <istream.h>
Second
Namespace std:: not supported
Illegal iterator usage
isspace from <cctype> is a macro +
ABI Policy and Guidelines
The C++ Interface
Versioning
Goals
History
Prerequisites
Configuring
Checking Active
Allowed Changes
Prohibited Changes
Implementation
Testing
Single ABI Testing
Multiple ABI Testing
Outstanding Issues
API Evolution and Deprecation History
3.0
3.1
3.2
3.3
3.4
4.0
4.1
4.2
4.3
4.4
4.5
4.6
4.7
4.8
4.9
5
5.3
6
7
7.3
8
Backwards Compatibility
First
No ios_base
No cout in <ostream.h>, no cin in <istream.h>
Second
Namespace std:: not supported
Illegal iterator usage
isspace from <cctype> is a macro
No vector::at, deque::at, string::at
No std::char_traits<char>::eof
No string::clear
Removal of ostream::form and istream::scan extensions diff --git a/libstdc++-v3/doc/html/manual/abi.html b/libstdc++-v3/doc/html/manual/abi.html index d9dc9ad..16723de 100644 --- a/libstdc++-v3/doc/html/manual/abi.html +++ b/libstdc++-v3/doc/html/manual/abi.html @@ -226,7 +226,7 @@ compatible. file's macro GLIBCXX_CONFIGURE (GLIBCPP_CONFIGURE before GCC 3.4.0).

C++ includes are versioned as follows: -

  • GCC 3.0.0: include/g++-v3

  • GCC 3.0.1: include/g++-v3

  • GCC 3.0.2: include/g++-v3

  • GCC 3.0.3: include/g++-v3

  • GCC 3.0.4: include/g++-v3

  • GCC 3.1.0: include/g++-v3

  • GCC 3.1.1: include/c++/3.1.1

  • GCC 3.2.0: include/c++/3.2

  • GCC 3.2.1: include/c++/3.2.1

  • GCC 3.2.2: include/c++/3.2.2

  • GCC 3.2.3: include/c++/3.2.3

  • GCC 3.3.0: include/c++/3.3

  • GCC 3.3.1: include/c++/3.3.1

  • GCC 3.3.2: include/c++/3.3.2

  • GCC 3.3.3: include/c++/3.3.3

  • GCC 3.4.x: include/c++/3.4.x

  • GCC 4.x.y: include/c++/4.x.y

  • GCC 5.x.0: include/c++/5.x.0

+

Taken together, these techniques can accurately specify interface and implementation changes in the GNU C++ tools themselves. Used properly, they allow both the GNU C++ tools implementation, and diff --git a/libstdc++-v3/doc/html/manual/api.html b/libstdc++-v3/doc/html/manual/api.html index 3745fdc..e2d3c62 100644 --- a/libstdc++-v3/doc/html/manual/api.html +++ b/libstdc++-v3/doc/html/manual/api.html @@ -263,18 +263,21 @@ now defaults to zero.

New --enable-libstdcxx-verbose configure option

The --enable-libstdcxx-time configure option becomes unnecessary given a sufficiently recent glibc. -

4.9

Implementation of regex completed.

C++14 library and TS implementations are added.

copy_exception deprecated.

__gnu_cxx::array_allocator deprecated.

5

+

4.9

Implementation of regex completed.

C++14 library and TS implementations are added.

copy_exception deprecated.

__gnu_cxx::array_allocator deprecated.

5

ABI transition adds new implementations of several components, using the abi_tag attribute and the __cxx11 inline namespace to distinguish the new entities from the old ones.

  • Use of the new or old ABI can be selected per-translation unit with the - _GLIBCXX_USE_CXX11_ABI macro. + Macros.

  • New non-reference-counted string implementation.

  • New list implementation containing a new data member in order to provide O(1) size(). +

  • + New ios_base::failure implementation inheriting + from system_error.

C++11 support completed (movable iostreams, new I/O manipulators, Unicode conversion utilities, atomic operations for @@ -290,4 +293,67 @@ now defaults to zero. has_trivial_default_constructor, has_trivial_copy_constructor and has_trivial_copy_assign deprecated. +

5.3

Experimental implementation of the C++ Filesystem TS added.

6

C++14 support completed.

+ Support for mathematical special functions (ISO/IEC 29124:2010) added. +

+ Assertions to check function preconditions can be enabled by defining the + Macros. + The initial set of assertions are a subset of the checks enabled by + the Debug Mode, but without the ABI changes and changes to algorithmic + complexity that are caused by enabling the full Debug Mode. +

7

+ The type of exception thrown by iostreams changed to the cxx11 + ABI version of std::ios_base::failure. +

+ Experimental C++17 support added, including most new library features. + The meaning of shared_ptr<T[]> changed to + match the C++17 semantics. +

+ Macros added. +

+ has_trivial_default_constructor, + has_trivial_copy_constructor and + has_trivial_copy_assign removed. +

Profile Mode was deprecated.

7.3

+ Including new C++14 or C++17 headers without a suitable -std + no longer causes compilation to fail via #error. + Instead the header is simply empty and doesn't define anything. +

8

+ The exceptions thrown by iostreams can now be caught by handlers for either + version of std::ios_base::failure. +

+ Experimental implementation of the C++17 Filesystem library added. +

+ AddressSanitizer annotations added to std::vector + to detect out-of-range accesses to the unused capacity of a vector. +

+ std::char_traits<char16_t>::to_int_type(u'\uFFFF') + now returns 0xFFFD, as 0xFFFF is + used for std::char_traits<char16_t>::eof(). +

+ The extension allowing arithmetic on + std::atomic<void*> and types like + std::atomic<R(*)()> was deprecated. +

+ The std::uncaught_exception function was deprecated + for C++17 mode. +

+ The nested typedefs std::hash::result_type and + std::hash::argument_type were deprecated for C++17 mode. +

+ The deprecated iostream members ios_base::io_state, + ios_base::open_mode, ios_base::seek_dir, and + basic_streambuf::stossc were removed for C++17 mode. +

+ The non-standard C++0x std::copy_exception function + was removed. +

+ For -std=c++11, -std=c++14, and + -std=c++17 modes the <complex.h> + header no longer includes the C99 <complex.h> + header. +

+ For the non-default --enable-symvers=gnu-versioned-namespace + configuration, the shared library SONAME has been changed to + libstdc++.so.8.

\ No newline at end of file diff --git a/libstdc++-v3/doc/html/manual/appendix.html b/libstdc++-v3/doc/html/manual/appendix.html index f71165e..75402c5 100644 --- a/libstdc++-v3/doc/html/manual/appendix.html +++ b/libstdc++-v3/doc/html/manual/appendix.html @@ -16,7 +16,7 @@ Existing tests
C++11 Requirements Test Sequence Descriptions -
ABI Policy and Guidelines
The C++ Interface
Versioning
Goals
History
Prerequisites
Configuring
Checking Active
Allowed Changes
Prohibited Changes
Implementation
Testing
Single ABI Testing
Multiple ABI Testing
Outstanding Issues
API Evolution and Deprecation History
3.0
3.1
3.2
3.3
3.4
4.0
4.1
4.2
4.3
4.4
4.5
4.6
4.7
4.8
4.9
5
Backwards Compatibility
First
No ios_base
No cout in <ostream.h>, no cin in <istream.h>
Second
Namespace std:: not supported
Illegal iterator usage
isspace from <cctype> is a macro +
ABI Policy and Guidelines
The C++ Interface
Versioning
Goals
History
Prerequisites
Configuring
Checking Active
Allowed Changes
Prohibited Changes
Implementation
Testing
Single ABI Testing
Multiple ABI Testing
Outstanding Issues
API Evolution and Deprecation History
3.0
3.1
3.2
3.3
3.4
4.0
4.1
4.2
4.3
4.4
4.5
4.6
4.7
4.8
4.9
5
5.3
6
7
7.3
8
Backwards Compatibility
First
No ios_base
No cout in <ostream.h>, no cin in <istream.h>
Second
Namespace std:: not supported
Illegal iterator usage
isspace from <cctype> is a macro
No vector::at, deque::at, string::at
No std::char_traits<char>::eof
No string::clear
Removal of ostream::form and istream::scan extensions diff --git a/libstdc++-v3/doc/html/manual/appendix_free.html b/libstdc++-v3/doc/html/manual/appendix_free.html index f7d0e5e..b10283f 100644 --- a/libstdc++-v3/doc/html/manual/appendix_free.html +++ b/libstdc++-v3/doc/html/manual/appendix_free.html @@ -116,7 +116,7 @@ manuals instead of proprietary ones. One way you can help this is to check the distribution terms of a manual before you buy it, and prefer copylefted manuals to non-copylefted ones.

-[Note: We now maintain a web page +[Note: We now maintain a web page that lists free books available from other publishers].

Copyright © 2004, 2005, 2006, 2007 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA

Verbatim copying and distribution of this entire article are permitted worldwide, without royalty, in any medium, provided this diff --git a/libstdc++-v3/doc/html/manual/appendix_porting.html b/libstdc++-v3/doc/html/manual/appendix_porting.html index b3ee651..15209b3 100644 --- a/libstdc++-v3/doc/html/manual/appendix_porting.html +++ b/libstdc++-v3/doc/html/manual/appendix_porting.html @@ -14,7 +14,7 @@ Existing tests

C++11 Requirements Test Sequence Descriptions -
ABI Policy and Guidelines
The C++ Interface
Versioning
Goals
History
Prerequisites
Configuring
Checking Active
Allowed Changes
Prohibited Changes
Implementation
Testing
Single ABI Testing
Multiple ABI Testing
Outstanding Issues
API Evolution and Deprecation History
3.0
3.1
3.2
3.3
3.4
4.0
4.1
4.2
4.3
4.4
4.5
4.6
4.7
4.8
4.9
5
Backwards Compatibility
First
No ios_base
No cout in <ostream.h>, no cin in <istream.h>
Second
Namespace std:: not supported
Illegal iterator usage
isspace from <cctype> is a macro +
ABI Policy and Guidelines
The C++ Interface
Versioning
Goals
History
Prerequisites
Configuring
Checking Active
Allowed Changes
Prohibited Changes
Implementation
Testing
Single ABI Testing
Multiple ABI Testing
Outstanding Issues
API Evolution and Deprecation History
3.0
3.1
3.2
3.3
3.4
4.0
4.1
4.2
4.3
4.4
4.5
4.6
4.7
4.8
4.9
5
5.3
6
7
7.3
8
Backwards Compatibility
First
No ios_base
No cout in <ostream.h>, no cin in <istream.h>
Second
Namespace std:: not supported
Illegal iterator usage
isspace from <cctype> is a macro
No vector::at, deque::at, string::at
No std::char_traits<char>::eof
No string::clear
Removal of ostream::form and istream::scan extensions diff --git a/libstdc++-v3/doc/html/manual/backwards.html b/libstdc++-v3/doc/html/manual/backwards.html index 31cbe01..2758f34 100644 --- a/libstdc++-v3/doc/html/manual/backwards.html +++ b/libstdc++-v3/doc/html/manual/backwards.html @@ -331,7 +331,7 @@ particular “info iostream”same + library (not a general program). We currently use the same definition that SGI uses for their STL subset. However, the exception for read-only containers only applies to the STL components. This definition is widely-used and something similar diff --git a/libstdc++-v3/doc/html/manual/containers.html b/libstdc++-v3/doc/html/manual/containers.html index a30aef2..e4030c4 100644 --- a/libstdc++-v3/doc/html/manual/containers.html +++ b/libstdc++-v3/doc/html/manual/containers.html @@ -10,7 +10,7 @@

Sequences

list

list::size() is O(n)

Yes it is, at least using the Dual ABI, and that's okay. This is a decision that we preserved when we imported SGI's STL implementation. The following is - quoted from their FAQ: + quoted from their FAQ:

The size() member function, for list and slist, takes time proportional to the number of elements in the list. This was a diff --git a/libstdc++-v3/doc/html/manual/debug_mode_design.html b/libstdc++-v3/doc/html/manual/debug_mode_design.html index e24109f..671e8db 100644 --- a/libstdc++-v3/doc/html/manual/debug_mode_design.html +++ b/libstdc++-v3/doc/html/manual/debug_mode_design.html @@ -391,7 +391,7 @@ test02() Hewlett-Packard STL. Though it inspired much work in this area, it has not been kept up-to-date for use with modern compilers or C++ standard library implementations.

  • STLport: STLport is a free - implementation of the C++ standard library derived from the SGI implementation, and + implementation of the C++ standard library derived from the SGI implementation, and ported to many other platforms. It includes a debug mode that uses a wrapper model (that in some ways inspired the libstdc++ debug mode design), although at the time of this writing the debug mode is diff --git a/libstdc++-v3/doc/html/manual/documentation_hacking.html b/libstdc++-v3/doc/html/manual/documentation_hacking.html index 274cdac..ec60d5e 100644 --- a/libstdc++-v3/doc/html/manual/documentation_hacking.html +++ b/libstdc++-v3/doc/html/manual/documentation_hacking.html @@ -527,7 +527,7 @@ make XSL_STYLE_DIR="/usr/share/xml/docbook/stylesheet/nwal       </set>
        

  • Markup By Example

    Complete details on Docbook markup can be found in the - DocBook Element Reference. + DocBook Element Reference. An incomplete reference for HTML to Docbook conversion is detailed in the table below.

    Table B.4. HTML to Docbook XML Markup Comparison

    HTMLDocbook
    <p><para>
    <pre><computeroutput>, <programlisting>, diff --git a/libstdc++-v3/doc/html/manual/ext_numerics.html b/libstdc++-v3/doc/html/manual/ext_numerics.html index 4689c95..57b14ee 100644 --- a/libstdc++-v3/doc/html/manual/ext_numerics.html +++ b/libstdc++-v3/doc/html/manual/ext_numerics.html @@ -14,7 +14,7 @@ The operation functor must be associative.

    The iota function wins the award for Extension With the Coolest Name (the name comes from Ken Iverson's APL language.) As - described in the SGI + described in the SGI documentation, it "assigns sequentially increasing values to a range. That is, it assigns value to *first, value + 1 to *(first + 1) and so on." diff --git a/libstdc++-v3/doc/html/manual/ext_sgi.html b/libstdc++-v3/doc/html/manual/ext_sgi.html index d201341..da0f85f 100644 --- a/libstdc++-v3/doc/html/manual/ext_sgi.html +++ b/libstdc++-v3/doc/html/manual/ext_sgi.html @@ -28,12 +28,12 @@ and sets.

    Each of the associative containers map, multimap, set, and multiset have a counterpart which uses a - hashing + hashing function to do the arranging, instead of a strict weak ordering function. The classes take as one of their template parameters a function object that will return the hash value; by default, an instantiation of - hash. + hash. You should specialize this functor for your class, or define your own, before trying to use one of the hashing classes.

    The hashing classes support all the usual associative container diff --git a/libstdc++-v3/doc/html/manual/index.html b/libstdc++-v3/doc/html/manual/index.html index ec39379..b1a5103 100644 --- a/libstdc++-v3/doc/html/manual/index.html +++ b/libstdc++-v3/doc/html/manual/index.html @@ -1,6 +1,6 @@ -The GNU C++ Library Manual

    The GNU C++ Library Manual

    Paolo Carlini

    Phil Edwards

    Doug Gregor

    Benjamin Kosnik

    Dhruv Matani

    Jason Merrill

    Mark Mitchell

    Nathan Myers

    Felix Natter

    Stefan Olsson

    Silvius Rus

    Johannes Singler

    Ami Tavory

    Jonathan Wakely

    The GNU C++ Library Manual

    Paolo Carlini

    Phil Edwards

    Doug Gregor

    Benjamin Kosnik

    Dhruv Matani

    Jason Merrill

    Mark Mitchell

    Nathan Myers

    Felix Natter

    Stefan Olsson

    Silvius Rus

    Johannes Singler

    Ami Tavory

    Jonathan Wakely


    Table of Contents

    I. Introduction @@ -123,7 +123,7 @@ Existing tests
    C++11 Requirements Test Sequence Descriptions -
    ABI Policy and Guidelines
    The C++ Interface
    Versioning
    Goals
    History
    Prerequisites
    Configuring
    Checking Active
    Allowed Changes
    Prohibited Changes
    Implementation
    Testing
    Single ABI Testing
    Multiple ABI Testing
    Outstanding Issues
    API Evolution and Deprecation History
    3.0
    3.1
    3.2
    3.3
    3.4
    4.0
    4.1
    4.2
    4.3
    4.4
    4.5
    4.6
    4.7
    4.8
    4.9
    5
    Backwards Compatibility
    First
    No ios_base
    No cout in <ostream.h>, no cin in <istream.h>
    Second
    Namespace std:: not supported
    Illegal iterator usage
    isspace from <cctype> is a macro +
    ABI Policy and Guidelines
    The C++ Interface
    Versioning
    Goals
    History
    Prerequisites
    Configuring
    Checking Active
    Allowed Changes
    Prohibited Changes
    Implementation
    Testing
    Single ABI Testing
    Multiple ABI Testing
    Outstanding Issues
    API Evolution and Deprecation History
    3.0
    3.1
    3.2
    3.3
    3.4
    4.0
    4.1
    4.2
    4.3
    4.4
    4.5
    4.6
    4.7
    4.8
    4.9
    5
    5.3
    6
    7
    7.3
    8
    Backwards Compatibility
    First
    No ios_base
    No cout in <ostream.h>, no cin in <istream.h>
    Second
    Namespace std:: not supported
    Illegal iterator usage
    isspace from <cctype> is a macro
    No vector::at, deque::at, string::at
    No std::char_traits<char>::eof
    No string::clear
    Removal of ostream::form and istream::scan extensions diff --git a/libstdc++-v3/doc/html/manual/license.html b/libstdc++-v3/doc/html/manual/license.html index c1d708a..e10808a 100644 --- a/libstdc++-v3/doc/html/manual/license.html +++ b/libstdc++-v3/doc/html/manual/license.html @@ -15,7 +15,7 @@ GCC RUNTIME LIBRARY EXCEPTION

    Version 3.1, 31 March 2009

    -Copyright (C) 2009 
    Free Software Foundation, Inc.
    +Copyright (C) 2009 Free Software Foundation, Inc.

    Everyone is permitted to copy and distribute verbatim copies of this
    license document, but changing it is not allowed.
    diff --git a/libstdc++-v3/doc/html/manual/policy_data_structures.html b/libstdc++-v3/doc/html/manual/policy_data_structures.html index 8b2b87d..682f7d3 100644 --- a/libstdc++-v3/doc/html/manual/policy_data_structures.html +++ b/libstdc++-v3/doc/html/manual/policy_data_structures.html @@ -1213,7 +1213,7 @@
    . In Workshop on ML .

    [biblio.sgi_stl] - + Standard Template Library Programmer's Guide . diff --git a/libstdc++-v3/doc/html/manual/strings.html b/libstdc++-v3/doc/html/manual/strings.html index 4921426..3441119 100644 --- a/libstdc++-v3/doc/html/manual/strings.html +++ b/libstdc++-v3/doc/html/manual/strings.html @@ -70,7 +70,8 @@

        char toLower (char c)
        {
    -      return std::tolower(c);
    +      // std::tolower(c) is undefined if c < 0 so cast to unsigned char.
    +      return std::tolower((unsigned char)c);
        } 

    (Thanks to James Kanze for assistance and suggestions on all of this.)

    Another common operation is trimming off excess whitespace. Much like transformations, this task is trivial with the use of string's diff --git a/libstdc++-v3/doc/html/manual/test.html b/libstdc++-v3/doc/html/manual/test.html index aed5a32..8edc4fa 100644 --- a/libstdc++-v3/doc/html/manual/test.html +++ b/libstdc++-v3/doc/html/manual/test.html @@ -392,15 +392,23 @@ cat 27_io/objects/char/3_xin.in | a.out

    VERIFY macro, defined in the <testsuite_hooks.h> header. - This usually expands to the standard assert macro, but - allows targets to define it to something different. In order to support - the alternative expansions of VERIFY, before any - use of the macro there must be a variable called test - in scope, which is usually defined like so (the attribute avoids + This expands to a custom assertion using + __builtin_printf and + __builtin_abort + (to avoid using assert and being affected by + NDEBUG). +

    + Prior to GCC 7.1, VERIFY was defined differently. + It usually expanded to the standard assert macro, but + allowed targets to define it to something different. In order to support + the alternative expansions of VERIFY, before any use + of the macro there needed to be a variable called test + in scope, which was usually defined like so (the attribute avoids warnings about an unused variable):

         bool test __attribute__((unused)) = true;
         

    + This is no longer needed, and should not be added to new tests.

    The testsuite uses the DejaGnu framework to compile and run the tests. Test cases are normal C++ files which contain special directives in diff --git a/libstdc++-v3/doc/html/manual/using_concurrency.html b/libstdc++-v3/doc/html/manual/using_concurrency.html index 62d0a0b..436be0e 100644 --- a/libstdc++-v3/doc/html/manual/using_concurrency.html +++ b/libstdc++-v3/doc/html/manual/using_concurrency.html @@ -40,7 +40,7 @@ The standard places requirements on the library to ensure that no data races are caused by the library itself or by programs which use the library correctly (as described below). The C++11 memory model and library requirements are a more formal version -of the SGI STL definition of thread safety, which the library used +of the SGI STL definition of thread safety, which the library used prior to the 2011 standard.

    The library strives to be thread-safe when all of the following conditions are met: @@ -233,10 +233,10 @@ gcc version 4.1.2 20070925 (Red Hat 4.1.2-33) threaded and non-threaded code), see Chapter 17.

    Two excellent pages to read when working with the Standard C++ containers and threads are - SGI's - http://www.sgi.com/tech/stl/thread_safety.html and - SGI's - http://www.sgi.com/tech/stl/Allocators.html. + SGI's + https://web.archive.org/web/20171225062613/http://www.sgi.com/tech/stl/thread_safety.html and + SGI's + https://web.archive.org/web/20171225062613/http://www.sgi.com/tech/stl/Allocators.html.

    However, please ignore all discussions about the user-level configuration of the lock implementation inside the STL container-memory allocator on those pages. For the sake of this diff --git a/libstdc++-v3/doc/html/manual/utilities.html b/libstdc++-v3/doc/html/manual/utilities.html index 3f8fadb..15c9a9d 100644 --- a/libstdc++-v3/doc/html/manual/utilities.html +++ b/libstdc++-v3/doc/html/manual/utilities.html @@ -11,6 +11,6 @@ get slightly the wrong idea. In the interest of not reinventing the wheel, we will refer you to the introduction to the functor concept written by SGI as part of their STL, in - their - http://www.sgi.com/tech/stl/functors.html. + their + https://web.archive.org/web/20171225062613/http://www.sgi.com/tech/stl/functors.html.

    \ No newline at end of file diff --git a/libstdc++-v3/doc/xml/manual/abi.xml b/libstdc++-v3/doc/xml/manual/abi.xml index ba286a2..733c803 100644 --- a/libstdc++-v3/doc/xml/manual/abi.xml +++ b/libstdc++-v3/doc/xml/manual/abi.xml @@ -571,6 +571,9 @@ compatible. GCC 3.4.x: include/c++/3.4.x GCC 4.x.y: include/c++/4.x.y GCC 5.x.0: include/c++/5.x.0 + GCC 6.x.0: include/c++/6.x.0 + GCC 7.x.0: include/c++/7.x.0 + GCC 8.x.0: include/c++/8.x.0 diff --git a/libstdc++-v3/doc/xml/manual/evolution.xml b/libstdc++-v3/doc/xml/manual/evolution.xml index 7f89c29..3288e2f 100644 --- a/libstdc++-v3/doc/xml/manual/evolution.xml +++ b/libstdc++-v3/doc/xml/manual/evolution.xml @@ -705,7 +705,7 @@ now defaults to zero. -
    <constant>5</constant> +
    <constant>5</constant> ABI transition adds new implementations of several components, using the @@ -717,7 +717,8 @@ now defaults to zero. Use of the new or old ABI can be selected per-translation unit with the - _GLIBCXX_USE_CXX11_ABI macro. + _GLIBCXX_USE_CXX11_ABI + macro. @@ -731,6 +732,12 @@ now defaults to zero. data member in order to provide O(1) size(). + + + New ios_base::failure implementation inheriting + from system_error. + + @@ -760,5 +767,132 @@ now defaults to zero. has_trivial_copy_assign deprecated. +
    <constant>5.3</constant> + Experimental implementation of the C++ Filesystem TS added. + +
    + +
    + +
    <constant>6</constant> + + C++14 support completed. + + + Support for mathematical special functions (ISO/IEC 29124:2010) added. + + + + Assertions to check function preconditions can be enabled by defining the + _GLIBCXX_ASSERTIONS + macro. + The initial set of assertions are a subset of the checks enabled by + the Debug Mode, but without the ABI changes and changes to algorithmic + complexity that are caused by enabling the full Debug Mode. + + +
    + +
    <constant>7</constant> + + + The type of exception thrown by iostreams changed to the cxx11 + ABI version of std::ios_base::failure. + + + + Experimental C++17 support added, including most new library features. + The meaning of shared_ptr<T[]> changed to + match the C++17 semantics. + + + + _GLIBCXX_RELEASE + macro added. + + + + has_trivial_default_constructor, + has_trivial_copy_constructor and + has_trivial_copy_assign removed. + + + Profile Mode was deprecated. + +
    <constant>7.3</constant> + + + Including new C++14 or C++17 headers without a suitable + no longer causes compilation to fail via #error. + Instead the header is simply empty and doesn't define anything. + +
    + +
    + +
    <constant>8</constant> + + + The exceptions thrown by iostreams can now be caught by handlers for either + version of std::ios_base::failure. + + + + Experimental implementation of the C++17 Filesystem library added. + + + + AddressSanitizer annotations added to std::vector + to detect out-of-range accesses to the unused capacity of a vector. + + + + std::char_traits<char16_t>::to_int_type(u'\uFFFF') + now returns 0xFFFD, as 0xFFFF is + used for std::char_traits<char16_t>::eof(). + + + + The extension allowing arithmetic on + std::atomic<void*> and types like + std::atomic<R(*)()> was deprecated. + + + + The std::uncaught_exception function was deprecated + for C++17 mode. + + + + The nested typedefs std::hash::result_type and + std::hash::argument_type were deprecated for C++17 mode. + + + + The deprecated iostream members ios_base::io_state, + ios_base::open_mode, ios_base::seek_dir, and + basic_streambuf::stossc were removed for C++17 mode. + + + + The non-standard C++0x std::copy_exception function + was removed. + + + + For , , and + modes the <complex.h> + header no longer includes the C99 <complex.h> + header. + + + + For the non-default + configuration, the shared library SONAME has been changed to + libstdc++.so.8. + + +
    +
    diff --git a/libstdc++-v3/doc/xml/manual/spine.xml b/libstdc++-v3/doc/xml/manual/spine.xml index 5733624..b9f05e2 100644 --- a/libstdc++-v3/doc/xml/manual/spine.xml +++ b/libstdc++-v3/doc/xml/manual/spine.xml @@ -25,6 +25,7 @@ 2015 2016 2017 + 2018 FSF diff --git a/libstdc++-v3/doc/xml/manual/strings.xml b/libstdc++-v3/doc/xml/manual/strings.xml index 101f8cd..1c7ab4c 100644 --- a/libstdc++-v3/doc/xml/manual/strings.xml +++ b/libstdc++-v3/doc/xml/manual/strings.xml @@ -88,7 +88,8 @@ char toLower (char c) { - return std::tolower(c); + // std::tolower(c) is undefined if c < 0 so cast to unsigned char. + return std::tolower((unsigned char)c); } (Thanks to James Kanze for assistance and suggestions on all of this.) diff --git a/libstdc++-v3/doc/xml/manual/test.xml b/libstdc++-v3/doc/xml/manual/test.xml index 154b74c..c8c47d1 100644 --- a/libstdc++-v3/doc/xml/manual/test.xml +++ b/libstdc++-v3/doc/xml/manual/test.xml @@ -657,15 +657,25 @@ cat 27_io/objects/char/3_xin.in | a.out Tests that need to perform runtime checks should use the VERIFY macro, defined in the <testsuite_hooks.h> header. - This usually expands to the standard assert macro, but - allows targets to define it to something different. In order to support - the alternative expansions of VERIFY, before any - use of the macro there must be a variable called test - in scope, which is usually defined like so (the attribute avoids + This expands to a custom assertion using + __builtin_printf and + __builtin_abort + (to avoid using assert and being affected by + NDEBUG). +
    + + + Prior to GCC 7.1, VERIFY was defined differently. + It usually expanded to the standard assert macro, but + allowed targets to define it to something different. In order to support + the alternative expansions of VERIFY, before any use + of the macro there needed to be a variable called test + in scope, which was usually defined like so (the attribute avoids warnings about an unused variable): bool test __attribute__((unused)) = true; + This is no longer needed, and should not be added to new tests.