Move atexit(3) into crtbegin.c and certbeginS.c such that we can pass the
authorkettenis <kettenis@openbsd.org>
Sat, 28 Dec 2013 18:38:42 +0000 (18:38 +0000)
committerkettenis <kettenis@openbsd.org>
Sat, 28 Dec 2013 18:38:42 +0000 (18:38 +0000)
commit859c67c82abbbc6a47fd83e1b7b5305186273ffd
treed7b22f6c7c4434d4f249ef2ef2afcbdede54f8ef
parenta002a24b9f13f9d347ca751107babf38a5b1530b
Move atexit(3) into crtbegin.c and certbeginS.c such that we can pass the
right __dso_handle and have dlopen'ed shared objects run their atexit handlers
when they get unloaded.  This is what Linux does, and several ports depend on
this behaviour (and will crash upon exit without this chang).

Based on an earlier diff from matthew@
Tested by ajacoutot@
ok deraadt@
lib/csu/common_elf/crtbegin.c
lib/csu/common_elf/crtbeginS.c
lib/csu/crtbegin.c
lib/csu/crtbeginS.c
lib/libc/shlib_version
lib/libc/stdlib/atexit.c