[gcc r12-4367] libstdc++: Ensure language linkage of std::__terminate()

Jonathan Wakely redi@gcc.gnu.org
Wed Oct 13 09:42:57 GMT 2021


https://gcc.gnu.org/g:c1b6c360fcf3fc1c0045c7358d61a83c91b6fa25

commit r12-4367-gc1b6c360fcf3fc1c0045c7358d61a83c91b6fa25
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Wed Oct 13 10:35:44 2021 +0100

    libstdc++: Ensure language linkage of std::__terminate()
    
    This is needed because people still find it necessary to do:
    
      extern "C" {
      #include <stdlib.h>
      }
    
    libstdc++-v3/ChangeLog:
    
            * include/bits/c++config (__terminate): Add extern "C++".

Diff:
---
 libstdc++-v3/include/bits/c++config | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libstdc++-v3/include/bits/c++config b/libstdc++-v3/include/bits/c++config
index b76ffeb2562..a6495809671 100644
--- a/libstdc++-v3/include/bits/c++config
+++ b/libstdc++-v3/include/bits/c++config
@@ -296,7 +296,7 @@ namespace std
 
   // This allows the library to terminate without including all of <exception>
   // and without making the declaration of std::terminate visible to users.
-  __attribute__ ((__noreturn__, __always_inline__))
+  extern "C++" __attribute__ ((__noreturn__, __always_inline__))
   inline void __terminate() _GLIBCXX_USE_NOEXCEPT
   {
     void terminate() _GLIBCXX_USE_NOEXCEPT __attribute__ ((__noreturn__));


More information about the Libstdc++-cvs mailing list