diff options
Diffstat (limited to 'lib/libc/stdlib/atexit.c')
-rw-r--r-- | lib/libc/stdlib/atexit.c | 39 |
1 files changed, 3 insertions, 36 deletions
diff --git a/lib/libc/stdlib/atexit.c b/lib/libc/stdlib/atexit.c index fe4d5bc79f2..ea9dd129c1f 100644 --- a/lib/libc/stdlib/atexit.c +++ b/lib/libc/stdlib/atexit.c @@ -1,4 +1,4 @@ -/* $OpenBSD: atexit.c,v 1.26 2017/12/05 21:11:10 kettenis Exp $ */ +/* $OpenBSD: atexit.c,v 1.27 2017/12/16 20:06:56 guenther Exp $ */ /* * Copyright (c) 2002 Daniel Hartmeier * All rights reserved. @@ -31,24 +31,14 @@ #include <sys/types.h> #include <sys/mman.h> -#include <dlfcn.h> -#include <elf.h> -#pragma weak _DYNAMIC #include <stdlib.h> #include <string.h> +#include <tib.h> #include <unistd.h> + #include "atexit.h" #include "atfork.h" #include "thread_private.h" -#include "tib.h" - -typeof(dlctl) dlctl asm("_dlctl") __attribute__((weak)); - -struct thread_atexit_fn { - void (*func)(void *); - void *arg; - struct thread_atexit_fn *next; -}; struct atexit *__atexit; static int restartloop; @@ -133,29 +123,6 @@ atexit(void (*fn)(void)) } DEF_STRONG(atexit); -__weak_alias(__cxa_thread_atexit, __cxa_thread_atexit_impl); - -int -__cxa_thread_atexit_impl(void (*func)(void *), void *arg, void *dso) -{ - struct thread_atexit_fn *fnp; - struct tib *tib = TIB_GET(); - - fnp = calloc(1, sizeof(struct thread_atexit_fn)); - if (fnp == NULL) - return -1; - - if (_DYNAMIC) - dlctl(NULL, DL_REFERENCE, dso); - - fnp->func = func; - fnp->arg = arg; - fnp->next = tib->tib_atexit; - tib->tib_atexit = fnp; - - return 0; -} - void _thread_finalize(void) { |