libgcc-std.ver (GCC_3.0): Add __terminate_func_set to list of EH symbols.
authorChris Demetriou <cgd@broadcom.com>
Wed, 24 Jan 2001 03:03:12 +0000 (03:03 +0000)
committerChris Demetriou <cgd@gcc.gnu.org>
Wed, 24 Jan 2001 03:03:12 +0000 (19:03 -0800)
2001-01-23  Chris Demetriou  <cgd@broadcom.com>

        * libgcc-std.ver (GCC_3.0): Add __terminate_func_set to list
        of EH symbols.
        * libgcc2.c (__terminate_func): Make variable static.
        (__terminate_set_func): New function to set __terminate_func.
        * libgcc2.h (__terminate_func_ptr): New typedef.
        (__terminate_set_func): New function.

From-SVN: r39224

gcc/ChangeLog
gcc/libgcc-std.ver
gcc/libgcc2.c
gcc/libgcc2.h

index a1ca492a17c63e831cd7fda5cb43cdf173cea167..04136c92a93bcc839298cdc298cfa56d41415dbc 100644 (file)
@@ -1,3 +1,12 @@
+2001-01-23  Chris Demetriou  <cgd@broadcom.com>
+
+       * libgcc-std.ver (GCC_3.0): Add __terminate_func_set to list
+       of EH symbols.
+       * libgcc2.c (__terminate_func): Make variable static.
+       (__terminate_set_func): New function to set __terminate_func.
+       * libgcc2.h (__terminate_func_ptr): New typedef.
+       (__terminate_set_func): New function.
+
 2001-01-23  Richard Henderson  <rth@redhat.com>
 
        * flow.c (init_propagate_block_info): Don't consider unchanging
index 9dc81fa4163f637e80bc28a9abf09e14e7feba56..87aac0dfaca4f35cb1eb483d9fb058191a0d0ba6 100644 (file)
@@ -132,6 +132,7 @@ GCC_3.0 {
   __sjpopnthrow
   __sjthrow
   __terminate
+  __terminate_set_func
   __throw
   __throw_type_match
   __unwinding_cleanup
index cf6822bb565aec2bea5aa5c838350857ae013fa4..5e5d7c013399d455cb77a6aa896821b1cdba6ab8 100644 (file)
@@ -3143,7 +3143,7 @@ __default_terminate (void)
   abort ();
 }
 
-void (*__terminate_func)(void) __attribute__ ((__noreturn__)) =
+static __terminate_func_ptr __terminate_func =
   __default_terminate;
 
 void __attribute__((__noreturn__))
@@ -3152,6 +3152,15 @@ __terminate (void)
   (*__terminate_func)();
 }
 
+__terminate_func_ptr
+__terminate_set_func (__terminate_func_ptr newfunc)
+{
+  __terminate_func_ptr oldfunc = __terminate_func;
+
+  __terminate_func = newfunc;
+  return (oldfunc);
+}
+
 void *
 __throw_type_match (void *catch_type, void *throw_type, void *obj)
 {
index a64eb8f223c4d0d9e63a7992b898ab3f770be968..c31a1462598da97c89bc73b6c2874dab94be52a0 100644 (file)
@@ -22,12 +22,15 @@ Boston, MA 02111-1307, USA.  */
 #ifndef __LIBGCC2_H__
 #define __LIBGCC2_H__
 
+typedef void (*__terminate_func_ptr)(void) __attribute__ ((__noreturn__));
+
 extern int __gcc_bcmp (const unsigned char *, const unsigned char *, size_t);
 extern void *__builtin_saveregs (void);
 extern void __dummy (void);
 extern void __clear_cache (char *, char *);
 extern void __pure_virtual (void) __attribute__ ((__noreturn__));
 extern void __terminate (void) __attribute__ ((__noreturn__));
+extern __terminate_func_ptr __terminate_set_func (__terminate_func_ptr);
 extern void __default_terminate (void) __attribute__ ((__noreturn__));
 extern void *__throw_type_match (void *, void *, void *);
 extern void __empty (void);