#include "func.def.in"

#define ADD_UNDERSCORE(symbol) symbol == _ ## symbol
#define ADD_UNDERSCORE_DATA(symbol) symbol DATA == _ ## symbol
#define ADD_UNDERSCORE_DATA_DLL(symbol) symbol DATA == _ ## symbol ## _dll
#define ADD_DOUBLE_UNDERSCORE(symbol) symbol == __ ## symbol

; This is list of symbol aliases from the Visual C++ 1.0 oldnames.lib library
; FIXME: some of these symbol aliases are commented, check and document why
#ifdef UCRTBASE
; access is provided as an alias for __mingw_access
#else
ADD_UNDERSCORE(access)
#endif
#ifndef CRTAPP
; ADD_UNDERSCORE(cgets)
ADD_UNDERSCORE(chdir)
#endif
ADD_UNDERSCORE(chmod)
ADD_UNDERSCORE(chsize)
ADD_UNDERSCORE(close)
#ifndef CRTAPP
; ADD_UNDERSCORE(cprintf)
; ADD_UNDERSCORE(cputs)
#endif
ADD_UNDERSCORE(creat)
#ifndef CRTAPP
; ADD_UNDERSCORE(cscanf)
ADD_UNDERSCORE(cwait)
#endif
#if defined(UCRTBASE)
; daylight variable is provided by misc/ucrt_tzset.c
#elif defined(CRTDLL)
ADD_UNDERSCORE_DATA_DLL(daylight)
#else
ADD_UNDERSCORE_DATA(daylight)
#endif
ADD_UNDERSCORE(dup)
ADD_UNDERSCORE(dup2)
ADD_UNDERSCORE(ecvt)
#if defined(UCRTBASE)
; _environ variable is not available in ucrtbase.dll and there is no replacement for it
#elif defined(CRTDLL)
; ADD_UNDERSCORE_DATA_DLL(environ)
#else
; ADD_UNDERSCORE_DATA(environ)
#endif
ADD_UNDERSCORE(eof)
#ifndef CRTAPP
ADD_UNDERSCORE(execl)
ADD_UNDERSCORE(execle)
ADD_UNDERSCORE(execlp)
ADD_UNDERSCORE(execlpe)
ADD_UNDERSCORE(execv)
ADD_UNDERSCORE(execve)
ADD_UNDERSCORE(execvp)
ADD_UNDERSCORE(execvpe)
#endif
ADD_UNDERSCORE(fcloseall)
ADD_UNDERSCORE(fcvt)
ADD_UNDERSCORE(fdopen)
ADD_UNDERSCORE(fgetchar)
ADD_UNDERSCORE(filelength)
ADD_UNDERSCORE(fileno)
; ADD_UNDERSCORE(flushall)
ADD_UNDERSCORE(fputchar)
#if defined(UCRTBASE)
F32(fstat == _fstat32)
F64(fstat == _fstat64i32)
#else
; fstat for non-UCRT is provided by mingw to workaround S_IFDIR issue in _fstat
#endif
; ftime is provided in misc/ftime32.c or misc/ftime64.c as MS _ftime is not ABI compatible with POSIX ftime
#if defined(UCRTBASE)
; HUGE alias and _HUGE variable are provided by math/_huge.c
#elif defined(CRTDLL)
ADD_UNDERSCORE_DATA_DLL(HUGE)
#else
ADD_UNDERSCORE_DATA(HUGE)
#endif
ADD_UNDERSCORE(gcvt)
#ifndef CRTAPP
ADD_UNDERSCORE(getch)
ADD_UNDERSCORE(getche)
ADD_UNDERSCORE(getcwd)
#endif
#ifdef UCRTBASE
; ucrtbase.dll has got _getpid for all archs
ADD_UNDERSCORE(getpid)
#elif !defined(CRTAPP)
; msvcrt.dll for arm/arm64 lacks _getpid
F_X86_ANY(ADD_UNDERSCORE(getpid))
#endif
#ifndef CRTAPP
ADD_UNDERSCORE(getw)
#endif
ADD_UNDERSCORE(isatty)
ADD_UNDERSCORE(itoa)
#ifndef CRTAPP
ADD_UNDERSCORE(kbhit)
#endif
ADD_UNDERSCORE(lfind)
; ADD_UNDERSCORE(locking)
ADD_UNDERSCORE(lsearch)
ADD_UNDERSCORE(lseek)
ADD_UNDERSCORE(ltoa)
ADD_UNDERSCORE(memccpy)
ADD_UNDERSCORE(memicmp)
ADD_UNDERSCORE(mkdir)
ADD_UNDERSCORE(mktemp)
; onexit function alias is provided by misc/_onexit.c
ADD_UNDERSCORE(open)
#ifndef CRTAPP
ADD_UNDERSCORE(putch)
ADD_UNDERSCORE(putenv)
#endif
ADD_UNDERSCORE(putw)
ADD_UNDERSCORE(read)
ADD_UNDERSCORE(rmdir)
ADD_UNDERSCORE(rmtmp)
ADD_UNDERSCORE(setmode)
ADD_UNDERSCORE(sopen)
#ifndef CRTAPP
ADD_UNDERSCORE(spawnl)
ADD_UNDERSCORE(spawnle)
ADD_UNDERSCORE(spawnlp)
ADD_UNDERSCORE(spawnlpe)
ADD_UNDERSCORE(spawnv)
ADD_UNDERSCORE(spawnve)
ADD_UNDERSCORE(spawnvp)
ADD_UNDERSCORE(spawnvpe)
#endif
#ifdef UCRTBASE
F32(stat == _stat32)
F64(stat == _stat64i32)
#else
; stat for non-UCRT is provided by mingw to workaround trailing slash issue in _stat
#endif
#ifdef NO_STRCMPI_ALIAS
; Symbol _strcmpi is natively present and defined in the library def file
; So define strcmpi as an alias to _strcmpi
ADD_UNDERSCORE(strcmpi)
#else
; Symbol _strcmpi is not present in the library, it provides only _stricmp symbol
; So define strcmpi as an alias to _stricmp
strcmpi == _stricmp
#endif
ADD_UNDERSCORE(strdup)
ADD_UNDERSCORE(stricmp)
ADD_UNDERSCORE(strlwr)
ADD_UNDERSCORE(strnicmp)
ADD_UNDERSCORE(strnset)
ADD_UNDERSCORE(strrev)
ADD_UNDERSCORE(strset)
ADD_UNDERSCORE(strupr)
ADD_UNDERSCORE(swab)
#if defined(UCRTBASE)
; _sys_errlist variable is not available in ucrtbase.dll and there is no replacement for it
#else
// sys_errlist variable is without _dll suffix in crtdll.dll
; ADD_UNDERSCORE_DATA(sys_errlist)
#endif
#if defined(UCRTBASE)
; _sys_nerr variable is not available in ucrtbase.dll and there is no replacement for it
#elif defined(CRTDLL)
; ADD_UNDERSCORE_DATA_DLL(sys_nerr)
#else
; ADD_UNDERSCORE_DATA(sys_nerr)
#endif
ADD_UNDERSCORE(tell)
ADD_UNDERSCORE(tempnam)
#if defined(UCRTBASE)
; timezone variable is provided by misc/ucrt_tzset.c
#elif defined(CRTDLL)
ADD_UNDERSCORE_DATA_DLL(timezone)
#else
ADD_UNDERSCORE_DATA(timezone)
#endif
#if defined(UCRTBASE)
; tzname variable is provided by misc/ucrt_tzset.c
#else
// tzname variable is without _dll suffix in crtdll.dll
ADD_UNDERSCORE_DATA(tzname)
#endif
#if defined(UCRTBASE)
; tzset function is provided by misc/ucrt_tzset.c
#else
ADD_UNDERSCORE(tzset)
#endif
; ADD_UNDERSCORE(ultoa)
ADD_UNDERSCORE(umask)
#ifndef CRTAPP
ADD_UNDERSCORE(ungetch)
#endif
ADD_UNDERSCORE(unlink)
#ifdef FIXED_SIZE_SYMBOLS
ADD_UNDERSCORE(utime)
#else
F32(utime == _utime32)
F64(utime == _utime64)
#endif
ADD_UNDERSCORE(write)

; This is list of symbol aliases added in the Visual C++ 2.0 oldnames.lib library
; All these symbols with leading underscore are present also in pre-2.0 CRT versions: crtdll.dll and msvcrt10.dll
; ADD_UNDERSCORE(control87)
#if __SIZEOF_LONG_DOUBLE__ == __SIZEOF_DOUBLE__
ADD_UNDERSCORE(fpreset)
#else
; ADD_UNDERSCORE(fpreset) ; Alias fpreset is set in CRT_fp10.c and CRT_fp8.c
#endif
ADD_UNDERSCORE(wcsdup)
ADD_UNDERSCORE(wcsicmp)
ADD_UNDERSCORE(wcsicoll)
ADD_UNDERSCORE(wcslwr)
ADD_UNDERSCORE(wcsnicmp)
ADD_UNDERSCORE(wcsnset)
ADD_UNDERSCORE(wcsrev)
ADD_UNDERSCORE(wcsset)
ADD_UNDERSCORE(wcsupr)

; This is list of symbol aliases added in the Visual C++ 4.0 oldnames.lib library
; All these symbols with leading underscore are present also in pre-4.0 CRT versions: crtdll.dll, msvcrt10.dll and msvcrt20.dll
; ADD_UNDERSCORE(cabs)
#ifdef UCRTBASE
; hypot is natively exported from UCRT
#else
; hypot is provided by math/hypot.c as a wrapper around _hypot
#endif
ADD_UNDERSCORE(j0)
ADD_UNDERSCORE(j1)
ADD_UNDERSCORE(jn)
ADD_UNDERSCORE(y0)
ADD_UNDERSCORE(y1)
ADD_UNDERSCORE(yn)

; This is list of symbol aliases for C95 functions
#ifdef WITH_GET_PUT_WCHAR_ALIASES
getwc == fgetwc
getwchar == _fgetwchar
putwc == fputwc
putwchar == _fputwchar
#endif

; This is list of symbol aliases for C99 functions
#ifndef UCRTBASE
_Exit == _exit
#endif
; ADD_UNDERSCORE(logb)
#ifdef WITH_NEXTAFTER_ALIAS
ADD_UNDERSCORE(nextafter)
#endif

; This is list of symbol aliases for C99 ARM long double functions
; They are defined as aliases to regular double symbols as on ARM, long double is equal to regular double
F_LD64(acosl == acos)
F_LD64(asinl == asin)
F_LD64(atan2l == atan2)
F_LD64(atanl == atan)
F_LD64(ceill == ceil)
F_LD64(cosl == cos)
F_LD64(expl == exp)
F_LD64(floorl == floor)
F_LD64(fmodl == fmod)
F_LD64(log10l == log10)
F_LD64(logl == log)
; FIXME: Why is powl alias defined only for UCRT?
#ifdef UCRTBASE
F_LD64(powl == pow)
#endif
F_LD64(sinl == sin)
F_LD64(tanl == tan)
F_LD64(_chgsignl == _chgsign)

; This is list of symbol aliases for C11 functions
#ifdef UCRTBASE
F32(timespec_get == _timespec32_get)
F64(timespec_get == _timespec64_get)
#endif

; This is list of symbol aliases for POSIX functions
ADD_DOUBLE_UNDERSCORE(isascii)
ADD_DOUBLE_UNDERSCORE(toascii)
#ifndef CRTAPP
ADD_UNDERSCORE(pclose)
ADD_UNDERSCORE(popen)
#endif
fseeko == fseek
ftello == ftell
ftruncate == _chsize
; ADD_UNDERSCORE(scalb)

; This is list of symbol aliases for Large File Specification (extension to Single UNIX Specification)
; https://unix.org/version2/whatsnew/lfs20mar.html#3.1 section 3.1 Transitional Extensions
creat64 == _creat
open64 == _open
fopen64 == fopen
freopen64 == freopen
#ifndef NO_TMPFILE_ALIAS
tmpfile64 == tmpfile
#endif
#ifndef NO_FPOS64_ALIASES
; fgetpos and fsetpos are already 64-bit
fgetpos64 == fgetpos
fsetpos64 == fsetpos
lseek64 == _lseeki64
#endif
#ifdef UCRTBASE
fstat32 == _fstat32
fstat32i64 == _fstat32i64
fstat64 == _fstat64
fstat64i32 == _fstat64i32
stat32 == _stat32
stat32i64 == _stat32i64
stat64 == _stat64
stat64i32 == _stat64i32
#else
; fstat for non-UCRT is provided by mingw to workaround S_IFDIR issue in _fstat
; stat for non-UCRT is provided by mingw to workaround trailing slash issue in _stat
#endif
#ifdef FIXED_SIZE_SYMBOLS
#ifdef WITH_FSEEKO64_ALIAS
fseeko64 == _fseeki64
#endif
#else
fseeko64 == _fseeki64
ftello64 == _ftelli64
#endif

; This is list of symbol aliases for GNU functions which are not part of POSIX or ISO C
strcasecmp == _stricmp
strncasecmp == _strnicmp

; This is list of various symbol aliases which are needed for compatibility
; Some symbols in some version of CRT library were added and some other symbols were removed or renamed
; This list provides some level of backward and forward compatibility

#ifdef WITH_SETJMP3_ALIAS
; crtdll.dll and msvcrt10.dll have only old _setjmp function which does not take
; additional variadic arguments and uses smaller jmpbuf structure.
; mingw-w64 calls _setjmp3 only with zero additional arguments and because number
; of additional arguments is passed on the stack which is cleanup by the caller,
; it means that the mingw-w64 usage of _setjmp3 is ABI compatible with the old
; _setjmp function which is available also in crtdll.dll and msvcrt10.dll libs.
; It heavily depends on the mingw-w64-headers/crt/setjmp.h implementation.
; So this definition allows crtdll.dll and msvcrt10.dll applications to call
; setjmp() macro from setjmp.h, which expands to _setjmp3() function call and
; which is aliased to _setjmp symbol for crtdll.dll and msvcrt10.dll libraries.
F_I386(_setjmp3 == _setjmp)
#endif

#ifdef UCRTBASE
F_NON_ARM64(_setjmp == __intrinsic_setjmp)
F64(_setjmpex == __intrinsic_setjmpex)
#endif

#ifndef NO_STRCMPI_ALIAS
_strcmpi == _stricmp
#endif

#ifdef WITH_IOB_FUNC_ALIAS
__iob_func == __p__iob
#endif

#ifdef WITH_TZ_ALIASES
__daylight == __p__daylight
#ifndef NO_DSTBIAS
__dstbias == __p__dstbias
#endif
__timezone == __p__timezone
__tzname == __p__tzname
#endif

#ifdef WITH_ATOLL_ALIAS
atoll == _atoi64
_wtoll == _wtoi64
#endif

#ifdef WITH_ATOLL_L_ALIAS
_atoll_l == _atoi64_l
_wtoll_l == _wtoi64_l
#endif

#ifdef WITH_LLABS_ALIAS
llabs == _abs64
imaxabs == _abs64
#elif defined(WITH_IMAXABS_ALIAS)
imaxabs == llabs
#endif

#ifdef WITH_IMAXDIV_ALIAS
imaxdiv == lldiv
#endif

#ifdef WITH_STRTO64_ALIAS
strtoll == _strtoi64
strtoull == _strtoui64
strtoimax == _strtoi64
strtoumax == _strtoui64
wcstoll == _wcstoi64
wcstoull == _wcstoui64
wcstoimax == _wcstoi64
wcstoumax == _wcstoui64
#endif

#ifdef WITH_STRTO64_L_ALIAS
_strtoll_l == _strtoi64_l
_strtoull_l == _strtoui64_l
_strtoimax_l == _strtoi64_l
_strtoumax_l == _strtoui64_l
_wcstoll_l == _wcstoi64_l
_wcstoull_l == _wcstoui64_l
_wcstoimax_l == _wcstoi64_l
_wcstoumax_l == _wcstoui64_l
#endif

; This is list of find symbol aliases, every CRT library has either find symbols with SIZE suffix or without them
#ifdef FIXED_SIZE_SYMBOLS
F32(_findfirst32 == _findfirst)
F64(_findfirst64i32 == _findfirst)
#ifndef NO_I64_FIXED_SIZE
F32(_findfirst32i64 == _findfirsti64)
#ifndef NO_FIXED_SIZE_64_ALIAS
F64(_findfirst64 == _findfirsti64)
#endif
#endif
F32(_findnext32 == _findnext)
F64(_findnext64i32 == _findnext)
#ifndef NO_I64_FIXED_SIZE
F32(_findnext32i64 == _findnexti64)
#ifndef NO_FIXED_SIZE_64_ALIAS
F64(_findnext64 == _findnexti64)
#endif
#endif
#ifndef NO_WIDE_FIXED_SIZE
F32(_wfindfirst32 == _wfindfirst)
F64(_wfindfirst64i32 == _wfindfirst)
#ifndef NO_I64_FIXED_SIZE
F32(_wfindfirst32i64 == _wfindfirsti64)
#ifndef NO_FIXED_SIZE_64_ALIAS
F64(_wfindfirst64 == _wfindfirsti64)
#endif
#endif
F32(_wfindnext32 == _wfindnext)
F64(_wfindnext64i32 == _wfindnext)
#ifndef NO_I64_FIXED_SIZE
F32(_wfindnext32i64 == _wfindnexti64)
#ifndef NO_FIXED_SIZE_64_ALIAS
F64(_wfindnext64 == _wfindnexti64)
#endif
#endif
#endif
#else
F32(_findfirst == _findfirst32)
F64(_findfirst == _findfirst64i32)
F32(_findfirsti64 == _findfirst32i64)
F64(_findfirsti64 == _findfirst64)
F32(_findnext == _findnext32)
F64(_findnext == _findnext64i32)
F32(_findnexti64 == _findnext32i64)
F64(_findnexti64 == _findnext64)
F32(_wfindfirst == _wfindfirst32)
F64(_wfindfirst == _wfindfirst64i32)
F32(_wfindfirsti64 == _wfindfirst32i64)
F64(_wfindfirsti64 == _wfindfirst64)
F32(_wfindnext == _wfindnext32)
F64(_wfindnext == _wfindnext64i32)
F32(_wfindnexti64 == _wfindnext32i64)
F64(_wfindnexti64 == _wfindnext64)
#endif

; This is list of stat symbol aliases, every CRT library has either stat symbols with SIZE suffix or without them
#ifdef FIXED_SIZE_SYMBOLS
#ifndef CRTDLL
F32(_fstat32 == _fstat)
#endif
F64(_fstat64i32 == _fstat)
#ifndef NO_I64_FIXED_SIZE
F32(_fstat32i64 == _fstati64)
#ifndef NO_FIXED_SIZE_64_ALIAS
F64(_fstat64 == _fstati64)
#endif
#endif
#ifndef CRTDLL
F32(_stat32 == _stat)
#endif
F64(_stat64i32 == _stat)
#ifndef NO_I64_FIXED_SIZE
F32(_stat32i64 == _stati64)
#ifndef NO_FIXED_SIZE_64_ALIAS
F64(_stat64 == _stati64)
#endif
#endif
#ifndef NO_WIDE_FIXED_SIZE
F32(_wstat32 == _wstat)
F64(_wstat64i32 == _wstat)
#ifndef NO_I64_FIXED_SIZE
F32(_wstat32i64 == _wstati64)
#ifndef NO_FIXED_SIZE_64_ALIAS
F64(_wstat64 == _wstati64)
#endif
#endif
#endif
#else
F32(_fstat == _fstat32)
F64(_fstat == _fstat64i32)
F32(_fstati64 == _fstat32i64)
F64(_fstati64 == _fstat64)
F32(_stat == _stat32)
F64(_stat == _stat64i32)
F32(_stati64 == _stat32i64)
F64(_stati64 == _stat64)
F32(_wstat == _wstat32)
F64(_wstat == _wstat64i32)
F32(_wstati64 == _wstat32i64)
F64(_wstati64 == _wstat64)
#endif

; This is list of time symbol aliases, every CRT library except msvcrt.dll has either time symbols with SIZE suffix or without them
#ifndef NO_TIME_ALIAS
#ifdef FIXED_SIZE_SYMBOLS
F32(_ctime32 == ctime)
F64(_ctime64 == ctime)
F32(_difftime32 == difftime)
F64(_difftime64 == difftime)
F32(_ftime32 == _ftime)
F64(_ftime64 == _ftime)
F32(_futime32 == _futime)
F64(_futime64 == _futime)
F32(_gmtime32 == gmtime)
F64(_gmtime64 == gmtime)
F32(_localtime32 == localtime)
F64(_localtime64 == localtime)
; Skip _mkgmtime as it is present only in msvcrt.dll
F32(_mktime32 == mktime)
F64(_mktime64 == mktime)
F32(_time32 == time)
F64(_time64 == time)
F32(_utime32 == _utime)
F64(_utime64 == _utime)
#ifndef NO_WIDE_FIXED_SIZE
F32(_wctime32 == _wctime)
F64(_wctime64 == _wctime)
F32(_wutime32 == _wutime)
F64(_wutime64 == _wutime)
#endif
#else
F32(ctime == _ctime32)
F64(ctime == _ctime64)
F32(difftime == _difftime32)
F64(difftime == _difftime64)
F32(_ftime == _ftime32)
F64(_ftime == _ftime64)
F32(_futime == _futime32)
F64(_futime == _futime64)
F32(gmtime == _gmtime32)
F64(gmtime == _gmtime64)
F32(localtime == _localtime32)
F64(localtime == _localtime64)
F32(_mkgmtime == _mkgmtime32)
F64(_mkgmtime == _mkgmtime64)
F32(mktime == _mktime32)
F64(mktime == _mktime64)
F32(time == _time32)
F64(time == _time64)
F32(_utime == _utime32)
F64(_utime == _utime64)
F32(_wctime == _wctime32)
F64(_wctime == _wctime64)
F32(_wutime == _wutime32)
F64(_wutime == _wutime64)
#endif
#endif

; This is list of symbols which are present in msvcrt but not in UCRT
#ifdef UCRTBASE
__lconv_init == __initialize_lconv_for_unsigned_char
__set_app_type == _set_app_type
__p__daylight == __daylight
__p__dstbias == __dstbias
__p__timezone == __timezone
__p__tzname == __tzname
_XcptFilter == _seh_filter_exe
#endif

; This is list of printf/scanf symbol aliases with __ms_ prefix
#ifndef UCRTBASE
__ms_fprintf == fprintf
__ms_fscanf == fscanf
__ms_fwprintf == fwprintf
__ms_fwscanf == fwscanf
__ms_printf == printf
__ms_scanf == scanf
__ms_sprintf == sprintf
__ms_sscanf == sscanf
__ms_swscanf == swscanf
__ms_vfprintf == vfprintf
__ms_vfwprintf == vfwprintf
__ms_vprintf == vprintf
__ms_vsprintf == vsprintf
__ms_vwprintf == vwprintf
__ms_wprintf == wprintf
__ms_wscanf == wscanf
#endif

; This is list of additional symbol aliases not available in any library as neither native symbols nor aliases
; FIXME: check if these really are needed

; This is wstat and wstat64 symbol available only in mingw but for a long time
#ifdef UCRTBASE
F32(wstat == _wstat32)
F64(wstat == _wstat64i32)
wstat32 == _wstat32
wstat32i64 == _wstat32i64
wstat64 == _wstat64
wstat64i32 == _wstat64i32
#else
; wstat for non-UCRT is provided by mingw to workaround trailing slash issue in _wstat
#endif

; Origin of the symbol wcscmpi is unknown. This symbol is not present in
; crtdll.dll and neither in any msvcr* version. The only source of wcscmpi is
; wcstr.h header file from the Microsoft Visual C++ 1.0 (32-bit for NT) and
; Microsoft Windows NT 3.1 SDK where wcscmpi and _wcscmpi are defined as
; macros which expand to _wcsicmp. So the raw wcscmpi is not linkable symbol
; even in the old Visual C++ versions.
wcscmpi == _wcsicmp

; Origin of these symbols is unknown too.
ADD_UNDERSCORE(chgsign)
ADD_UNDERSCORE(fgetwchar)
ADD_UNDERSCORE(finite)
ADD_UNDERSCORE(fpclass)
ADD_UNDERSCORE(fputwchar)
#ifndef CRTAPP
ADD_UNDERSCORE(heapwalk)
#endif
ADD_DOUBLE_UNDERSCORE(iscsymf)
ADD_DOUBLE_UNDERSCORE(iscsym)
#ifndef CRTAPP
ADD_UNDERSCORE(searchenv)
#endif
ADD_UNDERSCORE(stricoll)
#ifndef UCRTBASE
ADD_UNDERSCORE(vsnprintf_s)
#endif
#ifndef CRTAPP
ADD_UNDERSCORE(wpopen)
#endif
