[VCSTARTUP] Implement atexit and _onexit

These must use a local table and cannot use the one from ucrtbase.
The table is initialized with a .CRT section initializer.
This commit is contained in:
Timo Kreuzer 2025-02-09 12:46:03 +02:00
parent fce48c3014
commit f81c82f5fa
4 changed files with 55 additions and 0 deletions

View file

@ -0,0 +1,18 @@
//
// atexit.c
//
// Copyright (c) 2024 Timo Kreuzer
//
// Implementation of atexit.
//
// SPDX-License-Identifier: MIT
//
#include <stdlib.h>
int __cdecl atexit(void (__cdecl* _Func)(void))
{
// Go through _onexit, so that the initializer is pulled in.
_onexit_t result = _onexit((_onexit_t)_Func);
return (result == NULL) ? -1 : 0;
}