aboutsummaryrefslogtreecommitdiff
path: root/newlib/libc/stdlib/cxa_atexit.c
diff options
context:
space:
mode:
authorJeff Johnston <jjohnstn@redhat.com>2004-09-09 19:46:54 +0000
committerJeff Johnston <jjohnstn@redhat.com>2004-09-09 19:46:54 +0000
commit0c8593cf11a16ca75c72977a6f5e3983896940c4 (patch)
tree8133764892ae91831d48980ef216fc4935e45b5f /newlib/libc/stdlib/cxa_atexit.c
parent582dde69f31fb0dbe4beca5461b2b08924ae4e20 (diff)
downloadnewlib-0c8593cf11a16ca75c72977a6f5e3983896940c4.zip
newlib-0c8593cf11a16ca75c72977a6f5e3983896940c4.tar.gz
newlib-0c8593cf11a16ca75c72977a6f5e3983896940c4.tar.bz2
2004-09-09 Paul Brook <paul@codesourcery.com>
* libc/include/sys/reent.h (struct _on_exit_args): Add _dso_handle and _is_cxa. (struct _atexit): Add _next when _REENT_SMALL. (struct _reent): Add _atexit0 when _REENT_SMALL. (_REENT_INIT_PTR): Adjust. * libc/stdlib/Makefile.am (GENERAL_SOURCES): Add __atexit.c and __call_exit.c. (EXTENDED_SOURCES): Add cxa_atexit.c and cxa_finalize.c. * libc/stdlib/Makefile.in: Regenerate. * libc/stdlib/__atexit.c: New file. * libc/stdlib/__call_atexit.c: New file. * libc/stdlib/atexit.h: Remove old definitions. Add new. * libc/stdlib/atexit.c (atexit): Use __register_exitproc. * libc/stdlib/cxa_atexit.c: New file. * libc/stdlib/cxa_finalize.c: New file. * libc/stdlib/exit.c (exit): Use __call_exitprocs. * libc/stdlib/on_exit.c (on_exit): Use __register_exitproc. 2004-09-09 Jeff Johnston <jjohnstn@redhat.com> * libc/reent/reent.c [_REENT_SMALL]: Fix reference to _on_exit_args_ptr.
Diffstat (limited to 'newlib/libc/stdlib/cxa_atexit.c')
-rw-r--r--newlib/libc/stdlib/cxa_atexit.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/newlib/libc/stdlib/cxa_atexit.c b/newlib/libc/stdlib/cxa_atexit.c
new file mode 100644
index 0000000..8c39236
--- /dev/null
+++ b/newlib/libc/stdlib/cxa_atexit.c
@@ -0,0 +1,23 @@
+/*
+ * Implementation of __cxa_atexit.
+ */
+
+#include <stddef.h>
+#include <stdlib.h>
+#include <reent.h>
+#include <sys/lock.h>
+#include "atexit.h"
+
+/*
+ * Register a function to be performed at exit or DSO unload.
+ */
+
+int
+_DEFUN (__cxa_atexit,
+ (fn, arg, d),
+ void (*fn) (void *) _AND
+ void *arg _AND
+ void *d)
+{
+ return __register_exitproc (__et_cxa, (void (*)(void)) fn, arg, d);
+}