summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libstdc++-v3/ChangeLog8
-rw-r--r--libstdc++-v3/libsupc++/Makefile.am1
-rw-r--r--libstdc++-v3/libsupc++/Makefile.in27
-rw-r--r--libstdc++-v3/libsupc++/atexit_arm.cc44
-rw-r--r--libstdc++-v3/libsupc++/cxxabi.h2
-rw-r--r--libstdc++-v3/libsupc++/vec.cc8
6 files changed, 68 insertions, 22 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 0f5b58b2afb..a1e6e306cdb 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,11 @@
+2007-05-04 Mark Mitchell <mark@codesourcery.com>
+
+ * libsupc++/atexit_arm.cc: New file.
+ * libsupc++/vec.cc (__aeabi_atexit): Remove.
+ * libsupc++/cxxabi.h (__cxa_atexit): Add exception specification.
+ * libsupc++/Makefile.am: Add atexit_arm.cc.
+ * libsupc++/Makefile.in: Regenerated.
+
2007-05-04 Paolo Carlini <pcarlini@suse.de>
* include/bits/stl_construct.h (_Destroy(_ForwardIterator,
diff --git a/libstdc++-v3/libsupc++/Makefile.am b/libstdc++-v3/libsupc++/Makefile.am
index a30115e8713..7bc48b7c9b4 100644
--- a/libstdc++-v3/libsupc++/Makefile.am
+++ b/libstdc++-v3/libsupc++/Makefile.am
@@ -42,6 +42,7 @@ endif
sources = \
array_type_info.cc \
+ atexit_arm.cc \
bad_cast.cc \
bad_typeid.cc \
class_type_info.cc \
diff --git a/libstdc++-v3/libsupc++/Makefile.in b/libstdc++-v3/libsupc++/Makefile.in
index 8a27bec7a4f..68631271403 100644
--- a/libstdc++-v3/libsupc++/Makefile.in
+++ b/libstdc++-v3/libsupc++/Makefile.in
@@ -69,21 +69,21 @@ am__installdirs = "$(DESTDIR)$(toolexeclibdir)" \
toolexeclibLTLIBRARIES_INSTALL = $(INSTALL)
LTLIBRARIES = $(noinst_LTLIBRARIES) $(toolexeclib_LTLIBRARIES)
libsupc___la_LIBADD =
-am__libsupc___la_SOURCES_DIST = array_type_info.cc bad_cast.cc \
- bad_typeid.cc class_type_info.cc del_op.cc del_opnt.cc \
- del_opv.cc del_opvnt.cc dyncast.cc eh_alloc.cc eh_arm.cc \
- eh_aux_runtime.cc eh_call.cc eh_catch.cc eh_exception.cc \
- eh_globals.cc eh_personality.cc eh_term_handler.cc \
- eh_terminate.cc eh_throw.cc eh_type.cc eh_unex_handler.cc \
- enum_type_info.cc function_type_info.cc \
+am__libsupc___la_SOURCES_DIST = array_type_info.cc atexit_arm.cc \
+ bad_cast.cc bad_typeid.cc class_type_info.cc del_op.cc \
+ del_opnt.cc del_opv.cc del_opvnt.cc dyncast.cc eh_alloc.cc \
+ eh_arm.cc eh_aux_runtime.cc eh_call.cc eh_catch.cc \
+ eh_exception.cc eh_globals.cc eh_personality.cc \
+ eh_term_handler.cc eh_terminate.cc eh_throw.cc eh_type.cc \
+ eh_unex_handler.cc enum_type_info.cc function_type_info.cc \
fundamental_type_info.cc guard.cc new_handler.cc new_op.cc \
new_opnt.cc new_opv.cc new_opvnt.cc pbase_type_info.cc \
pmem_type_info.cc pointer_type_info.cc pure.cc \
si_class_type_info.cc tinfo.cc tinfo2.cc vec.cc \
vmi_class_type_info.cc vterminate.cc cp-demangle.c
-am__objects_1 = array_type_info.lo bad_cast.lo bad_typeid.lo \
- class_type_info.lo del_op.lo del_opnt.lo del_opv.lo \
- del_opvnt.lo dyncast.lo eh_alloc.lo eh_arm.lo \
+am__objects_1 = array_type_info.lo atexit_arm.lo bad_cast.lo \
+ bad_typeid.lo class_type_info.lo del_op.lo del_opnt.lo \
+ del_opv.lo del_opvnt.lo dyncast.lo eh_alloc.lo eh_arm.lo \
eh_aux_runtime.lo eh_call.lo eh_catch.lo eh_exception.lo \
eh_globals.lo eh_personality.lo eh_term_handler.lo \
eh_terminate.lo eh_throw.lo eh_type.lo eh_unex_handler.lo \
@@ -98,9 +98,9 @@ am_libsupc___la_OBJECTS = $(am__objects_1) $(am__objects_2)
libsupc___la_OBJECTS = $(am_libsupc___la_OBJECTS)
libsupc__convenience_la_LIBADD =
am__libsupc__convenience_la_SOURCES_DIST = array_type_info.cc \
- bad_cast.cc bad_typeid.cc class_type_info.cc del_op.cc \
- del_opnt.cc del_opv.cc del_opvnt.cc dyncast.cc eh_alloc.cc \
- eh_arm.cc eh_aux_runtime.cc eh_call.cc eh_catch.cc \
+ atexit_arm.cc bad_cast.cc bad_typeid.cc class_type_info.cc \
+ del_op.cc del_opnt.cc del_opv.cc del_opvnt.cc dyncast.cc \
+ eh_alloc.cc eh_arm.cc eh_aux_runtime.cc eh_call.cc eh_catch.cc \
eh_exception.cc eh_globals.cc eh_personality.cc \
eh_term_handler.cc eh_terminate.cc eh_throw.cc eh_type.cc \
eh_unex_handler.cc enum_type_info.cc function_type_info.cc \
@@ -342,6 +342,7 @@ headers = \
sources = \
array_type_info.cc \
+ atexit_arm.cc \
bad_cast.cc \
bad_typeid.cc \
class_type_info.cc \
diff --git a/libstdc++-v3/libsupc++/atexit_arm.cc b/libstdc++-v3/libsupc++/atexit_arm.cc
new file mode 100644
index 00000000000..fe2143b42b1
--- /dev/null
+++ b/libstdc++-v3/libsupc++/atexit_arm.cc
@@ -0,0 +1,44 @@
+// Copyright (C) 2007 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 2, 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.
+
+// You should have received a copy of the GNU General Public License
+// along with GCC; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301, USA.
+
+// As a special exception, you may use this file as part of a free software
+// library without restriction. Specifically, if other files instantiate
+// templates or use macros or inline functions from this file, or you compile
+// this file and link it with other files to produce an executable, this
+// file does not by itself cause the resulting executable to be covered by
+// the GNU General Public License. This exception does not however
+// invalidate any other reasons why the executable file might be covered by
+// the GNU General Public License.
+
+#include <cxxabi.h>
+
+#if defined(__arm__) && defined(__ARM_EABI__)
+
+namespace __aeabiv1
+{
+ extern "C" int
+ __aeabi_atexit (void *object,
+ void (*destructor) (void *),
+ void *dso_handle) throw ()
+ {
+ return abi::__cxa_atexit(destructor, object, dso_handle);
+ }
+} // namespace __aeabiv1
+
+#endif // defined(__arm__) && defined(__ARM_EABI__)
diff --git a/libstdc++-v3/libsupc++/cxxabi.h b/libstdc++-v3/libsupc++/cxxabi.h
index c0418d82588..fb082d32ac2 100644
--- a/libstdc++-v3/libsupc++/cxxabi.h
+++ b/libstdc++-v3/libsupc++/cxxabi.h
@@ -136,7 +136,7 @@ namespace __cxxabiv1
// DSO destruction.
int
- __cxa_atexit(void (*)(void*), void*, void*);
+ __cxa_atexit(void (*)(void*), void*, void*) throw ();
int
__cxa_finalize(void*);
diff --git a/libstdc++-v3/libsupc++/vec.cc b/libstdc++-v3/libsupc++/vec.cc
index 08a710718b0..67caec86627 100644
--- a/libstdc++-v3/libsupc++/vec.cc
+++ b/libstdc++-v3/libsupc++/vec.cc
@@ -499,14 +499,6 @@ namespace __aeabiv1
2 * sizeof (std::size_t),
/*destructor=*/NULL, dealloc);
}
-
- extern "C" int
- __aeabi_atexit (void *object,
- void (*destructor) (void *),
- void *dso_handle)
- {
- return abi::__cxa_atexit(destructor, object, dso_handle);
- }
} // namespace __aeabiv1
#endif // defined(__arm__) && defined(__ARM_EABI__)
OpenPOWER on IntegriCloud