PR78905 define _GLIBCXX_RELEASE macro

Programming / Compilers / GCC - redi [138bc75d-0d04-0410-961f-82ee72b054a4] - 19 January 2017 11:40 EST

PR libstdc++/78905
- doc/xml/manual/abi.xml (abi.versioning.history): Add markup to macro names, filenames, and literal values. Document _GLIBCXX_RELEASE. Document that the deprecated _GLIBCXX_VERSION macro was removed for the 4.0.0 release.
- doc/html/*: Regenerate.
- include/Makefile.am (_GLIBCXX_RELEASE): Set value.
- include/Makefile.in: Regenerate.
- include/bits/c++config (_GLIBCXX_RELEASE): Add #define.
- testsuite/ext/profile/mutex_extensions_neg.cc: Use lineno of 0 in dg-error.

###

diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 9af3b9f..c6fb5ad 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,17 @@
+2017-01-19 Jonathan Wakely
+
+ PR libstdc++/78905
+ * doc/xml/manual/abi.xml (abi.versioning.history): Add markup to
+ macro names, filenames, and literal values. Document _GLIBCXX_RELEASE.
+ Document that the deprecated _GLIBCXX_VERSION macro was removed for
+ the 4.0.0 release.
+ * doc/html/*: Regenerate.
+ * include/Makefile.am (_GLIBCXX_RELEASE): Set value.
+ * include/Makefile.in: Regenerate.
+ * include/bits/c++config (_GLIBCXX_RELEASE): Add #define.
+ * testsuite/ext/profile/mutex_extensions_neg.cc: Use lineno of 0 in
+ dg-error.
+
2017-01-18 Jonathan Wakely

PR libstdc++/69301
@@ -22,7 +36,7 @@

PR libstdc++/69699
* doc/xml/manual/abi.xml (abi.versioning.history): Explain why the
- _GLIBCXX__ macro is not useful. Remove redundant date information
+ __GLIBCXX__ macro is not useful. Remove redundant date information
and link to the GCC release timeline.
(abi.versioning.active): Move partial sentence into the previous
paragraph.
diff --git a/libstdc++-v3/doc/html/manual/abi.html b/libstdc++-v3/doc/html/manual/abi.html
index 8988e45..775d09e 100644
--- a/libstdc++-v3/doc/html/manual/abi.html
+++ b/libstdc++-v3/doc/html/manual/abi.html
@@ -145,60 +145,82 @@ compatible.
-fabi-version.


It is versioned as follows:
-

  • GCC 3.0: (Error, not versioned)

  • GCC 3.1: (Error, not versioned)

  • GCC 3.2: -fabi-version=1

  • GCC 3.3: -fabi-version=1

  • GCC 3.4, GCC 4.x: -fabi-version=2 (Incompatible with previous)

  • Incremental bumping of a library pre-defined macro. For releases
    - before 3.4.0, the macro is __GLIBCPP__. For later releases, it's
    - __GLIBCXX__. (The libstdc++ project generously changed from CPP to
    - CXX throughout its source to allow the "C" pre-processor the CPP
    - macro namespace.) These macros are defined as the date the library
    - was released, in compressed ISO date format, as an unsigned long.
    +

    • GCC 3.0: (Error, not versioned)

    • GCC 3.1: (Error, not versioned)

    • GCC 3.2: -fabi-version=1

    • GCC 3.3: -fabi-version=1

    • GCC 3.4, GCC 4.x: -fabi-version=2 (Incompatible with previous)

    • GCC 5 and higher: -fabi-version=0 (See GCC manual for meaning)

  • Incremental bumping of a library pre-defined macro. For releases
    + before 3.4.0, the macro is __GLIBCPP__. For later
    + releases, it's __GLIBCXX__. (The libstdc++ project
    + generously changed from CPP to CXX throughout its source to allow the
    + "C" pre-processor the CPP macro namespace.) These macros are defined
    + as the date the library was released, in compressed ISO date format,
    + as an integer constant.


    - This macro is defined in the file "c++config" in the
    - "libstdc++-v3/include/bits" directory. Up to GCC 4.1.0, it was
    + This macro is defined in the file
    + c++config in the
    + libstdc++-v3/include/bits
    + directory. Up to GCC 4.1.0, it was
    changed every night by an automated script. Since GCC 4.1.0 it is set
    during configuration to the same value as
    gcc/DATESTAMP, so for an official release its value
    is the same as the date of the release, which is given in the GCC Release
    Timeline
    .


    - This macro is not useful for determining whether a particular feature is
    - supported by the version of libstdc++ you are using. The date of a release
    - might be after a feature was added to the development trunk, but the
    - release could be from an older branch. For example, in the 5.4.0 release
    - the macro has the value 20160603 which is greater than the 20160427 value
    - of the macro in the 6.1.0 release, but there are features supported in the
    - 6.1.0 release that are not supported in 5.4.0 release.
    + This macro can be used in code to detect whether the C++ Standard Library
    + implementation in use is libstdc++, but is not useful for detecting the
    + libstdc++ version, nor whether particular features are supported.
    + The macro value might be a date after a feature was added to the
    + development trunk, but the release could be from an older branch without
    + the feature. For example, in the 5.4.0 release the macro has the value
    + 20160603 which is greater than the
    + 20160427 value of the macro in the 6.1.0 release,
    + but there are features supported in the 6.1.0 release that are not
    + supported in 5.4.0 release.
    You also can't test for the the exact values listed below to try and
    identify a release, because a snapshot taken from the gcc-5-branch on
    2016-04-27 would have the same value for the macro as the 6.1.0 release
    despite being a different version.
    Many GNU/Linux distributions build their GCC packages from snapshots, so
    - the macro can have dates that doesn't correspond to official releases.
    + the macro can have dates that don't correspond to official releases.


    It is versioned as follows:
    -

    • GCC 3.0.0: 20010615

    • GCC 3.0.1: 20010819

    • GCC 3.0.2: 20011023

    • GCC 3.0.3: 20011220

    • GCC 3.0.4: 20020220

    • GCC 3.1.0: 20020514

    • GCC 3.1.1: 20020725

    • GCC 3.2.0: 20020814

    • GCC 3.2.1: 20021119

    • GCC 3.2.2: 20030205

    • GCC 3.2.3: 20030422

    • GCC 3.3.0: 20030513

    • GCC 3.3.1: 20030804

    • GCC 3.3.2: 20031016

    • GCC 3.3.3: 20040214

    • GCC 3.4.0: 20040419

    • GCC 3.4.1: 20040701

    • GCC 3.4.2: 20040906

    • GCC 3.4.3: 20041105

    • GCC 3.4.4: 20050519

    • GCC 3.4.5: 20051201

    • GCC 3.4.6: 20060306

    • GCC 4.0.0: 20050421

    • GCC 4.0.1: 20050707

    • GCC 4.0.2: 20050921

    • GCC 4.0.3: 20060309


    • +

      • GCC 3.0.0: 20010615

      • GCC 3.0.1: 20010819

      • GCC 3.0.2: 20011023

      • GCC 3.0.3: 20011220

      • GCC 3.0.4: 20020220

      • GCC 3.1.0: 20020514

      • GCC 3.1.1: 20020725

      • GCC 3.2.0: 20020814

      • GCC 3.2.1: 20021119

      • GCC 3.2.2: 20030205

      • GCC 3.2.3: 20030422

      • GCC 3.3.0: 20030513

      • GCC 3.3.1: 20030804

      • GCC 3.3.2: 20031016

      • GCC 3.3.3: 20040214

      • GCC 3.4.0: 20040419

      • GCC 3.4.1: 20040701

      • GCC 3.4.2: 20040906

      • GCC 3.4.3: 20041105

      • GCC 3.4.4: 20050519

      • GCC 3.4.5: 20051201

      • GCC 3.4.6: 20060306

      • GCC 4.0.0: 20050421

      • GCC 4.0.1: 20050707

      • GCC 4.0.2: 20050921

      • GCC 4.0.3: 20060309


      • GCC 4.1.0 and later: the GCC release date, as shown in the
        GCC
        Release Timeline


    • - Incremental bumping of a library pre-defined macro,
      - _GLIBCPP_VERSION. This macro is defined as the released version of
      - the library, as a string literal. This is only implemented in
      - GCC 3.1.0 releases and higher, and is deprecated in 3.4 (where it
      - is called _GLIBCXX_VERSION).
      + Since GCC 7, incremental bumping of a library pre-defined macro,
      + _GLIBCXX_RELEASE. This macro is defined to the GCC
      + major version that the libstdc++ headers belong to, as an integer constant.
      + When compiling with GCC it has the same value as GCC's pre-defined
      + macro __GNUC__.
      + This macro can be used when libstdc++ is used with a non-GNU
      + compiler where __GNUC__ is not defined, or has a
      + different value that doesn't correspond to the libstdc++ version.


      - This macro is defined in the file "c++config" in the
      - "libstdc++-v3/include/bits" directory and is generated
      - automatically by autoconf as part of the configure-time generation
      - of config.h.
      + This macro is defined in the file
      + c++config in the
      + libstdc++-v3/include/bits
      + directory and is generated automatically by autoconf as part of the
      + configure-time generation of
      + config.h and subsequently
      + <bits/c++config.h>.
      +


    • + Historically, incremental bumping of a library pre-defined macro,
      + _GLIBCPP_VERSION. This macro was defined as the
      + released version of the library, as a string literal. This was only
      + implemented in GCC 3.1.0 releases and higher, and was deprecated in
      + 3.4.x (where it was called _GLIBCXX_VERSION),
      + and is not defined in 4.0.0 and higher.
      +


      + This macro is defined in the same file as
      + _GLIBCXX_RELEASE, described above.


      It is versioned as follows:
      -

      • GCC 3.0.0: "3.0.0"

      • GCC 3.0.1: "3.0.0" (Error, should be "3.0.1")

      • GCC 3.0.2: "3.0.0" (Error, should be "3.0.2")

      • GCC 3.0.3: "3.0.0" (Error, should be "3.0.3")

      • GCC 3.0.4: "3.0.0" (Error, should be "3.0.4")

      • GCC 3.1.0: "3.1.0"

      • GCC 3.1.1: "3.1.1"

      • GCC 3.2.0: "3.2"

      • GCC 3.2.1: "3.2.1"

      • GCC 3.2.2: "3.2.2"

      • GCC 3.2.3: "3.2.3"

      • GCC 3.3.0: "3.3"

      • GCC 3.3.1: "3.3.1"

      • GCC 3.3.2: "3.3.2"

      • GCC 3.3.3: "3.3.3"

      • GCC 3.4: "version-unused"

      • GCC 4.x: "version-unused"


    • +

      • GCC 3.0.0: "3.0.0"

      • GCC 3.0.1: "3.0.0" (Error, should be "3.0.1")

      • GCC 3.0.2: "3.0.0" (Error, should be "3.0.2")

      • GCC 3.0.3: "3.0.0" (Error, should be "3.0.3")

      • GCC 3.0.4: "3.0.0" (Error, should be "3.0.4")

      • GCC 3.1.0: "3.1.0"

      • GCC 3.1.1: "3.1.1"

      • GCC 3.2.0: "3.2"

      • GCC 3.2.1: "3.2.1"

      • GCC 3.2.2: "3.2.2"

      • GCC 3.2.3: "3.2.3"

      • GCC 3.3.0: "3.3"

      • GCC 3.3.1: "3.3.1"

      • GCC 3.3.2: "3.3.2"

      • GCC 3.3.3: "3.3.3"

      • GCC 3.4: "version-unused"

      • GCC 4 and later: not defined


    • Matching each specific C++ compiler release to a specific set of
      C++ include files. This is only implemented in GCC 3.1.1 releases
      and higher.


      All C++ includes are installed in
      - include/c++, then nest in a
      + include/c++, then nested in a
      directory hierarchy corresponding to the C++ compiler's released
      version. This version corresponds to the variable "gcc_version" in
      "libstdc++-v3/acinclude.m4," and more details can be found in that
      diff --git a/libstdc++-v3/doc/xml/manual/abi.xml b/libstdc++-v3/doc/xml/manual/abi.xml
      index c818bd8..f2b2ec3 100644
      --- a/libstdc++-v3/doc/xml/manual/abi.xml
      +++ b/libstdc++-v3/doc/xml/manual/abi.xml
      @@ -378,22 +378,26 @@ compatible.
      GCC 3.2: -fabi-version=1
      GCC 3.3: -fabi-version=1
      GCC 3.4, GCC 4.x: -fabi-version=2 (Incompatible with previous)
      + GCC 5 and higher: -fabi-version=0 (See GCC manual for meaning)





      Incremental bumping of a library pre-defined macro. For releases
      - before 3.4.0, the macro is __GLIBCPP__. For later releases, it's
      - __GLIBCXX__. (The libstdc++ project generously changed from CPP to
      - CXX throughout its source to allow the "C" pre-processor the CPP
      - macro namespace.) These macros are defined as the date the library
      - was released, in compressed ISO date format, as an unsigned long.
      + before 3.4.0, the macro is __GLIBCPP__. For later
      + releases, it's __GLIBCXX__. (The libstdc++ project
      + generously changed from CPP to CXX throughout its source to allow the
      + "C" pre-processor the CPP macro namespace.) These macros are defined
      + as the date the library was released, in compressed ISO date format,
      + as an integer constant.



      - This macro is defined in the file "c++config" in the
      - "libstdc++-v3/include/bits" directory. Up to GCC 4.1.0, it was
      + This macro is defined in the file
      + c++config in the
      + libstdc++-v3/include/bits
      + directory. Up to GCC 4.1.0, it was
      changed every night by an automated script. Since GCC 4.1.0 it is set
      during configuration to the same value as
      gcc/DATESTAMP, so for an official release its value
      @@ -404,51 +408,54 @@ compatible.



      - This macro is not useful for determining whether a particular feature is
      - supported by the version of libstdc++ you are using. The date of a release
      - might be after a feature was added to the development trunk, but the
      - release could be from an older branch. For example, in the 5.4.0 release
      - the macro has the value 20160603 which is greater than the 20160427 value
      - of the macro in the 6.1.0 release, but there are features supported in the
      - 6.1.0 release that are not supported in 5.4.0 release.
      + This macro can be used in code to detect whether the C++ Standard Library
      + implementation in use is libstdc++, but is not useful for detecting the
      + libstdc++ version, nor whether particular features are supported.
      + The macro value might be a date after a feature was added to the
      + development trunk, but the release could be from an older branch without
      + the feature. For example, in the 5.4.0 release the macro has the value
      + 20160603 which is greater than the
      + 20160427 value of the macro in the 6.1.0 release,
      + but there are features supported in the 6.1.0 release that are not
      + supported in 5.4.0 release.
      You also can't test for the the exact values listed below to try and
      identify a release, because a snapshot taken from the gcc-5-branch on
      2016-04-27 would have the same value for the macro as the 6.1.0 release
      despite being a different version.
      Many GNU/Linux distributions build their GCC packages from snapshots, so
      - the macro can have dates that doesn't correspond to official releases.
      + the macro can have dates that don't correspond to official releases.



      It is versioned as follows:


      - GCC 3.0.0: 20010615
      - GCC 3.0.1: 20010819
      - GCC 3.0.2: 20011023
      - GCC 3.0.3: 20011220
      - GCC 3.0.4: 20020220
      - GCC 3.1.0: 20020514
      - GCC 3.1.1: 20020725
      - GCC 3.2.0: 20020814
      - GCC 3.2.1: 20021119
      - GCC 3.2.2: 20030205
      - GCC 3.2.3: 20030422
      - GCC 3.3.0: 20030513
      - GCC 3.3.1: 20030804
      - GCC 3.3.2: 20031016
      - GCC 3.3.3: 20040214
      - GCC 3.4.0: 20040419
      - GCC 3.4.1: 20040701
      - GCC 3.4.2: 20040906
      - GCC 3.4.3: 20041105
      - GCC 3.4.4: 20050519
      - GCC 3.4.5: 20051201
      - GCC 3.4.6: 20060306
      - GCC 4.0.0: 20050421
      - GCC 4.0.1: 20050707
      - GCC 4.0.2: 20050921
      - GCC 4.0.3: 20060309
      + GCC 3.0.0: 20010615
      + GCC 3.0.1: 20010819
      + GCC 3.0.2: 20011023
      + GCC 3.0.3: 20011220
      + GCC 3.0.4: 20020220
      + GCC 3.1.0: 20020514
      + GCC 3.1.1: 20020725
      + GCC 3.2.0: 20020814
      + GCC 3.2.1: 20021119
      + GCC 3.2.2: 20030205
      + GCC 3.2.3: 20030422
      + GCC 3.3.0: 20030513
      + GCC 3.3.1: 20030804
      + GCC 3.3.2: 20031016
      + GCC 3.3.3: 20040214
      + GCC 3.4.0: 20040419
      + GCC 3.4.1: 20040701
      + GCC 3.4.2: 20040906
      + GCC 3.4.3: 20041105
      + GCC 3.4.4: 20050519
      + GCC 3.4.5: 20051201
      + GCC 3.4.6: 20060306
      + GCC 4.0.0: 20050421
      + GCC 4.0.1: 20050707
      + GCC 4.0.2: 20050921
      + GCC 4.0.3: 20060309

      GCC 4.1.0 and later: the GCC release date, as shown in the
      @@ -461,41 +468,63 @@ compatible.



      - Incremental bumping of a library pre-defined macro,
      - _GLIBCPP_VERSION. This macro is defined as the released version of
      - the library, as a string literal. This is only implemented in
      - GCC 3.1.0 releases and higher, and is deprecated in 3.4 (where it
      - is called _GLIBCXX_VERSION).
      + Since GCC 7, incremental bumping of a library pre-defined macro,
      + _GLIBCXX_RELEASE. This macro is defined to the GCC
      + major version that the libstdc++ headers belong to, as an integer constant.
      + When compiling with GCC it has the same value as GCC's pre-defined
      + macro __GNUC__.
      + This macro can be used when libstdc++ is used with a non-GNU
      + compiler where __GNUC__ is not defined, or has a
      + different value that doesn't correspond to the libstdc++ version.



      - This macro is defined in the file "c++config" in the
      - "libstdc++-v3/include/bits" directory and is generated
      - automatically by autoconf as part of the configure-time generation
      - of config.h.
      + This macro is defined in the file
      + c++config in the
      + libstdc++-v3/include/bits
      + directory and is generated automatically by autoconf as part of the
      + configure-time generation of
      + config.h and subsequently
      + <bits/c++config.h>.
      +

      +

      +
      +
      +
      + Historically, incremental bumping of a library pre-defined macro,
      + _GLIBCPP_VERSION. This macro was defined as the
      + released version of the library, as a string literal. This was only
      + implemented in GCC 3.1.0 releases and higher, and was deprecated in
      + 3.4.x (where it was called _GLIBCXX_VERSION),
      + and is not defined in 4.0.0 and higher.
      +

      +
      +
      + This macro is defined in the same file as
      + _GLIBCXX_RELEASE, described above.



      It is versioned as follows:


      - GCC 3.0.0: "3.0.0"
      - GCC 3.0.1: "3.0.0" (Error, should be "3.0.1")
      - GCC 3.0.2: "3.0.0" (Error, should be "3.0.2")
      - GCC 3.0.3: "3.0.0" (Error, should be "3.0.3")
      - GCC 3.0.4: "3.0.0" (Error, should be "3.0.4")
      - GCC 3.1.0: "3.1.0"
      - GCC 3.1.1: "3.1.1"
      - GCC 3.2.0: "3.2"
      - GCC 3.2.1: "3.2.1"
      - GCC 3.2.2: "3.2.2"
      - GCC 3.2.3: "3.2.3"
      - GCC 3.3.0: "3.3"
      - GCC 3.3.1: "3.3.1"
      - GCC 3.3.2: "3.3.2"
      - GCC 3.3.3: "3.3.3"
      - GCC 3.4: "version-unused"
      - GCC 4.x: "version-unused"
      + GCC 3.0.0: "3.0.0"
      + GCC 3.0.1: "3.0.0" (Error, should be "3.0.1")
      + GCC 3.0.2: "3.0.0" (Error, should be "3.0.2")
      + GCC 3.0.3: "3.0.0" (Error, should be "3.0.3")
      + GCC 3.0.4: "3.0.0" (Error, should be "3.0.4")
      + GCC 3.1.0: "3.1.0"
      + GCC 3.1.1: "3.1.1"
      + GCC 3.2.0: "3.2"
      + GCC 3.2.1: "3.2.1"
      + GCC 3.2.2: "3.2.2"
      + GCC 3.2.3: "3.2.3"
      + GCC 3.3.0: "3.3"
      + GCC 3.3.1: "3.3.1"
      + GCC 3.3.2: "3.3.2"
      + GCC 3.3.3: "3.3.3"
      + GCC 3.4: "version-unused"
      + GCC 4 and later: not defined



      @@ -508,7 +537,7 @@ compatible.


      All C++ includes are installed in
      - include/c++, then nest in a
      + include/c++, then nested in a
      directory hierarchy corresponding to the C++ compiler's released
      version. This version corresponds to the variable "gcc_version" in
      "libstdc++-v3/acinclude.m4," and more details can be found in that
      diff --git a/libstdc++-v3/include/Makefile.am b/libstdc++-v3/include/Makefile.am
      index dfdceb3..3703bd1 100644
      --- a/libstdc++-v3/include/Makefile.am
      +++ b/libstdc++-v3/include/Makefile.am
      @@ -1238,6 +1238,7 @@ ${host_builddir}/c++config.h: ${CONFIG_HEADER} \
      stamp-cxx11-abi \
      stamp-allocator-new
      @date=`cat ${toplevel_srcdir}/gcc/DATESTAMP` ;\
      + release=`sed 's/^\([0-9]*\).*$$/\1/' ${toplevel_srcdir}/gcc/BASE-VER` ;\
      ns_version=`cat stamp-namespace-version` ;\
      visibility=`cat stamp-visibility` ;\
      externtemplate=`cat stamp-extern-template` ;\
      @@ -1249,6 +1250,7 @@ ${host_builddir}/c++config.h: ${CONFIG_HEADER} \
      ${CONFIG_HEADER} > /dev/null 2>&1 \
      && ldbl_compat='s,^#undef _GLIBCXX_LONG_DOUBLE_COMPAT$$,#define _GLIBCXX_LONG_DOUBLE_COMPAT 1,' ;\
      sed -e "s,define __GLIBCXX__,define __GLIBCXX__ $$date," \
      + -e "s,define _GLIBCXX_RELEASE,define _GLIBCXX_RELEASE $$release," \
      -e "s,define _GLIBCXX_INLINE_VERSION, define _GLIBCXX_INLINE_VERSION $$ns_version," \
      -e "s,define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY, define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY $$visibility," \
      -e "s,define _GLIBCXX_EXTERN_TEMPLATE$$, define _GLIBCXX_EXTERN_TEMPLATE $$externtemplate," \
      diff --git a/libstdc++-v3/include/Makefile.in b/libstdc++-v3/include/Makefile.in
      index 4e78aaa..ae1481f 100644
      --- a/libstdc++-v3/include/Makefile.in
      +++ b/libstdc++-v3/include/Makefile.in
      @@ -1669,6 +1669,7 @@ ${host_builddir}/c++config.h: ${CONFIG_HEADER} \
      stamp-cxx11-abi \
      stamp-allocator-new
      @date=`cat ${toplevel_srcdir}/gcc/DATESTAMP` ;\
      + release=`sed 's/^\([0-9]*\).*$$/\1/' ${toplevel_srcdir}/gcc/BASE-VER` ;\
      ns_version=`cat stamp-namespace-version` ;\
      visibility=`cat stamp-visibility` ;\
      externtemplate=`cat stamp-extern-template` ;\
      @@ -1680,6 +1681,7 @@ ${host_builddir}/c++config.h: ${CONFIG_HEADER} \
      ${CONFIG_HEADER} > /dev/null 2>&1 \
      && ldbl_compat='s,^#undef _GLIBCXX_LONG_DOUBLE_COMPAT$$,#define _GLIBCXX_LONG_DOUBLE_COMPAT 1,' ;\
      sed -e "s,define __GLIBCXX__,define __GLIBCXX__ $$date," \
      + -e "s,define _GLIBCXX_RELEASE,define _GLIBCXX_RELEASE $$release," \
      -e "s,define _GLIBCXX_INLINE_VERSION, define _GLIBCXX_INLINE_VERSION $$ns_version," \
      -e "s,define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY, define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY $$visibility," \
      -e "s,define _GLIBCXX_EXTERN_TEMPLATE$$, define _GLIBCXX_EXTERN_TEMPLATE $$externtemplate," \
      diff --git a/libstdc++-v3/include/bits/c++config b/libstdc++-v3/include/bits/c++config
      index 0cc1865..bc1ab5f 100644
      --- a/libstdc++-v3/include/bits/c++config
      +++ b/libstdc++-v3/include/bits/c++config
      @@ -30,7 +30,10 @@
      #ifndef _GLIBCXX_CXX_CONFIG_H
      #define _GLIBCXX_CXX_CONFIG_H 1

      -// The current version of the C++ library in compressed ISO date format.
      +// The major release number for the GCC release the C++ library belongs to.
      +#define _GLIBCXX_RELEASE
      +
      +// The datestamp of the C++ library in compressed ISO date format.
      #define __GLIBCXX__

      // Macros for various attributes.
      diff --git a/libstdc++-v3/testsuite/ext/profile/mutex_extensions_neg.cc b/libstdc++-v3/testsuite/ext/profile/mutex_extensions_neg.cc
      index 32a4e91..645aa24 100644
      --- a/libstdc++-v3/testsuite/ext/profile/mutex_extensions_neg.cc
      +++ b/libstdc++-v3/testsuite/ext/profile/mutex_extensions_neg.cc
      @@ -25,7 +25,7 @@

      #include

      -// { dg-error "multiple inlined namespaces" "" { target *-*-* } 350 }
      +// { dg-error "multiple inlined namespaces" "" { target *-*-* } 0 }

      // "template argument 1 is invalid"
      // { dg-prune-output "tuple:993" }

      118c14b PR78905 define _GLIBCXX_RELEASE macro
      libstdc++-v3/ChangeLog | 16 +-
      libstdc++-v3/doc/html/manual/abi.html | 78 ++++++----
      libstdc++-v3/doc/xml/manual/abi.xml | 165 ++++++++++++---------
      libstdc++-v3/include/Makefile.am | 2 +
      libstdc++-v3/include/Makefile.in | 2 +
      libstdc++-v3/include/bits/c++config | 5 +-
      .../testsuite/ext/profile/mutex_extensions_neg.cc | 2 +-
      7 files changed, 171 insertions(+), 99 deletions(-)

      Upstream: gcc.gnu.org


      • Share