diff options
author | Chris Demetriou <cgd@broadcom.com> | 2001-01-24 03:04:04 +0000 |
---|---|---|
committer | Chris Demetriou <cgd@gcc.gnu.org> | 2001-01-23 19:04:04 -0800 |
commit | 93982b798a0be88625f6d46a27714e9afbbb7f42 (patch) | |
tree | 67e06b15334f9373215f31b281ad21e75e71f9d9 | |
parent | 8a1894ac7ba96fb629e676300ca2a870ddfc6dba (diff) | |
download | gcc-93982b798a0be88625f6d46a27714e9afbbb7f42.zip gcc-93982b798a0be88625f6d46a27714e9afbbb7f42.tar.gz gcc-93982b798a0be88625f6d46a27714e9afbbb7f42.tar.bz2 |
exception.cc (__terminate_func): Remove declaration.
2001-01-23 Chris Demetriou <cgd@broadcom.com>
* exception.cc (__terminate_func): Remove declaration.
(__terminate_func_ptr): New typedef.
(__terminate, __terminate_set_func): New extern function
prototypes.
(std::terminate): Use __terminate function.
(std::set_terminate): Use __terminate_set_func function.
From-SVN: r39225
-rw-r--r-- | libstdc++/ChangeLog | 9 | ||||
-rw-r--r-- | libstdc++/exception.cc | 13 |
2 files changed, 16 insertions, 6 deletions
diff --git a/libstdc++/ChangeLog b/libstdc++/ChangeLog index 1323c65..9fc67ea 100644 --- a/libstdc++/ChangeLog +++ b/libstdc++/ChangeLog @@ -1,3 +1,12 @@ +2001-01-23 Chris Demetriou <cgd@broadcom.com> + + * exception.cc (__terminate_func): Remove declaration. + (__terminate_func_ptr): New typedef. + (__terminate, __terminate_set_func): New extern function + prototypes. + (std::terminate): Use __terminate function. + (std::set_terminate): Use __terminate_set_func function. + 2000-11-24 Magnus Fromreide <magfr@lysator.liu.se> * sstream: Backport libstdc++-V3 sstream to V2. diff --git a/libstdc++/exception.cc b/libstdc++/exception.cc index 886915c..c27b8ff 100644 --- a/libstdc++/exception.cc +++ b/libstdc++/exception.cc @@ -38,13 +38,17 @@ /* Define terminate, unexpected, set_terminate, set_unexpected as well as the default terminate func and default unexpected func. */ -extern std::terminate_handler __terminate_func __attribute__((__noreturn__)); +/* __terminate and __terminate_set_func, defined in libgcc2. */ +typedef void (*__terminate_func_ptr)(void) __attribute__ ((__noreturn__)); +extern "C" void __terminate (void) __attribute__ ((__noreturn__)); +extern "C" __terminate_func_ptr __terminate_set_func (__terminate_func_ptr); + using std::terminate; void std::terminate () { - __terminate_func (); + __terminate (); } void @@ -59,10 +63,7 @@ static std::unexpected_handler __unexpected_func __attribute__((__noreturn__)) std::terminate_handler std::set_terminate (std::terminate_handler func) { - std::terminate_handler old = __terminate_func; - - __terminate_func = func; - return old; + return __terminate_set_func (func); } std::unexpected_handler |