From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2181) id E5118383E82B; Thu, 11 Feb 2021 17:28:30 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org E5118383E82B MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" From: Jonathan Wakely To: gcc-cvs@gcc.gnu.org, libstdc++-cvs@gcc.gnu.org Subject: [gcc r11-7195] libstdc++: Fix versioned namespace build X-Act-Checkin: gcc X-Git-Author: Jonathan Wakely X-Git-Refname: refs/heads/master X-Git-Oldrev: ce43c906049b828c0472d8499b52ac6233c869d0 X-Git-Newrev: bc0f7db7ebb649fc4c290cb7327fba5c17d4ed28 Message-Id: <20210211172830.E5118383E82B@sourceware.org> Date: Thu, 11 Feb 2021 17:28:30 +0000 (GMT) X-BeenThere: libstdc++-cvs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libstdc++-cvs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 11 Feb 2021 17:28:31 -0000 https://gcc.gnu.org/g:bc0f7db7ebb649fc4c290cb7327fba5c17d4ed28 commit r11-7195-gbc0f7db7ebb649fc4c290cb7327fba5c17d4ed28 Author: Jonathan Wakely Date: Thu Feb 11 16:18:19 2021 +0000 libstdc++: Fix versioned namespace build The recent changes to define various std::exception_ptr functions inline included a change so that the definitions of those functions would be omitted for the ABI unstable gnu-versioned-namespace configuration. That change was incorrect, because the existing functions that are gated by the _GLIBCXX_EH_PTR_COMPAT macro are always needed even for the versioned namespace. This change introduces a new macro to control whether operator== is defined as deleted or not, distinct from the existing macro. The new macro is not defined for versioned namespace builds, but the old macro still is. libstdc++-v3/ChangeLog: * libsupc++/eh_ptr.cc (_GLIBCXX_EH_PTR_RELOPS_COMPAT): Define new macro. * libsupc++/exception_ptr.h (_GLIBCXX_EH_PTR_USED): Check new macro instead of _GLIBCXX_EH_PTR_COMPAT. (operator==): Likewise. Diff: --- libstdc++-v3/libsupc++/eh_ptr.cc | 10 +++++++--- libstdc++-v3/libsupc++/exception_ptr.h | 4 ++-- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/libstdc++-v3/libsupc++/eh_ptr.cc b/libstdc++-v3/libsupc++/eh_ptr.cc index 5d8ac1d879a..5c4685606fe 100644 --- a/libstdc++-v3/libsupc++/eh_ptr.cc +++ b/libstdc++-v3/libsupc++/eh_ptr.cc @@ -25,11 +25,15 @@ #include #include "eh_atomics.h" -#if ! _GLIBCXX_INLINE_VERSION // This macro causes exception_ptr to declare an older API (with corresponding -// definitions in this file) and to mark some inline functions as "used" so -// that definitions will be emitted in this translation unit. +// definitions in this file). #define _GLIBCXX_EH_PTR_COMPAT + +#if ! _GLIBCXX_INLINE_VERSION +// This macro causes some inline functions in exception_ptr to be marked +// as "used" so that definitions will be emitted in this translation unit. +// We need this because those functions were not inline in previous releases. +#define _GLIBCXX_EH_PTR_RELOPS_COMPAT #endif #include diff --git a/libstdc++-v3/libsupc++/exception_ptr.h b/libstdc++-v3/libsupc++/exception_ptr.h index 6d41b34fabe..9943668d9b3 100644 --- a/libstdc++-v3/libsupc++/exception_ptr.h +++ b/libstdc++-v3/libsupc++/exception_ptr.h @@ -39,7 +39,7 @@ #include #include -#ifdef _GLIBCXX_EH_PTR_COMPAT +#ifdef _GLIBCXX_EH_PTR_RELOPS_COMPAT # define _GLIBCXX_EH_PTR_USED __attribute__((__used__)) #else # define _GLIBCXX_EH_PTR_USED @@ -153,7 +153,7 @@ namespace std #endif #if __cpp_impl_three_way_comparison >= 201907L \ - && ! defined _GLIBCXX_EH_PTR_COMPAT + && ! defined _GLIBCXX_EH_PTR_RELOPS_COMPAT friend bool operator==(const exception_ptr&, const exception_ptr&) noexcept = default; #else