From 2eba43d0c1c78cf2d13b896bb9a608c482a585df Mon Sep 17 00:00:00 2001 From: guenther <> Date: Sat, 16 Dec 2017 20:06:56 +0000 Subject: Move __cxa_thread_atexit* to its own .c file to avoid pulling the code (w/ _dlctl reference) into static executables. It's all Mark's code so put his preferred copyright on it. ok kettenis@ --- src/lib/libc/stdlib/atexit.c | 39 +++------------------------------------ 1 file changed, 3 insertions(+), 36 deletions(-) (limited to 'src/lib/libc/stdlib/atexit.c') diff --git a/src/lib/libc/stdlib/atexit.c b/src/lib/libc/stdlib/atexit.c index fe4d5bc79f..ea9dd129c1 100644 --- a/src/lib/libc/stdlib/atexit.c +++ b/src/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 #include -#include -#include -#pragma weak _DYNAMIC #include #include +#include #include + #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) { -- cgit v1.2.3-55-g6feb