diff options
author | Jeff Johnston <jjohnstn@redhat.com> | 2004-09-09 19:46:54 +0000 |
---|---|---|
committer | Jeff Johnston <jjohnstn@redhat.com> | 2004-09-09 19:46:54 +0000 |
commit | 0c8593cf11a16ca75c72977a6f5e3983896940c4 (patch) | |
tree | 8133764892ae91831d48980ef216fc4935e45b5f /newlib/libc/stdlib/cxa_atexit.c | |
parent | 582dde69f31fb0dbe4beca5461b2b08924ae4e20 (diff) | |
download | newlib-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.c | 23 |
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); +} |