mirrored from git://gcc.gnu.org/git/gcc.git
-
Notifications
You must be signed in to change notification settings - Fork 4.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
libstdc++/68297 avoid throw/catch in make_exception_ptr
2016-08-22 Gleb Natapov <gleb@scylladb.com> PR libstdc++/68297 * config/abi/pre/gnu-versioned-namespace.ver: Export __cxa_init_primary_exception and std::exception_ptr(void*). * config/abi/pre/gnu.ver (CXXABI_1.3.11) : Add new symbol version and export __cxa_init_primary_exception and std::exception_ptr(void*). * include/Makefile.am: Add new headers. * include/Makefile.in: Regenerate. * libsupc++/Makefile.am: Add new headers. * libsupc++/Makefile.in: Regenerate. * libsupc++/cxxabi.h (__cxa_allocate_exception): Move to ... * libsupc++/cxxabi_init_exception.h: New header. (__cxa_init_primary_exception): Declare. * libsupc++/eh_throw.cc (__cxa_init_primary_exception): Define. (__cxa_throw): Use __cxa_init_primary_exception. * libsupc++/exception (std::exception): Move to ... * libsupc++/exception.h: New header. * libsupc++/exception_ptr.h (__exception_ptr::exception_ptr): Add friend declaration. (__exception_ptr::__dest_thunk): New function template. (std::make_exception_ptr) [__cpp_rtti && !_GLIBCXX_HAVE_CDTOR_CALLABI]: Use __cxa_allocate_exception and __cxa_init_primary_exception to create exception_ptr. * libsupc++/typeinfo: Include bits/exception.h instead of exception. * testsuite/util/testsuite_abi.cc: Add CXXABI_1.3.11 version. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@239664 138bc75d-0d04-0410-961f-82ee72b054a4
- Loading branch information
redi
committed
Aug 22, 2016
1 parent
d5570e8
commit cce8e59
Showing
15 changed files
with
243 additions
and
51 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,77 @@ | ||
// ABI Support -*- C++ -*- | ||
|
||
// Copyright (C) 2016 Free Software Foundation, Inc. | ||
// | ||
// This file is part of GCC. | ||
// | ||
// GCC is free software; you can redistribute it and/or modify | ||
// it under the terms of the GNU General Public License as published by | ||
// the Free Software Foundation; either version 3, or (at your option) | ||
// any later version. | ||
// | ||
// GCC is distributed in the hope that it will be useful, | ||
// but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
// GNU General Public License for more details. | ||
// | ||
// Under Section 7 of GPL version 3, you are granted additional | ||
// permissions described in the GCC Runtime Library Exception, version | ||
// 3.1, as published by the Free Software Foundation. | ||
|
||
// You should have received a copy of the GNU General Public License and | ||
// a copy of the GCC Runtime Library Exception along with this program; | ||
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | ||
// <http://www.gnu.org/licenses/>. | ||
|
||
/** @file bits/cxxabi_init_exception.h | ||
* This is an internal header file, included by other library headers. | ||
* Do not attempt to use it directly. | ||
*/ | ||
|
||
#ifndef _CXXABI_INIT_EXCEPTION_H | ||
#define _CXXABI_INIT_EXCEPTION_H 1 | ||
|
||
#pragma GCC system_header | ||
|
||
#pragma GCC visibility push(default) | ||
|
||
#include <stddef.h> | ||
#include <bits/c++config.h> | ||
|
||
#ifndef _GLIBCXX_CDTOR_CALLABI | ||
#define _GLIBCXX_CDTOR_CALLABI | ||
#define _GLIBCXX_HAVE_CDTOR_CALLABI 0 | ||
#else | ||
#define _GLIBCXX_HAVE_CDTOR_CALLABI 1 | ||
#endif | ||
|
||
#ifdef __cplusplus | ||
|
||
namespace std | ||
{ | ||
class type_info; | ||
} | ||
|
||
namespace __cxxabiv1 | ||
{ | ||
struct __cxa_refcounted_exception; | ||
|
||
extern "C" | ||
{ | ||
// Allocate memory for the primary exception plus the thrown object. | ||
void* | ||
__cxa_allocate_exception(size_t) _GLIBCXX_NOTHROW; | ||
|
||
// Initialize exception (this is a GNU extension) | ||
__cxa_refcounted_exception* | ||
__cxa_init_primary_exception(void *object, std::type_info *tinfo, | ||
void (_GLIBCXX_CDTOR_CALLABI *dest) (void *)) _GLIBCXX_NOTHROW; | ||
|
||
} | ||
} // namespace __cxxabiv1 | ||
|
||
#endif | ||
|
||
#pragma GCC visibility pop | ||
|
||
#endif // _CXXABI_INIT_EXCEPTION_H |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
// Exception Handling support header for -*- C++ -*- | ||
|
||
// Copyright (C) 2016 Free Software Foundation, Inc. | ||
// | ||
// This file is part of GCC. | ||
// | ||
// GCC is free software; you can redistribute it and/or modify | ||
// it under the terms of the GNU General Public License as published by | ||
// the Free Software Foundation; either version 3, or (at your option) | ||
// any later version. | ||
// | ||
// GCC is distributed in the hope that it will be useful, | ||
// but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
// GNU General Public License for more details. | ||
// | ||
// Under Section 7 of GPL version 3, you are granted additional | ||
// permissions described in the GCC Runtime Library Exception, version | ||
// 3.1, as published by the Free Software Foundation. | ||
|
||
// You should have received a copy of the GNU General Public License and | ||
// a copy of the GCC Runtime Library Exception along with this program; | ||
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | ||
// <http://www.gnu.org/licenses/>. | ||
|
||
/** @file bits/exception.h | ||
* This is an internal header file, included by other library headers. | ||
* Do not attempt to use it directly. | ||
*/ | ||
|
||
#ifndef __EXCEPTION_H | ||
#define __EXCEPTION_H 1 | ||
|
||
#pragma GCC system_header | ||
|
||
#pragma GCC visibility push(default) | ||
|
||
#include <bits/c++config.h> | ||
|
||
extern "C++" { | ||
|
||
namespace std | ||
{ | ||
/** | ||
* @defgroup exceptions Exceptions | ||
* @ingroup diagnostics | ||
* | ||
* Classes and functions for reporting errors via exception classes. | ||
* @{ | ||
*/ | ||
|
||
/** | ||
* @brief Base class for all library exceptions. | ||
* | ||
* This is the base class for all exceptions thrown by the standard | ||
* library, and by certain language expressions. You are free to derive | ||
* your own %exception classes, or use a different hierarchy, or to | ||
* throw non-class data (e.g., fundamental types). | ||
*/ | ||
class exception | ||
{ | ||
public: | ||
exception() _GLIBCXX_USE_NOEXCEPT { } | ||
virtual ~exception() _GLIBCXX_TXN_SAFE_DYN _GLIBCXX_USE_NOEXCEPT; | ||
|
||
/** Returns a C-style character string describing the general cause | ||
* of the current error. */ | ||
virtual const char* | ||
what() const _GLIBCXX_TXN_SAFE_DYN _GLIBCXX_USE_NOEXCEPT; | ||
}; | ||
|
||
} // namespace std | ||
|
||
} | ||
|
||
#pragma GCC visibility pop | ||
|
||
#endif |
Oops, something went wrong.