summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/lib/atexit.c
diff options
context:
space:
mode:
Diffstat (limited to 'winsup/cygwin/lib/atexit.c')
-rw-r--r--winsup/cygwin/lib/atexit.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/winsup/cygwin/lib/atexit.c b/winsup/cygwin/lib/atexit.c
new file mode 100644
index 000000000..0b724771a
--- /dev/null
+++ b/winsup/cygwin/lib/atexit.c
@@ -0,0 +1,23 @@
+/* atexit.c: atexit entry point
+
+ Copyright 2014 Red Hat, Inc.
+
+This file is part of Cygwin.
+
+This software is a copyrighted work licensed under the terms of the
+Cygwin license. Please consult the file "CYGWIN_LICENSE" for
+details. */
+
+#include <stddef.h>
+
+/* Statically linked replacement for the former cygwin_atexit. We need
+ the function here to be able to access the correct __dso_handle of the
+ caller's DSO. */
+int
+atexit (void (*fn) (void))
+{
+ extern int __cxa_atexit(void (*)(void*), void*, void*);
+ extern void *__dso_handle;
+
+ return __cxa_atexit ((void (*)(void*))fn, NULL, &__dso_handle);
+}