| author | |
| committer | |
| log | 45fff0a511942d410d657be31bdbdf10a45a6a57 |
| tree | 277042798290805bf9382fe75ca6ad61ece36767 |
| parent | 87083e8e7e440548599b88eb9ce02e4914a72809 |
| signature |
141 files changed, 12936 insertions(+), 3982 deletions(-)
lib/libc/mingw/crt/crtdll.c+2| ... | @@ -204,6 +204,8 @@ i__leave: | ... | @@ -204,6 +204,8 @@ i__leave: |
| 204 | 204 | ||
| 205 | int __cdecl atexit (_PVFV func) | 205 | int __cdecl atexit (_PVFV func) |
| 206 | { | 206 | { |
| 207 | /* Do not use msvcrt's atexit() or UCRT's _crt_atexit() function as it | ||
| 208 | * cannot be called from DLL library which may be unloaded at runtime. */ | ||
| 207 | return _register_onexit_function(&atexit_table, (_onexit_t)func); | 209 | return _register_onexit_function(&atexit_table, (_onexit_t)func); |
| 208 | } | 210 | } |
| 209 | 211 |
lib/libc/mingw/crt/crtexe.c+8-11| ... | @@ -20,21 +20,12 @@ | ... | @@ -20,21 +20,12 @@ |
| 20 | #include <tchar.h> | 20 | #include <tchar.h> |
| 21 | #include <sect_attribs.h> | 21 | #include <sect_attribs.h> |
| 22 | #include <locale.h> | 22 | #include <locale.h> |
| 23 | #include <corecrt_startup.h> | ||
| 23 | 24 | ||
| 24 | #if defined(__SEH__) && (!defined(__clang__) || __clang_major__ >= 7) | 25 | #if defined(__SEH__) && (!defined(__clang__) || __clang_major__ >= 7) |
| 25 | #define SEH_INLINE_ASM | 26 | #define SEH_INLINE_ASM |
| 26 | #endif | 27 | #endif |
| 27 | 28 | ||
| 28 | #ifndef __winitenv | ||
| 29 | extern wchar_t *** __MINGW_IMP_SYMBOL(__winitenv); | ||
| 30 | #define __winitenv (* __MINGW_IMP_SYMBOL(__winitenv)) | ||
| 31 | #endif | ||
| 32 | |||
| 33 | #if !defined(__initenv) | ||
| 34 | extern char *** __MINGW_IMP_SYMBOL(__initenv); | ||
| 35 | #define __initenv (* __MINGW_IMP_SYMBOL(__initenv)) | ||
| 36 | #endif | ||
| 37 | |||
| 38 | extern IMAGE_DOS_HEADER __ImageBase; | 29 | extern IMAGE_DOS_HEADER __ImageBase; |
| 39 | 30 | ||
| 40 | extern void _fpreset (void); | 31 | extern void _fpreset (void); |
| ... | @@ -43,6 +34,7 @@ int *__cdecl __p__commode(void); | ... | @@ -43,6 +34,7 @@ int *__cdecl __p__commode(void); |
| 43 | 34 | ||
| 44 | #undef _fmode | 35 | #undef _fmode |
| 45 | extern int _fmode; | 36 | extern int _fmode; |
| 37 | #undef _commode | ||
| 46 | extern int _commode; | 38 | extern int _commode; |
| 47 | extern int _dowildcard; | 39 | extern int _dowildcard; |
| 48 | 40 | ||
| ... | @@ -334,7 +326,12 @@ static void duplicate_ppstrings (int ac, _TCHAR ***av) | ... | @@ -334,7 +326,12 @@ static void duplicate_ppstrings (int ac, _TCHAR ***av) |
| 334 | 326 | ||
| 335 | int __cdecl atexit (_PVFV func) | 327 | int __cdecl atexit (_PVFV func) |
| 336 | { | 328 | { |
| 337 | return _onexit((_onexit_t)func) ? 0 : -1; | 329 | /* |
| 330 | * msvcrt def file renames the real atexit() function to _crt_atexit(). | ||
| 331 | * UCRT provides atexit() function only under name _crt_atexit(). | ||
| 332 | * So redirect call to _crt_atexit() function. | ||
| 333 | */ | ||
| 334 | return _crt_atexit(func); | ||
| 338 | } | 335 | } |
| 339 | 336 | ||
| 340 | char __mingw_module_is_dll = 0; | 337 | char __mingw_module_is_dll = 0; |
lib/libc/mingw/crt/dllentry.c deleted-18| ... | @@ -1,18 +0,0 @@ | ||
| 1 | /** | ||
| 2 | * This file has no copyright assigned and is placed in the Public Domain. | ||
| 3 | * This file is part of the mingw-w64 runtime package. | ||
| 4 | * No warranty is given; refer to the file DISCLAIMER.PD within this package. | ||
| 5 | */ | ||
| 6 | |||
| 7 | #include <oscalls.h> | ||
| 8 | #define _DECL_DLLMAIN | ||
| 9 | #include <process.h> | ||
| 10 | |||
| 11 | BOOL WINAPI DllEntryPoint (HANDLE, DWORD, LPVOID); | ||
| 12 | |||
| 13 | BOOL WINAPI DllEntryPoint (HANDLE __UNUSED_PARAM(hDllHandle), | ||
| 14 | 			 DWORD __UNUSED_PARAM(dwReason), | ||
| 15 | 			 LPVOID __UNUSED_PARAM(lpreserved)) | ||
| 16 | { | ||
| 17 | return TRUE; | ||
| 18 | } | ||
lib/libc/mingw/crt/dllmain.c deleted-10| ... | @@ -1,10 +0,0 @@ | ||
| 1 | #include <oscalls.h> | ||
| 2 | #define _DECL_DLLMAIN | ||
| 3 | #include <process.h> | ||
| 4 | |||
| 5 | BOOL WINAPI DllMain (HANDLE __UNUSED_PARAM(hDllHandle), | ||
| 6 | 		 DWORD __UNUSED_PARAM(dwReason), | ||
| 7 | 		 LPVOID __UNUSED_PARAM(lpreserved)) | ||
| 8 | { | ||
| 9 | return TRUE; | ||
| 10 | } | ||
lib/libc/mingw/crt/tls_atexit.c+1-1| ... | @@ -169,4 +169,4 @@ static void WINAPI tls_callback(HANDLE hDllHandle, DWORD dwReason, LPVOID __UNUS | ... | @@ -169,4 +169,4 @@ static void WINAPI tls_callback(HANDLE hDllHandle, DWORD dwReason, LPVOID __UNUS |
| 169 | } | 169 | } |
| 170 | } | 170 | } |
| 171 | 171 | ||
| 172 | _CRTALLOC(".CRT$XLB") PIMAGE_TLS_CALLBACK __xl_b = (PIMAGE_TLS_CALLBACK) tls_callback; | 172 | _CRTALLOC(".CRT$XLB") PIMAGE_TLS_CALLBACK __xl_b = tls_callback; |
lib/libc/mingw/crt/tlssup.c+9-10| ... | @@ -71,9 +71,10 @@ static __CRT_THREAD TlsDtorNode dtor_list_head; | ... | @@ -71,9 +71,10 @@ static __CRT_THREAD TlsDtorNode dtor_list_head; |
| 71 | 71 | ||
| 72 | extern int _CRT_MT; | 72 | extern int _CRT_MT; |
| 73 | 73 | ||
| 74 | BOOL WINAPI __dyn_tls_init (HANDLE, DWORD, LPVOID); | 74 | void WINAPI __dyn_tls_init (HANDLE, DWORD, LPVOID); |
| 75 | void WINAPI __dyn_tls_dtor (HANDLE, DWORD, LPVOID); | ||
| 75 | 76 | ||
| 76 | BOOL WINAPI | 77 | void WINAPI |
| 77 | __dyn_tls_init (HANDLE hDllHandle, DWORD dwReason, LPVOID lpreserved) | 78 | __dyn_tls_init (HANDLE hDllHandle, DWORD dwReason, LPVOID lpreserved) |
| 78 | { | 79 | { |
| 79 | _PVFV *pfunc; | 80 | _PVFV *pfunc; |
| ... | @@ -87,7 +88,7 @@ __dyn_tls_init (HANDLE hDllHandle, DWORD dwReason, LPVOID lpreserved) | ... | @@ -87,7 +88,7 @@ __dyn_tls_init (HANDLE hDllHandle, DWORD dwReason, LPVOID lpreserved) |
| 87 | { | 88 | { |
| 88 | if (dwReason == DLL_PROCESS_ATTACH) | 89 | if (dwReason == DLL_PROCESS_ATTACH) |
| 89 | __mingw_TLScallback (hDllHandle, dwReason, lpreserved); | 90 | __mingw_TLScallback (hDllHandle, dwReason, lpreserved); |
| 90 | return TRUE; | 91 | return; |
| 91 | } | 92 | } |
| 92 | 93 | ||
| 93 | ps = (uintptr_t) &__xd_a; | 94 | ps = (uintptr_t) &__xd_a; |
| ... | @@ -98,11 +99,10 @@ __dyn_tls_init (HANDLE hDllHandle, DWORD dwReason, LPVOID lpreserved) | ... | @@ -98,11 +99,10 @@ __dyn_tls_init (HANDLE hDllHandle, DWORD dwReason, LPVOID lpreserved) |
| 98 | if (*pfunc != NULL) | 99 | if (*pfunc != NULL) |
| 99 | 	(*pfunc)(); | 100 | 	(*pfunc)(); |
| 100 | } | 101 | } |
| 101 | return TRUE; | ||
| 102 | } | 102 | } |
| 103 | 103 | ||
| 104 | const PIMAGE_TLS_CALLBACK __dyn_tls_init_callback = (const PIMAGE_TLS_CALLBACK) __dyn_tls_init; | 104 | const PIMAGE_TLS_CALLBACK __dyn_tls_init_callback = __dyn_tls_init; |
| 105 | _CRTALLOC(".CRT$XLC") PIMAGE_TLS_CALLBACK __xl_c = (PIMAGE_TLS_CALLBACK) __dyn_tls_init; | 105 | _CRTALLOC(".CRT$XLC") PIMAGE_TLS_CALLBACK __xl_c = __dyn_tls_init; |
| 106 | 106 | ||
| 107 | int __cdecl __tlregdtor (_PVFV); | 107 | int __cdecl __tlregdtor (_PVFV); |
| 108 | 108 | ||
| ... | @@ -133,7 +133,7 @@ __tlregdtor (_PVFV func) | ... | @@ -133,7 +133,7 @@ __tlregdtor (_PVFV func) |
| 133 | return 0; | 133 | return 0; |
| 134 | } | 134 | } |
| 135 | 135 | ||
| 136 | static BOOL WINAPI | 136 | void WINAPI |
| 137 | __dyn_tls_dtor (HANDLE hDllHandle, DWORD dwReason, LPVOID lpreserved) | 137 | __dyn_tls_dtor (HANDLE hDllHandle, DWORD dwReason, LPVOID lpreserved) |
| 138 | { | 138 | { |
| 139 | #if !defined (DISABLE_MS_TLS) | 139 | #if !defined (DISABLE_MS_TLS) |
| ... | @@ -142,7 +142,7 @@ __dyn_tls_dtor (HANDLE hDllHandle, DWORD dwReason, LPVOID lpreserved) | ... | @@ -142,7 +142,7 @@ __dyn_tls_dtor (HANDLE hDllHandle, DWORD dwReason, LPVOID lpreserved) |
| 142 | #endif | 142 | #endif |
| 143 | 143 | ||
| 144 | if (dwReason != DLL_THREAD_DETACH && dwReason != DLL_PROCESS_DETACH) | 144 | if (dwReason != DLL_THREAD_DETACH && dwReason != DLL_PROCESS_DETACH) |
| 145 | return TRUE; | 145 | return; |
| 146 | /* As TLS variables are detroyed already by DLL_THREAD_DETACH | 146 | /* As TLS variables are detroyed already by DLL_THREAD_DETACH |
| 147 | call, we have to avoid access on the possible DLL_PROCESS_DETACH | 147 | call, we have to avoid access on the possible DLL_PROCESS_DETACH |
| 148 | call the already destroyed TLS vars. | 148 | call the already destroyed TLS vars. |
| ... | @@ -165,10 +165,9 @@ __dyn_tls_dtor (HANDLE hDllHandle, DWORD dwReason, LPVOID lpreserved) | ... | @@ -165,10 +165,9 @@ __dyn_tls_dtor (HANDLE hDllHandle, DWORD dwReason, LPVOID lpreserved) |
| 165 | } | 165 | } |
| 166 | #endif | 166 | #endif |
| 167 | __mingw_TLScallback (hDllHandle, dwReason, lpreserved); | 167 | __mingw_TLScallback (hDllHandle, dwReason, lpreserved); |
| 168 | return TRUE; | ||
| 169 | } | 168 | } |
| 170 | 169 | ||
| 171 | _CRTALLOC(".CRT$XLD") PIMAGE_TLS_CALLBACK __xl_d = (PIMAGE_TLS_CALLBACK) __dyn_tls_dtor; | 170 | _CRTALLOC(".CRT$XLD") PIMAGE_TLS_CALLBACK __xl_d = __dyn_tls_dtor; |
| 172 | 171 | ||
| 173 | 172 | ||
| 174 | int __mingw_initltsdrot_force = 0; | 173 | int __mingw_initltsdrot_force = 0; |
lib/libc/mingw/crt/ucrtbase_compat.c deleted-169| ... | @@ -1,169 +0,0 @@ | ||
| 1 | /** | ||
| 2 | * This file has no copyright assigned and is placed in the Public Domain. | ||
| 3 | * This file is part of the mingw-w64 runtime package. | ||
| 4 | * No warranty is given; refer to the file DISCLAIMER.PD within this package. | ||
| 5 | */ | ||
| 6 | |||
| 7 | #ifdef __GNUC__ | ||
| 8 | #pragma GCC diagnostic push | ||
| 9 | #pragma GCC diagnostic ignored "-Winline" | ||
| 10 | #endif | ||
| 11 | |||
| 12 | #undef __MSVCRT_VERSION__ | ||
| 13 | #define _UCRT | ||
| 14 | |||
| 15 | #define __getmainargs crtimp___getmainargs | ||
| 16 | #define __wgetmainargs crtimp___wgetmainargs | ||
| 17 | #define _amsg_exit crtimp__amsg_exit | ||
| 18 | #define _get_output_format crtimp__get_output_format | ||
| 19 | |||
| 20 | #include <internal.h> | ||
| 21 | #include <sect_attribs.h> | ||
| 22 | #include <stdio.h> | ||
| 23 | #include <time.h> | ||
| 24 | #include <corecrt_startup.h> | ||
| 25 | |||
| 26 | #undef __getmainargs | ||
| 27 | #undef __wgetmainargs | ||
| 28 | #undef _amsg_exit | ||
| 29 | #undef _get_output_format | ||
| 30 | |||
| 31 | |||
| 32 | |||
| 33 | // Declarations of non-static functions implemented within this file (that aren't | ||
| 34 | // declared in any of the included headers, and that isn't mapped away with a define | ||
| 35 | // to get rid of the _CRTIMP in headers). | ||
| 36 | int __cdecl __getmainargs(int * _Argc, char *** _Argv, char ***_Env, int _DoWildCard, _startupinfo *_StartInfo); | ||
| 37 | int __cdecl __wgetmainargs(int * _Argc, wchar_t *** _Argv, wchar_t ***_Env, int _DoWildCard, _startupinfo *_StartInfo); | ||
| 38 | void __cdecl __MINGW_ATTRIB_NORETURN _amsg_exit(int ret); | ||
| 39 | unsigned int __cdecl _get_output_format(void); | ||
| 40 | |||
| 41 | int __cdecl __ms_fwprintf(FILE *, const wchar_t *, ...); | ||
| 42 | |||
| 43 | // Declarations of functions from ucrtbase.dll that we use below | ||
| 44 | _CRTIMP int* __cdecl __p___argc(void); | ||
| 45 | _CRTIMP char*** __cdecl __p___argv(void); | ||
| 46 | _CRTIMP wchar_t*** __cdecl __p___wargv(void); | ||
| 47 | _CRTIMP char*** __cdecl __p__environ(void); | ||
| 48 | _CRTIMP wchar_t*** __cdecl __p__wenviron(void); | ||
| 49 | |||
| 50 | _CRTIMP int __cdecl _initialize_narrow_environment(void); | ||
| 51 | _CRTIMP int __cdecl _initialize_wide_environment(void); | ||
| 52 | _CRTIMP int __cdecl _configure_narrow_argv(int mode); | ||
| 53 | _CRTIMP int __cdecl _configure_wide_argv(int mode); | ||
| 54 | |||
| 55 | // Declared in new.h, but only visible to C++ | ||
| 56 | _CRTIMP int __cdecl _set_new_mode(int _NewMode); | ||
| 57 | |||
| 58 | extern char __mingw_module_is_dll; | ||
| 59 | |||
| 60 | |||
| 61 | // Wrappers with legacy msvcrt.dll style API, based on the new ucrtbase.dll functions. | ||
| 62 | int __cdecl __getmainargs(int * _Argc, char *** _Argv, char ***_Env, int _DoWildCard, _startupinfo *_StartInfo) | ||
| 63 | { | ||
| 64 | _initialize_narrow_environment(); | ||
| 65 | _configure_narrow_argv(_DoWildCard ? 2 : 1); | ||
| 66 | *_Argc = *__p___argc(); | ||
| 67 | *_Argv = *__p___argv(); | ||
| 68 | *_Env = *__p__environ(); | ||
| 69 | if (_StartInfo) | ||
| 70 | _set_new_mode(_StartInfo->newmode); | ||
| 71 | return 0; | ||
| 72 | } | ||
| 73 | |||
| 74 | int __cdecl __wgetmainargs(int * _Argc, wchar_t *** _Argv, wchar_t ***_Env, int _DoWildCard, _startupinfo *_StartInfo) | ||
| 75 | { | ||
| 76 | _initialize_wide_environment(); | ||
| 77 | _configure_wide_argv(_DoWildCard ? 2 : 1); | ||
| 78 | *_Argc = *__p___argc(); | ||
| 79 | *_Argv = *__p___wargv(); | ||
| 80 | *_Env = *__p__wenviron(); | ||
| 81 | if (_StartInfo) | ||
| 82 | _set_new_mode(_StartInfo->newmode); | ||
| 83 | return 0; | ||
| 84 | } | ||
| 85 | |||
| 86 | _onexit_t __cdecl _onexit(_onexit_t func) | ||
| 87 | { | ||
| 88 | return _crt_atexit((_PVFV)func) == 0 ? func : NULL; | ||
| 89 | } | ||
| 90 | |||
| 91 | _onexit_t __cdecl (*__MINGW_IMP_SYMBOL(_onexit))(_onexit_t func) = _onexit; | ||
| 92 | |||
| 93 | int __cdecl at_quick_exit(void (__cdecl *func)(void)) | ||
| 94 | { | ||
| 95 | // In a DLL, we can't register a function with _crt_at_quick_exit, because | ||
| 96 | // we can't unregister it when the DLL is unloaded. This matches how | ||
| 97 | // at_quick_exit/quick_exit work with MSVC with a dynamically linked CRT. | ||
| 98 | if (__mingw_module_is_dll) | ||
| 99 | return 0; | ||
| 100 | return _crt_at_quick_exit(func); | ||
| 101 | } | ||
| 102 | |||
| 103 | int __cdecl (*__MINGW_IMP_SYMBOL(at_quick_exit))(void (__cdecl *)(void)) = at_quick_exit; | ||
| 104 | |||
| 105 | void __cdecl __MINGW_ATTRIB_NORETURN _amsg_exit(int ret) { | ||
| 106 | fprintf(stderr, "runtime error %d\n", ret); | ||
| 107 | _exit(255); | ||
| 108 | } | ||
| 109 | |||
| 110 | unsigned int __cdecl _get_output_format(void) | ||
| 111 | { | ||
| 112 | return 0; | ||
| 113 | } | ||
| 114 | |||
| 115 | |||
| 116 | // These are required to provide the unrepfixed data symbols "timezone" | ||
| 117 | // and "tzname"; we can't remap "timezone" via a define due to clashes | ||
| 118 | // with e.g. "struct timezone". | ||
| 119 | typedef void __cdecl (*_tzset_func)(void); | ||
| 120 | extern _tzset_func __MINGW_IMP_SYMBOL(_tzset); | ||
| 121 | |||
| 122 | // Default initial values until _tzset has been called; these are the same | ||
| 123 | // as the initial values in msvcrt/ucrtbase. | ||
| 124 | static char initial_tzname0[] = "PST"; | ||
| 125 | static char initial_tzname1[] = "PDT"; | ||
| 126 | static char *initial_tznames[] = { initial_tzname0, initial_tzname1 }; | ||
| 127 | static long initial_timezone = 28800; | ||
| 128 | static int initial_daylight = 1; | ||
| 129 | char** __MINGW_IMP_SYMBOL(tzname) = initial_tznames; | ||
| 130 | long * __MINGW_IMP_SYMBOL(timezone) = &initial_timezone; | ||
| 131 | int * __MINGW_IMP_SYMBOL(daylight) = &initial_daylight; | ||
| 132 | |||
| 133 | void __cdecl _tzset(void) | ||
| 134 | { | ||
| 135 | __MINGW_IMP_SYMBOL(_tzset)(); | ||
| 136 | // Redirect the __imp_ pointers to the actual data provided by the UCRT. | ||
| 137 | // From this point, the exposed values should stay in sync. | ||
| 138 | __MINGW_IMP_SYMBOL(tzname) = _tzname; | ||
| 139 | __MINGW_IMP_SYMBOL(timezone) = __timezone(); | ||
| 140 | __MINGW_IMP_SYMBOL(daylight) = __daylight(); | ||
| 141 | } | ||
| 142 | |||
| 143 | void __cdecl tzset(void) | ||
| 144 | { | ||
| 145 | _tzset(); | ||
| 146 | } | ||
| 147 | |||
| 148 | // This is called for wchar cases with __USE_MINGW_ANSI_STDIO enabled (where the | ||
| 149 | // char case just uses fputc). | ||
| 150 | int __cdecl __ms_fwprintf(FILE *file, const wchar_t *fmt, ...) | ||
| 151 | { | ||
| 152 | va_list ap; | ||
| 153 | int ret; | ||
| 154 | va_start(ap, fmt); | ||
| 155 | ret = __stdio_common_vfwprintf(_CRT_INTERNAL_PRINTF_LEGACY_WIDE_SPECIFIERS, file, fmt, NULL, ap); | ||
| 156 | va_end(ap); | ||
| 157 | return ret; | ||
| 158 | } | ||
| 159 | |||
| 160 | // Dummy/unused __imp_ wrappers, to make GNU ld not autoexport these symbols. | ||
| 161 | int __cdecl (*__MINGW_IMP_SYMBOL(__getmainargs))(int *, char ***, char ***, int, _startupinfo *) = __getmainargs; | ||
| 162 | int __cdecl (*__MINGW_IMP_SYMBOL(__wgetmainargs))(int *, wchar_t ***, wchar_t ***, int, _startupinfo *) = __wgetmainargs; | ||
| 163 | void __cdecl (*__MINGW_IMP_SYMBOL(_amsg_exit))(int) = _amsg_exit; | ||
| 164 | unsigned int __cdecl (*__MINGW_IMP_SYMBOL(_get_output_format))(void) = _get_output_format; | ||
| 165 | void __cdecl (*__MINGW_IMP_SYMBOL(tzset))(void) = tzset; | ||
| 166 | int __cdecl (*__MINGW_IMP_SYMBOL(__ms_fwprintf))(FILE *, const wchar_t *, ...) = __ms_fwprintf; | ||
| 167 | #ifdef __GNUC__ | ||
| 168 | #pragma GCC diagnostic pop | ||
| 169 | #endif | ||
lib/libc/mingw/def-include/crt-aliases.def.in created+585| ... | @@ -0,0 +1,585 @@ | ||
| 1 | #include "func.def.in" | ||
| 2 | |||
| 3 | #define ADD_UNDERSCORE(symbol) symbol == _ ## symbol | ||
| 4 | #define ADD_UNDERSCORE_DATA(symbol) symbol DATA == _ ## symbol | ||
| 5 | #define ADD_UNDERSCORE_DATA_DLL(symbol) symbol DATA == _ ## symbol ## _dll | ||
| 6 | #define ADD_DOUBLE_UNDERSCORE(symbol) symbol == __ ## symbol | ||
| 7 | |||
| 8 | ; This is list of symbol aliases from the Visual C++ 1.0 oldnames.lib library | ||
| 9 | ; FIXME: some of these symbol aliases are commented, check and document why | ||
| 10 | #ifdef UCRTBASE | ||
| 11 | ; access is provided as an alias for __mingw_access | ||
| 12 | #else | ||
| 13 | ADD_UNDERSCORE(access) | ||
| 14 | #endif | ||
| 15 | #ifndef CRTAPP | ||
| 16 | ; ADD_UNDERSCORE(cgets) | ||
| 17 | ADD_UNDERSCORE(chdir) | ||
| 18 | #endif | ||
| 19 | ADD_UNDERSCORE(chmod) | ||
| 20 | ADD_UNDERSCORE(chsize) | ||
| 21 | ADD_UNDERSCORE(close) | ||
| 22 | #ifndef CRTAPP | ||
| 23 | ; ADD_UNDERSCORE(cprintf) | ||
| 24 | ; ADD_UNDERSCORE(cputs) | ||
| 25 | #endif | ||
| 26 | ADD_UNDERSCORE(creat) | ||
| 27 | #ifndef CRTAPP | ||
| 28 | ; ADD_UNDERSCORE(cscanf) | ||
| 29 | ADD_UNDERSCORE(cwait) | ||
| 30 | #endif | ||
| 31 | #if defined(UCRTBASE) | ||
| 32 | ; daylight variable is provided by misc/ucrt_tzset.c | ||
| 33 | #elif defined(CRTDLL) | ||
| 34 | ADD_UNDERSCORE_DATA_DLL(daylight) | ||
| 35 | #else | ||
| 36 | ADD_UNDERSCORE_DATA(daylight) | ||
| 37 | #endif | ||
| 38 | ADD_UNDERSCORE(dup) | ||
| 39 | ADD_UNDERSCORE(dup2) | ||
| 40 | ADD_UNDERSCORE(ecvt) | ||
| 41 | #if defined(UCRTBASE) | ||
| 42 | ; _environ variable is not available in ucrtbase.dll and there is no replacement for it | ||
| 43 | #elif defined(CRTDLL) | ||
| 44 | ; ADD_UNDERSCORE_DATA_DLL(environ) | ||
| 45 | #else | ||
| 46 | ; ADD_UNDERSCORE_DATA(environ) | ||
| 47 | #endif | ||
| 48 | ADD_UNDERSCORE(eof) | ||
| 49 | #ifndef CRTAPP | ||
| 50 | ADD_UNDERSCORE(execl) | ||
| 51 | ADD_UNDERSCORE(execle) | ||
| 52 | ADD_UNDERSCORE(execlp) | ||
| 53 | ADD_UNDERSCORE(execlpe) | ||
| 54 | ADD_UNDERSCORE(execv) | ||
| 55 | ADD_UNDERSCORE(execve) | ||
| 56 | ADD_UNDERSCORE(execvp) | ||
| 57 | ADD_UNDERSCORE(execvpe) | ||
| 58 | #endif | ||
| 59 | ADD_UNDERSCORE(fcloseall) | ||
| 60 | ADD_UNDERSCORE(fcvt) | ||
| 61 | ADD_UNDERSCORE(fdopen) | ||
| 62 | ADD_UNDERSCORE(fgetchar) | ||
| 63 | ADD_UNDERSCORE(filelength) | ||
| 64 | ADD_UNDERSCORE(fileno) | ||
| 65 | ; ADD_UNDERSCORE(flushall) | ||
| 66 | ADD_UNDERSCORE(fputchar) | ||
| 67 | #ifdef FIXED_SIZE_SYMBOLS | ||
| 68 | #ifndef CRTDLL | ||
| 69 | ADD_UNDERSCORE(fstat) | ||
| 70 | #endif | ||
| 71 | #else | ||
| 72 | F32(fstat == _fstat32) | ||
| 73 | F64(fstat == _fstat64i32) | ||
| 74 | #endif | ||
| 75 | #ifdef FIXED_SIZE_SYMBOLS | ||
| 76 | ADD_UNDERSCORE(ftime) | ||
| 77 | #else | ||
| 78 | F32(ftime == _ftime32) | ||
| 79 | F64(ftime == _ftime64) | ||
| 80 | #endif | ||
| 81 | #if defined(UCRTBASE) | ||
| 82 | ; HUGE alias and _HUGE variable are provided by math/_huge.c | ||
| 83 | #elif defined(CRTDLL) | ||
| 84 | ADD_UNDERSCORE_DATA_DLL(HUGE) | ||
| 85 | #else | ||
| 86 | ADD_UNDERSCORE_DATA(HUGE) | ||
| 87 | #endif | ||
| 88 | ADD_UNDERSCORE(gcvt) | ||
| 89 | #ifndef CRTAPP | ||
| 90 | ADD_UNDERSCORE(getch) | ||
| 91 | ADD_UNDERSCORE(getche) | ||
| 92 | ADD_UNDERSCORE(getcwd) | ||
| 93 | #endif | ||
| 94 | #ifdef UCRTBASE | ||
| 95 | ; ucrtbase.dll has got _getpid for all archs | ||
| 96 | ADD_UNDERSCORE(getpid) | ||
| 97 | #elif !defined(CRTAPP) | ||
| 98 | ; msvcrt.dll for arm/arm64 lacks _getpid | ||
| 99 | F_X86_ANY(ADD_UNDERSCORE(getpid)) | ||
| 100 | #endif | ||
| 101 | #ifndef CRTAPP | ||
| 102 | ADD_UNDERSCORE(getw) | ||
| 103 | #endif | ||
| 104 | ADD_UNDERSCORE(isatty) | ||
| 105 | ADD_UNDERSCORE(itoa) | ||
| 106 | #ifndef CRTAPP | ||
| 107 | ADD_UNDERSCORE(kbhit) | ||
| 108 | #endif | ||
| 109 | ADD_UNDERSCORE(lfind) | ||
| 110 | ; ADD_UNDERSCORE(locking) | ||
| 111 | ADD_UNDERSCORE(lsearch) | ||
| 112 | ADD_UNDERSCORE(lseek) | ||
| 113 | ADD_UNDERSCORE(ltoa) | ||
| 114 | ADD_UNDERSCORE(memccpy) | ||
| 115 | ADD_UNDERSCORE(memicmp) | ||
| 116 | ADD_UNDERSCORE(mkdir) | ||
| 117 | ADD_UNDERSCORE(mktemp) | ||
| 118 | ; onexit function alias is provided by misc/_onexit.c | ||
| 119 | ADD_UNDERSCORE(open) | ||
| 120 | #ifndef CRTAPP | ||
| 121 | ADD_UNDERSCORE(putch) | ||
| 122 | ADD_UNDERSCORE(putenv) | ||
| 123 | #endif | ||
| 124 | ADD_UNDERSCORE(putw) | ||
| 125 | ADD_UNDERSCORE(read) | ||
| 126 | ADD_UNDERSCORE(rmdir) | ||
| 127 | ADD_UNDERSCORE(rmtmp) | ||
| 128 | ADD_UNDERSCORE(setmode) | ||
| 129 | ADD_UNDERSCORE(sopen) | ||
| 130 | #ifndef CRTAPP | ||
| 131 | ADD_UNDERSCORE(spawnl) | ||
| 132 | ADD_UNDERSCORE(spawnle) | ||
| 133 | ADD_UNDERSCORE(spawnlp) | ||
| 134 | ADD_UNDERSCORE(spawnlpe) | ||
| 135 | ADD_UNDERSCORE(spawnv) | ||
| 136 | ADD_UNDERSCORE(spawnve) | ||
| 137 | ADD_UNDERSCORE(spawnvp) | ||
| 138 | ADD_UNDERSCORE(spawnvpe) | ||
| 139 | #endif | ||
| 140 | #ifndef CRTDLL | ||
| 141 | ; stat is provided by mingw to workaround trailing slash issue in _stat | ||
| 142 | #endif | ||
| 143 | #ifdef NO_STRCMPI_ALIAS | ||
| 144 | ; Symbol _strcmpi is natively present and defined in the library def file | ||
| 145 | ; So define strcmpi as an alias to _strcmpi | ||
| 146 | ADD_UNDERSCORE(strcmpi) | ||
| 147 | #else | ||
| 148 | ; Symbol _strcmpi is not present in the library, it provides only _stricmp symbol | ||
| 149 | ; So define strcmpi as an alias to _stricmp | ||
| 150 | strcmpi == _stricmp | ||
| 151 | #endif | ||
| 152 | ADD_UNDERSCORE(strdup) | ||
| 153 | ADD_UNDERSCORE(stricmp) | ||
| 154 | ADD_UNDERSCORE(strlwr) | ||
| 155 | ADD_UNDERSCORE(strnicmp) | ||
| 156 | ADD_UNDERSCORE(strnset) | ||
| 157 | ADD_UNDERSCORE(strrev) | ||
| 158 | ADD_UNDERSCORE(strset) | ||
| 159 | ADD_UNDERSCORE(strupr) | ||
| 160 | ADD_UNDERSCORE(swab) | ||
| 161 | #if defined(UCRTBASE) | ||
| 162 | ; _sys_errlist variable is not available in ucrtbase.dll and there is no replacement for it | ||
| 163 | #else | ||
| 164 | // sys_errlist variable is without _dll suffix in crtdll.dll | ||
| 165 | ; ADD_UNDERSCORE_DATA(sys_errlist) | ||
| 166 | #endif | ||
| 167 | #if defined(UCRTBASE) | ||
| 168 | ; _sys_nerr variable is not available in ucrtbase.dll and there is no replacement for it | ||
| 169 | #elif defined(CRTDLL) | ||
| 170 | ; ADD_UNDERSCORE_DATA_DLL(sys_nerr) | ||
| 171 | #else | ||
| 172 | ; ADD_UNDERSCORE_DATA(sys_nerr) | ||
| 173 | #endif | ||
| 174 | ADD_UNDERSCORE(tell) | ||
| 175 | ADD_UNDERSCORE(tempnam) | ||
| 176 | #if defined(UCRTBASE) | ||
| 177 | ; timezone variable is provided by misc/ucrt_tzset.c | ||
| 178 | #elif defined(CRTDLL) | ||
| 179 | ADD_UNDERSCORE_DATA_DLL(timezone) | ||
| 180 | #else | ||
| 181 | ADD_UNDERSCORE_DATA(timezone) | ||
| 182 | #endif | ||
| 183 | #if defined(UCRTBASE) | ||
| 184 | ; tzname variable is provided by misc/ucrt_tzset.c | ||
| 185 | #else | ||
| 186 | // tzname variable is without _dll suffix in crtdll.dll | ||
| 187 | ADD_UNDERSCORE_DATA(tzname) | ||
| 188 | #endif | ||
| 189 | #if defined(UCRTBASE) | ||
| 190 | ; tzset function is provided by misc/ucrt_tzset.c | ||
| 191 | #else | ||
| 192 | ADD_UNDERSCORE(tzset) | ||
| 193 | #endif | ||
| 194 | ; ADD_UNDERSCORE(ultoa) | ||
| 195 | ADD_UNDERSCORE(umask) | ||
| 196 | #ifndef CRTAPP | ||
| 197 | ADD_UNDERSCORE(ungetch) | ||
| 198 | #endif | ||
| 199 | ADD_UNDERSCORE(unlink) | ||
| 200 | #ifdef FIXED_SIZE_SYMBOLS | ||
| 201 | ADD_UNDERSCORE(utime) | ||
| 202 | #else | ||
| 203 | F32(utime == _utime32) | ||
| 204 | F64(utime == _utime64) | ||
| 205 | #endif | ||
| 206 | ADD_UNDERSCORE(write) | ||
| 207 | |||
| 208 | ; This is list of symbol aliases added in the Visual C++ 2.0 oldnames.lib library | ||
| 209 | ; All these symbols with leading underscore are present also in pre-2.0 CRT versions: crtdll.dll and msvcrt10.dll | ||
| 210 | ; ADD_UNDERSCORE(control87) | ||
| 211 | ; ADD_UNDERSCORE(fpreset) ; Alias fpreset is set in CRT_fp10.c and CRT_fp8.c | ||
| 212 | ADD_UNDERSCORE(wcsdup) | ||
| 213 | ADD_UNDERSCORE(wcsicmp) | ||
| 214 | ADD_UNDERSCORE(wcsicoll) | ||
| 215 | ADD_UNDERSCORE(wcslwr) | ||
| 216 | ADD_UNDERSCORE(wcsnicmp) | ||
| 217 | ADD_UNDERSCORE(wcsnset) | ||
| 218 | ADD_UNDERSCORE(wcsrev) | ||
| 219 | ADD_UNDERSCORE(wcsset) | ||
| 220 | ADD_UNDERSCORE(wcsupr) | ||
| 221 | |||
| 222 | ; This is list of symbol aliases added in the Visual C++ 4.0 oldnames.lib library | ||
| 223 | ; All these symbols with leading underscore are present also in pre-4.0 CRT versions: crtdll.dll, msvcrt10.dll and msvcrt20.dll | ||
| 224 | ; ADD_UNDERSCORE(cabs) | ||
| 225 | ADD_UNDERSCORE(hypot) | ||
| 226 | ADD_UNDERSCORE(j0) | ||
| 227 | ADD_UNDERSCORE(j1) | ||
| 228 | ADD_UNDERSCORE(jn) | ||
| 229 | ADD_UNDERSCORE(y0) | ||
| 230 | ADD_UNDERSCORE(y1) | ||
| 231 | ADD_UNDERSCORE(yn) | ||
| 232 | |||
| 233 | ; This is list of symbol aliases for C95 functions | ||
| 234 | #ifdef USE_WCSTOK_S_FOR_WCSTOK | ||
| 235 | wcstok == wcstok_s | ||
| 236 | #endif | ||
| 237 | |||
| 238 | ; This is list of symbol aliases for C99 functions | ||
| 239 | ; ADD_UNDERSCORE(logb) | ||
| 240 | #ifdef WITH_NEXTAFTER_ALIAS | ||
| 241 | ADD_UNDERSCORE(nextafter) | ||
| 242 | #endif | ||
| 243 | |||
| 244 | #if defined(DEF_ARM32) || defined(DEF_ARM64) | ||
| 245 | ; This is list of symbol aliases for C99 ARM long double functions | ||
| 246 | ; They are defined as aliases to regular double symbols as on ARM, long double is equal to regular double | ||
| 247 | acosl == acos | ||
| 248 | asinl == asin | ||
| 249 | atan2l == atan2 | ||
| 250 | atanl == atan | ||
| 251 | ceill == ceil | ||
| 252 | cosl == cos | ||
| 253 | expl == exp | ||
| 254 | floorl == floor | ||
| 255 | fmodl == fmod | ||
| 256 | log10l == log10 | ||
| 257 | logl == log | ||
| 258 | ; FIXME: Why is powl alias defined only for UCRT? | ||
| 259 | #ifdef UCRTBASE | ||
| 260 | powl == pow | ||
| 261 | #endif | ||
| 262 | sinl == sin | ||
| 263 | tanl == tan | ||
| 264 | #endif | ||
| 265 | |||
| 266 | ; This is list of symbol aliases for C11 functions | ||
| 267 | #ifdef UCRTBASE | ||
| 268 | F32(timespec_get == _timespec32_get) | ||
| 269 | F64(timespec_get == _timespec64_get) | ||
| 270 | #endif | ||
| 271 | |||
| 272 | ; This is list of symbol aliases for POSIX functions | ||
| 273 | ADD_DOUBLE_UNDERSCORE(isascii) | ||
| 274 | ADD_DOUBLE_UNDERSCORE(toascii) | ||
| 275 | #ifndef CRTAPP | ||
| 276 | ADD_UNDERSCORE(pclose) | ||
| 277 | ADD_UNDERSCORE(popen) | ||
| 278 | #endif | ||
| 279 | ; ADD_UNDERSCORE(scalb) | ||
| 280 | |||
| 281 | ; This is list of symbol aliases for Large File Specification (extension to Single UNIX Specification) | ||
| 282 | #ifndef NO_FPOS64_ALIASES | ||
| 283 | ; fgetpos and fsetpos are already 64-bit | ||
| 284 | fgetpos64 == fgetpos | ||
| 285 | fsetpos64 == fsetpos | ||
| 286 | #endif | ||
| 287 | |||
| 288 | ; This is list of symbol aliases for GNU functions which are not part of POSIX or ISO C | ||
| 289 | strcasecmp == _stricmp | ||
| 290 | strncasecmp == _strnicmp | ||
| 291 | |||
| 292 | ; This is list of various symbol aliases which are needed for compatibility | ||
| 293 | ; Some symbols in some version of CRT library were added and some other symbols were removed or renamed | ||
| 294 | ; This list provides some level of backward and forward compatibility | ||
| 295 | |||
| 296 | #ifndef NO_STRCMPI_ALIAS | ||
| 297 | _strcmpi == _stricmp | ||
| 298 | #endif | ||
| 299 | |||
| 300 | #ifdef WITH_IOB_FUNC_ALIAS | ||
| 301 | __iob_func == __p__iob | ||
| 302 | #endif | ||
| 303 | |||
| 304 | #ifdef WITH_TZ_ALIASES | ||
| 305 | __daylight == __p__daylight | ||
| 306 | #ifndef NO_DSTBIAS | ||
| 307 | __dstbias == __p__dstbias | ||
| 308 | #endif | ||
| 309 | __timezone == __p__timezone | ||
| 310 | __tzname == __p__tzname | ||
| 311 | #endif | ||
| 312 | |||
| 313 | #ifdef WITH_ATOLL_ALIAS | ||
| 314 | atoll == _atoi64 | ||
| 315 | _wtoll == _wtoi64 | ||
| 316 | #endif | ||
| 317 | |||
| 318 | #ifdef WITH_ATOLL_L_ALIAS | ||
| 319 | _atoll_l == _atoi64_l | ||
| 320 | _wtoll_l == _wtoi64_l | ||
| 321 | #endif | ||
| 322 | |||
| 323 | #ifdef WITH_LLABS_ALIAS | ||
| 324 | llabs == _abs64 | ||
| 325 | imaxabs == _abs64 | ||
| 326 | #elif defined(WITH_IMAXABS_ALIAS) | ||
| 327 | imaxabs == llabs | ||
| 328 | #endif | ||
| 329 | |||
| 330 | #ifdef WITH_IMAXDIV_ALIAS | ||
| 331 | imaxdiv == lldiv | ||
| 332 | #endif | ||
| 333 | |||
| 334 | #ifdef WITH_STRTO64_ALIAS | ||
| 335 | strtoll == _strtoi64 | ||
| 336 | strtoull == _strtoui64 | ||
| 337 | strtoimax == _strtoi64 | ||
| 338 | strtoumax == _strtoui64 | ||
| 339 | wcstoll == _wcstoi64 | ||
| 340 | wcstoull == _wcstoui64 | ||
| 341 | wcstoimax == _wcstoi64 | ||
| 342 | wcstoumax == _wcstoui64 | ||
| 343 | #endif | ||
| 344 | |||
| 345 | #ifdef WITH_STRTO64_L_ALIAS | ||
| 346 | _strtoll_l == _strtoi64_l | ||
| 347 | _strtoull_l == _strtoui64_l | ||
| 348 | _strtoimax_l == _strtoi64_l | ||
| 349 | _strtoumax_l == _strtoui64_l | ||
| 350 | _wcstoll_l == _wcstoi64_l | ||
| 351 | _wcstoull_l == _wcstoui64_l | ||
| 352 | _wcstoimax_l == _wcstoi64_l | ||
| 353 | _wcstoumax_l == _wcstoui64_l | ||
| 354 | #endif | ||
| 355 | |||
| 356 | ; This is list of find symbol aliases, every CRT library has either find symbols with SIZE suffix or without them | ||
| 357 | #ifdef FIXED_SIZE_SYMBOLS | ||
| 358 | F32(_findfirst32 == _findfirst) | ||
| 359 | F64(_findfirst64i32 == _findfirst) | ||
| 360 | #ifndef NO_I64_FIXED_SIZE | ||
| 361 | F32(_findfirst32i64 == _findfirsti64) | ||
| 362 | #ifndef NO_FIXED_SIZE_64_ALIAS | ||
| 363 | F64(_findfirst64 == _findfirsti64) | ||
| 364 | #endif | ||
| 365 | #endif | ||
| 366 | F32(_findnext32 == _findnext) | ||
| 367 | F64(_findnext64i32 == _findnext) | ||
| 368 | #ifndef NO_I64_FIXED_SIZE | ||
| 369 | F32(_findnext32i64 == _findnexti64) | ||
| 370 | #ifndef NO_FIXED_SIZE_64_ALIAS | ||
| 371 | F64(_findnext64 == _findnexti64) | ||
| 372 | #endif | ||
| 373 | #endif | ||
| 374 | #ifndef NO_WIDE_FIXED_SIZE | ||
| 375 | F32(_wfindfirst32 == _wfindfirst) | ||
| 376 | F64(_wfindfirst64i32 == _wfindfirst) | ||
| 377 | #ifndef NO_I64_FIXED_SIZE | ||
| 378 | F32(_wfindfirst32i64 == _wfindfirsti64) | ||
| 379 | #ifndef NO_FIXED_SIZE_64_ALIAS | ||
| 380 | F64(_wfindfirst64 == _wfindfirsti64) | ||
| 381 | #endif | ||
| 382 | #endif | ||
| 383 | F32(_wfindnext32 == _wfindnext) | ||
| 384 | F64(_wfindnext64i32 == _wfindnext) | ||
| 385 | #ifndef NO_I64_FIXED_SIZE | ||
| 386 | F32(_wfindnext32i64 == _wfindnexti64) | ||
| 387 | #ifndef NO_FIXED_SIZE_64_ALIAS | ||
| 388 | F64(_wfindnext64 == _wfindnexti64) | ||
| 389 | #endif | ||
| 390 | #endif | ||
| 391 | #endif | ||
| 392 | #else | ||
| 393 | F32(_findfirst == _findfirst32) | ||
| 394 | F64(_findfirst == _findfirst64i32) | ||
| 395 | F32(_findfirsti64 == _findfirst32i64) | ||
| 396 | F64(_findfirsti64 == _findfirst64) | ||
| 397 | F32(_findnext == _findnext32) | ||
| 398 | F64(_findnext == _findnext64i32) | ||
| 399 | F32(_findnexti64 == _findnext32i64) | ||
| 400 | F64(_findnexti64 == _findnext64) | ||
| 401 | F32(_wfindfirst == _wfindfirst32) | ||
| 402 | F64(_wfindfirst == _wfindfirst64i32) | ||
| 403 | F32(_wfindfirsti64 == _wfindfirst32i64) | ||
| 404 | F64(_wfindfirsti64 == _wfindfirst64) | ||
| 405 | F32(_wfindnext == _wfindnext32) | ||
| 406 | F64(_wfindnext == _wfindnext64i32) | ||
| 407 | F32(_wfindnexti64 == _wfindnext32i64) | ||
| 408 | F64(_wfindnexti64 == _wfindnext64) | ||
| 409 | #endif | ||
| 410 | |||
| 411 | ; This is list of stat symbol aliases, every CRT library has either stat symbols with SIZE suffix or without them | ||
| 412 | #ifdef FIXED_SIZE_SYMBOLS | ||
| 413 | #ifndef CRTDLL | ||
| 414 | F32(_fstat32 == _fstat) | ||
| 415 | #endif | ||
| 416 | F64(_fstat64i32 == _fstat) | ||
| 417 | #ifndef NO_I64_FIXED_SIZE | ||
| 418 | F32(_fstat32i64 == _fstati64) | ||
| 419 | #ifndef NO_FIXED_SIZE_64_ALIAS | ||
| 420 | F64(_fstat64 == _fstati64) | ||
| 421 | #endif | ||
| 422 | #endif | ||
| 423 | #ifndef CRTDLL | ||
| 424 | F32(_stat32 == _stat) | ||
| 425 | #endif | ||
| 426 | F64(_stat64i32 == _stat) | ||
| 427 | #ifndef NO_I64_FIXED_SIZE | ||
| 428 | F32(_stat32i64 == _stati64) | ||
| 429 | #ifndef NO_FIXED_SIZE_64_ALIAS | ||
| 430 | F64(_stat64 == _stati64) | ||
| 431 | #endif | ||
| 432 | #endif | ||
| 433 | #ifndef NO_WIDE_FIXED_SIZE | ||
| 434 | F32(_wstat32 == _wstat) | ||
| 435 | F64(_wstat64i32 == _wstat) | ||
| 436 | #ifndef NO_I64_FIXED_SIZE | ||
| 437 | F32(_wstat32i64 == _wstati64) | ||
| 438 | #ifndef NO_FIXED_SIZE_64_ALIAS | ||
| 439 | F64(_wstat64 == _wstati64) | ||
| 440 | #endif | ||
| 441 | #endif | ||
| 442 | #endif | ||
| 443 | #else | ||
| 444 | F32(_fstat == _fstat32) | ||
| 445 | F64(_fstat == _fstat64i32) | ||
| 446 | F32(_fstati64 == _fstat32i64) | ||
| 447 | F64(_fstati64 == _fstat64) | ||
| 448 | F32(_stat == _stat32) | ||
| 449 | F64(_stat == _stat64i32) | ||
| 450 | F32(_stati64 == _stat32i64) | ||
| 451 | F64(_stati64 == _stat64) | ||
| 452 | F32(_wstat == _wstat32) | ||
| 453 | F64(_wstat == _wstat64i32) | ||
| 454 | F32(_wstati64 == _wstat32i64) | ||
| 455 | F64(_wstati64 == _wstat64) | ||
| 456 | #endif | ||
| 457 | |||
| 458 | ; This is list of time symbol aliases, every CRT library except msvcrt.dll has either time symbols with SIZE suffix or without them | ||
| 459 | #ifndef NO_TIME_ALIAS | ||
| 460 | #ifdef FIXED_SIZE_SYMBOLS | ||
| 461 | F32(_ctime32 == ctime) | ||
| 462 | F64(_ctime64 == ctime) | ||
| 463 | F32(_difftime32 == difftime) | ||
| 464 | F64(_difftime64 == difftime) | ||
| 465 | F32(_ftime32 == _ftime) | ||
| 466 | F64(_ftime64 == _ftime) | ||
| 467 | F32(_futime32 == _futime) | ||
| 468 | F64(_futime64 == _futime) | ||
| 469 | F32(_gmtime32 == gmtime) | ||
| 470 | F64(_gmtime64 == gmtime) | ||
| 471 | F32(_localtime32 == localtime) | ||
| 472 | F64(_localtime64 == localtime) | ||
| 473 | ; Skip _mkgmtime as it is present only in msvcrt.dll | ||
| 474 | F32(_mktime32 == mktime) | ||
| 475 | F64(_mktime64 == mktime) | ||
| 476 | F32(_time32 == time) | ||
| 477 | F64(_time64 == time) | ||
| 478 | F32(_utime32 == _utime) | ||
| 479 | F64(_utime64 == _utime) | ||
| 480 | #ifndef NO_WIDE_FIXED_SIZE | ||
| 481 | F32(_wctime32 == _wctime) | ||
| 482 | F64(_wctime64 == _wctime) | ||
| 483 | F32(_wutime32 == _wutime) | ||
| 484 | F64(_wutime64 == _wutime) | ||
| 485 | #endif | ||
| 486 | #else | ||
| 487 | F32(ctime == _ctime32) | ||
| 488 | F64(ctime == _ctime64) | ||
| 489 | F32(difftime == _difftime32) | ||
| 490 | F64(difftime == _difftime64) | ||
| 491 | F32(_ftime == _ftime32) | ||
| 492 | F64(_ftime == _ftime64) | ||
| 493 | F32(_futime == _futime32) | ||
| 494 | F64(_futime == _futime64) | ||
| 495 | F32(gmtime == _gmtime32) | ||
| 496 | F64(gmtime == _gmtime64) | ||
| 497 | F32(localtime == _localtime32) | ||
| 498 | F64(localtime == _localtime64) | ||
| 499 | F32(_mkgmtime == _mkgmtime32) | ||
| 500 | F64(_mkgmtime == _mkgmtime64) | ||
| 501 | F32(mktime == _mktime32) | ||
| 502 | F64(mktime == _mktime64) | ||
| 503 | F32(time == _time32) | ||
| 504 | F64(time == _time64) | ||
| 505 | F32(_utime == _utime32) | ||
| 506 | F64(_utime == _utime64) | ||
| 507 | F32(_wctime == _wctime32) | ||
| 508 | F64(_wctime == _wctime64) | ||
| 509 | F32(_wutime == _wutime32) | ||
| 510 | F64(_wutime == _wutime64) | ||
| 511 | #endif | ||
| 512 | #endif | ||
| 513 | |||
| 514 | ; This is list of symbols which are present in msvcrt but not in UCRT | ||
| 515 | #ifdef UCRTBASE | ||
| 516 | __lconv_init == __initialize_lconv_for_unsigned_char | ||
| 517 | __set_app_type == _set_app_type | ||
| 518 | __p__daylight == __daylight | ||
| 519 | __p__dstbias == __dstbias | ||
| 520 | __p__timezone == __timezone | ||
| 521 | __p__tzname == __tzname | ||
| 522 | #endif | ||
| 523 | |||
| 524 | ; This is list of printf/scanf symbol aliases with __ms_ prefix | ||
| 525 | #ifndef UCRTBASE | ||
| 526 | __ms_fprintf == fprintf | ||
| 527 | __ms_fscanf == fscanf | ||
| 528 | __ms_fwprintf == fwprintf | ||
| 529 | __ms_fwscanf == fwscanf | ||
| 530 | __ms_printf == printf | ||
| 531 | __ms_scanf == scanf | ||
| 532 | __ms_sprintf == sprintf | ||
| 533 | __ms_sscanf == sscanf | ||
| 534 | #ifdef PRE_C95_SWPRINTF | ||
| 535 | __ms_swprintf == swprintf | ||
| 536 | #else | ||
| 537 | __ms_swprintf == _swprintf | ||
| 538 | #endif | ||
| 539 | __ms_swscanf == swscanf | ||
| 540 | __ms_vfprintf == vfprintf | ||
| 541 | __ms_vfwprintf == vfwprintf | ||
| 542 | __ms_vprintf == vprintf | ||
| 543 | __ms_vsprintf == vsprintf | ||
| 544 | #ifdef PRE_C95_SWPRINTF | ||
| 545 | __ms_vswprintf == vswprintf | ||
| 546 | #else | ||
| 547 | __ms_vswprintf == _vswprintf | ||
| 548 | #endif | ||
| 549 | __ms_vwprintf == vwprintf | ||
| 550 | __ms_wprintf == wprintf | ||
| 551 | __ms_wscanf == wscanf | ||
| 552 | #endif | ||
| 553 | |||
| 554 | ; This is list of additional symbol aliases not available in any library as neither native symbols nor aliases | ||
| 555 | ; FIXME: check if these really are needed | ||
| 556 | |||
| 557 | ; Origin of the symbol wcscmpi is unknown. This symbol is not present in | ||
| 558 | ; crtdll.dll and neither in any msvcr* version. The only source of wcscmpi is | ||
| 559 | ; wcstr.h header file from the Microsoft Visual C++ 1.0 (32-bit for NT) and | ||
| 560 | ; Microsoft Windows NT 3.1 SDK where wcscmpi and _wcscmpi are defined as | ||
| 561 | ; macros which expand to _wcsicmp. So the raw wcscmpi is not linkable symbol | ||
| 562 | ; even in the old Visual C++ versions. | ||
| 563 | wcscmpi == _wcsicmp | ||
| 564 | |||
| 565 | ; Origin of these symbols is unknown too. | ||
| 566 | ADD_UNDERSCORE(chgsign) | ||
| 567 | ADD_UNDERSCORE(fgetwchar) | ||
| 568 | ADD_UNDERSCORE(finite) | ||
| 569 | ADD_UNDERSCORE(fpclass) | ||
| 570 | ADD_UNDERSCORE(fputwchar) | ||
| 571 | #ifndef CRTAPP | ||
| 572 | ADD_UNDERSCORE(heapwalk) | ||
| 573 | #endif | ||
| 574 | ADD_DOUBLE_UNDERSCORE(iscsymf) | ||
| 575 | ADD_DOUBLE_UNDERSCORE(iscsym) | ||
| 576 | #ifndef CRTAPP | ||
| 577 | ADD_UNDERSCORE(searchenv) | ||
| 578 | #endif | ||
| 579 | ADD_UNDERSCORE(stricoll) | ||
| 580 | #ifndef UCRTBASE | ||
| 581 | ADD_UNDERSCORE(vsnprintf_s) | ||
| 582 | #endif | ||
| 583 | #ifndef CRTAPP | ||
| 584 | ADD_UNDERSCORE(wpopen) | ||
| 585 | #endif | ||
lib/libc/mingw/def-include/func.def.in+26| ... | @@ -1,3 +1,6 @@ | ... | @@ -1,3 +1,6 @@ |
| 1 | #ifndef FUNC_DEF_IN | ||
| 2 | #define FUNC_DEF_IN | ||
| 3 | |||
| 1 | // F32 - function available on all 32 bit architectures | 4 | // F32 - function available on all 32 bit architectures |
| 2 | // F64 - function available on all 64 bit architectures | 5 | // F64 - function available on all 64 bit architectures |
| 3 | // F_X86_ANY - function available on i386 and x86_64 | 6 | // F_X86_ANY - function available on i386 and x86_64 |
| ... | @@ -7,25 +10,35 @@ | ... | @@ -7,25 +10,35 @@ |
| 7 | // F_ARM64 - function available only on arm64 | 10 | // F_ARM64 - function available only on arm64 |
| 8 | // F_ARM_ANY - function available on 32 and 64 bit arm | 11 | // F_ARM_ANY - function available on 32 and 64 bit arm |
| 9 | // F_NON_I386 - function available on everything but i386 | 12 | // F_NON_I386 - function available on everything but i386 |
| 13 | // F_NON_X64 - function available on everything but x86_64 | ||
| 14 | // F_NON_ARM64 - function available on everything but arm64 | ||
| 10 | #if defined(DEF_X64) | 15 | #if defined(DEF_X64) |
| 11 | #define F64(x) x | 16 | #define F64(x) x |
| 12 | #define F_X64(x) x | 17 | #define F_X64(x) x |
| 13 | #define F_X86_ANY(x) x | 18 | #define F_X86_ANY(x) x |
| 14 | #define F_NON_I386(x) x | 19 | #define F_NON_I386(x) x |
| 20 | #define F_NON_ARM64(x) x | ||
| 15 | #elif defined(DEF_I386) | 21 | #elif defined(DEF_I386) |
| 16 | #define F32(x) x | 22 | #define F32(x) x |
| 17 | #define F_I386(x) x | 23 | #define F_I386(x) x |
| 18 | #define F_X86_ANY(x) x | 24 | #define F_X86_ANY(x) x |
| 25 | #define F_NON_X64(x) x | ||
| 26 | #define F_NON_ARM64(x) x | ||
| 19 | #elif defined(DEF_ARM32) | 27 | #elif defined(DEF_ARM32) |
| 20 | #define F32(x) x | 28 | #define F32(x) x |
| 21 | #define F_ARM32(x) x | 29 | #define F_ARM32(x) x |
| 22 | #define F_ARM_ANY(x) x | 30 | #define F_ARM_ANY(x) x |
| 23 | #define F_NON_I386(x) x | 31 | #define F_NON_I386(x) x |
| 32 | #define F_NON_X64(x) x | ||
| 33 | #define F_NON_ARM64(x) x | ||
| 24 | #elif defined(DEF_ARM64) | 34 | #elif defined(DEF_ARM64) |
| 25 | #define F64(x) x | 35 | #define F64(x) x |
| 26 | #define F_ARM64(x) x | 36 | #define F_ARM64(x) x |
| 27 | #define F_ARM_ANY(x) x | 37 | #define F_ARM_ANY(x) x |
| 28 | #define F_NON_I386(x) x | 38 | #define F_NON_I386(x) x |
| 39 | #define F_NON_X64(x) x | ||
| 40 | #else | ||
| 41 | #error No DEF_<ARCH> is defined | ||
| 29 | #endif | 42 | #endif |
| 30 | 43 | ||
| 31 | #ifndef F32 | 44 | #ifndef F32 |
| ... | @@ -55,3 +68,16 @@ | ... | @@ -55,3 +68,16 @@ |
| 55 | #ifndef F_NON_I386 | 68 | #ifndef F_NON_I386 |
| 56 | #define F_NON_I386(x) | 69 | #define F_NON_I386(x) |
| 57 | #endif | 70 | #endif |
| 71 | #ifndef F_NON_X64 | ||
| 72 | #define F_NON_X64(x) | ||
| 73 | #endif | ||
| 74 | #ifndef F_NON_ARM64 | ||
| 75 | #define F_NON_ARM64(x) | ||
| 76 | #endif | ||
| 77 | |||
| 78 | #if defined(DEF_I386) | ||
| 79 | #define STDCALL_DECORATED_EXPORT(symbol) symbol == _ ## symbol | ||
| 80 | #define FASTCALL_DECORATED_EXPORT(symbol) symbol == symbol | ||
| 81 | #endif | ||
| 82 | |||
| 83 | #endif // FUNC_DEF_IN |
lib/libc/mingw/def-include/msvcrt-common.def.in deleted-154| ... | @@ -1,154 +0,0 @@ | ||
| 1 | #include "func.def.in" | ||
| 2 | |||
| 3 | #define ADD_UNDERSCORE(symbol) symbol == _ ## symbol | ||
| 4 | #define ADD_DOUBLE_UNDERSCORE(symbol) symbol == __ ## symbol | ||
| 5 | |||
| 6 | ADD_DOUBLE_UNDERSCORE(iscsymf) | ||
| 7 | ADD_DOUBLE_UNDERSCORE(iscsym) | ||
| 8 | ADD_DOUBLE_UNDERSCORE(isascii) | ||
| 9 | ADD_DOUBLE_UNDERSCORE(toascii) | ||
| 10 | |||
| 11 | wcscmpi == _wcsicmp | ||
| 12 | strcasecmp == _stricmp | ||
| 13 | strncasecmp == _strnicmp | ||
| 14 | |||
| 15 | #ifdef UCRTBASE | ||
| 16 | ; access is provided as an alias for __mingw_access | ||
| 17 | #else | ||
| 18 | ADD_UNDERSCORE(access) | ||
| 19 | #endif | ||
| 20 | ADD_UNDERSCORE(chdir) | ||
| 21 | ADD_UNDERSCORE(chmod) | ||
| 22 | ADD_UNDERSCORE(chsize) | ||
| 23 | ADD_UNDERSCORE(close) | ||
| 24 | ADD_UNDERSCORE(creat) | ||
| 25 | ADD_UNDERSCORE(cwait) | ||
| 26 | ADD_UNDERSCORE(dup) | ||
| 27 | ADD_UNDERSCORE(dup2) | ||
| 28 | ADD_UNDERSCORE(ecvt) | ||
| 29 | ADD_UNDERSCORE(eof) | ||
| 30 | ADD_UNDERSCORE(execl) | ||
| 31 | ADD_UNDERSCORE(execle) | ||
| 32 | ADD_UNDERSCORE(execlp) | ||
| 33 | ADD_UNDERSCORE(execlpe) | ||
| 34 | ADD_UNDERSCORE(execv) | ||
| 35 | ADD_UNDERSCORE(execve) | ||
| 36 | ADD_UNDERSCORE(execvp) | ||
| 37 | ADD_UNDERSCORE(execvpe) | ||
| 38 | ADD_UNDERSCORE(fcloseall) | ||
| 39 | ADD_UNDERSCORE(fcvt) | ||
| 40 | ADD_UNDERSCORE(fdopen) | ||
| 41 | ADD_UNDERSCORE(fgetchar) | ||
| 42 | ADD_UNDERSCORE(fgetwchar) | ||
| 43 | ADD_UNDERSCORE(filelength) | ||
| 44 | ADD_UNDERSCORE(fileno) | ||
| 45 | ; Alias fpreset is set in CRT_fp10.c and CRT_fp8.c. | ||
| 46 | ; ADD_UNDERSCORE(fpreset) | ||
| 47 | ADD_UNDERSCORE(fputchar) | ||
| 48 | ADD_UNDERSCORE(fputwchar) | ||
| 49 | ; ADD_UNDERSCORE(fstat) | ||
| 50 | ; ADD_UNDERSCORE(ftime) | ||
| 51 | ADD_UNDERSCORE(gcvt) | ||
| 52 | ADD_UNDERSCORE(getch) | ||
| 53 | ADD_UNDERSCORE(getche) | ||
| 54 | ADD_UNDERSCORE(getcwd) | ||
| 55 | #ifdef UCRTBASE | ||
| 56 | ; ucrtbase.dll has got _getpid for all archs | ||
| 57 | ADD_UNDERSCORE(getpid) | ||
| 58 | #elif !defined(NO_GETPID_ALIAS) | ||
| 59 | ; msvcrt.dll for arm/arm64 lacks _getpid | ||
| 60 | F_X86_ANY(ADD_UNDERSCORE(getpid)) | ||
| 61 | #endif | ||
| 62 | ADD_UNDERSCORE(getw) | ||
| 63 | ADD_UNDERSCORE(heapwalk) | ||
| 64 | ADD_UNDERSCORE(isatty) | ||
| 65 | ADD_UNDERSCORE(itoa) | ||
| 66 | ADD_UNDERSCORE(kbhit) | ||
| 67 | ADD_UNDERSCORE(lfind) | ||
| 68 | ADD_UNDERSCORE(lsearch) | ||
| 69 | ADD_UNDERSCORE(lseek) | ||
| 70 | ADD_UNDERSCORE(ltoa) | ||
| 71 | ADD_UNDERSCORE(memccpy) | ||
| 72 | ADD_UNDERSCORE(memicmp) | ||
| 73 | ADD_UNDERSCORE(mkdir) | ||
| 74 | ADD_UNDERSCORE(mktemp) | ||
| 75 | ADD_UNDERSCORE(open) | ||
| 76 | ADD_UNDERSCORE(pclose) | ||
| 77 | ADD_UNDERSCORE(popen) | ||
| 78 | ADD_UNDERSCORE(putch) | ||
| 79 | ADD_UNDERSCORE(putenv) | ||
| 80 | ADD_UNDERSCORE(putw) | ||
| 81 | ADD_UNDERSCORE(read) | ||
| 82 | ADD_UNDERSCORE(rmdir) | ||
| 83 | ADD_UNDERSCORE(rmtmp) | ||
| 84 | ADD_UNDERSCORE(searchenv) | ||
| 85 | ADD_UNDERSCORE(setmode) | ||
| 86 | ADD_UNDERSCORE(sopen) | ||
| 87 | ADD_UNDERSCORE(spawnl) | ||
| 88 | ADD_UNDERSCORE(spawnle) | ||
| 89 | ADD_UNDERSCORE(spawnlp) | ||
| 90 | ADD_UNDERSCORE(spawnlpe) | ||
| 91 | ADD_UNDERSCORE(spawnv) | ||
| 92 | ADD_UNDERSCORE(spawnve) | ||
| 93 | ADD_UNDERSCORE(spawnvp) | ||
| 94 | ADD_UNDERSCORE(spawnvpe) | ||
| 95 | ; ADD_UNDERSCORE(stat) | ||
| 96 | #ifndef UCRTBASE | ||
| 97 | ADD_UNDERSCORE(strcmpi) | ||
| 98 | #endif | ||
| 99 | ADD_UNDERSCORE(strdup) | ||
| 100 | ADD_UNDERSCORE(stricmp) | ||
| 101 | ADD_UNDERSCORE(stricoll) | ||
| 102 | ADD_UNDERSCORE(strlwr) | ||
| 103 | ADD_UNDERSCORE(strnicmp) | ||
| 104 | ADD_UNDERSCORE(strnset) | ||
| 105 | ADD_UNDERSCORE(strrev) | ||
| 106 | ADD_UNDERSCORE(strset) | ||
| 107 | ADD_UNDERSCORE(strupr) | ||
| 108 | ADD_UNDERSCORE(swab) | ||
| 109 | ADD_UNDERSCORE(tell) | ||
| 110 | ADD_UNDERSCORE(tempnam) | ||
| 111 | #ifndef UCRTBASE | ||
| 112 | ADD_UNDERSCORE(tzset) | ||
| 113 | #endif | ||
| 114 | ADD_UNDERSCORE(umask) | ||
| 115 | ADD_UNDERSCORE(ungetch) | ||
| 116 | ADD_UNDERSCORE(unlink) | ||
| 117 | #ifndef UCRTBASE | ||
| 118 | ADD_UNDERSCORE(utime) | ||
| 119 | #endif | ||
| 120 | ADD_UNDERSCORE(wcsdup) | ||
| 121 | ADD_UNDERSCORE(wcsicmp) | ||
| 122 | ADD_UNDERSCORE(wcsicoll) | ||
| 123 | ADD_UNDERSCORE(wcslwr) | ||
| 124 | ADD_UNDERSCORE(wcsnicmp) | ||
| 125 | ADD_UNDERSCORE(wcsnset) | ||
| 126 | ADD_UNDERSCORE(wcsrev) | ||
| 127 | ADD_UNDERSCORE(wcsset) | ||
| 128 | ADD_UNDERSCORE(wcsupr) | ||
| 129 | ADD_UNDERSCORE(wpopen) | ||
| 130 | ADD_UNDERSCORE(write) | ||
| 131 | ; non-ANSI functions declared in math.h | ||
| 132 | ADD_UNDERSCORE(j0) | ||
| 133 | ADD_UNDERSCORE(j1) | ||
| 134 | ADD_UNDERSCORE(jn) | ||
| 135 | ADD_UNDERSCORE(y0) | ||
| 136 | ADD_UNDERSCORE(y1) | ||
| 137 | ADD_UNDERSCORE(yn) | ||
| 138 | ADD_UNDERSCORE(chgsign) | ||
| 139 | ; ADD_UNDERSCORE(scalb) | ||
| 140 | ADD_UNDERSCORE(finite) | ||
| 141 | ADD_UNDERSCORE(fpclass) | ||
| 142 | ; C99 functions | ||
| 143 | ; ADD_UNDERSCORE(cabs) | ||
| 144 | ADD_UNDERSCORE(hypot) | ||
| 145 | ; ADD_UNDERSCORE(logb) | ||
| 146 | ADD_UNDERSCORE(nextafter) | ||
| 147 | |||
| 148 | #ifndef UCRTBASE | ||
| 149 | daylight DATA == _daylight | ||
| 150 | timezone DATA == _timezone | ||
| 151 | tzname DATA == _tzname | ||
| 152 | |||
| 153 | ADD_UNDERSCORE(vsnprintf_s) | ||
| 154 | #endif | ||
lib/libc/mingw/include/internal.h+14-10| ... | @@ -59,7 +59,7 @@ extern "C" { | ... | @@ -59,7 +59,7 @@ extern "C" { |
| 59 | #define _tm_unicode_safe(i) (_pioinfo_safe(i)->unicode) | 59 | #define _tm_unicode_safe(i) (_pioinfo_safe(i)->unicode) |
| 60 | 60 | ||
| 61 | #ifndef __badioinfo | 61 | #ifndef __badioinfo |
| 62 | extern ioinfo ** __MINGW_IMP_SYMBOL(__badioinfo)[]; | 62 | extern ioinfo * __MINGW_IMP_SYMBOL(__badioinfo); |
| 63 | #define __badioinfo (* __MINGW_IMP_SYMBOL(__badioinfo)) | 63 | #define __badioinfo (* __MINGW_IMP_SYMBOL(__badioinfo)) |
| 64 | #endif | 64 | #endif |
| 65 | 65 | ||
| ... | @@ -96,17 +96,13 @@ extern "C" { | ... | @@ -96,17 +96,13 @@ extern "C" { |
| 96 | extern int _dowildcard; | 96 | extern int _dowildcard; |
| 97 | extern int _newmode; | 97 | extern int _newmode; |
| 98 | 98 | ||
| 99 | #ifndef __winitenv | 99 | _CRTIMP wchar_t *** __cdecl __p___winitenv(void); |
| 100 | extern wchar_t *** __MINGW_IMP_SYMBOL(__winitenv); | 100 | #define __winitenv (*__p___winitenv()) |
| 101 | #define __winitenv (* __MINGW_IMP_SYMBOL(__winitenv)) | ||
| 102 | #endif | ||
| 103 | 101 | ||
| 104 | #if !defined(__initenv) | 102 | _CRTIMP char *** __cdecl __p___initenv(void); |
| 105 | extern char *** __MINGW_IMP_SYMBOL(__initenv); | 103 | #define __initenv (*__p___initenv()) |
| 106 | #define __initenv (* __MINGW_IMP_SYMBOL(__initenv)) | ||
| 107 | #endif | ||
| 108 | 104 | ||
| 109 | _CRTIMP void __cdecl _amsg_exit(int); | 105 | _CRTIMP void __cdecl _amsg_exit(int) __MINGW_ATTRIB_NORETURN; |
| 110 | 106 | ||
| 111 | int __CRTDECL _setargv(void); | 107 | int __CRTDECL _setargv(void); |
| 112 | int __CRTDECL __setargv(void); | 108 | int __CRTDECL __setargv(void); |
| ... | @@ -150,6 +146,14 @@ extern char *** __MINGW_IMP_SYMBOL(__initenv); | ... | @@ -150,6 +146,14 @@ extern char *** __MINGW_IMP_SYMBOL(__initenv); |
| 150 | PIMAGE_SECTION_HEADER __cdecl _FindPESection (PBYTE pImageBase, DWORD_PTR rva); | 146 | PIMAGE_SECTION_HEADER __cdecl _FindPESection (PBYTE pImageBase, DWORD_PTR rva); |
| 151 | BOOL __cdecl _IsNonwritableInCurrentImage (PBYTE pTarget); | 147 | BOOL __cdecl _IsNonwritableInCurrentImage (PBYTE pTarget); |
| 152 | 148 | ||
| 149 | #if defined(__SSE__) | ||
| 150 | # define __mingw_has_sse() 1 | ||
| 151 | #elif defined(__i386__) | ||
| 152 | int __mingw_has_sse(void); | ||
| 153 | #else | ||
| 154 | # define __mingw_has_sse() 0 | ||
| 155 | #endif | ||
| 156 | |||
| 153 | #ifdef __cplusplus | 157 | #ifdef __cplusplus |
| 154 | } | 158 | } |
| 155 | #endif | 159 | #endif |
lib/libc/mingw/lib-common/api-ms-win-crt-convert-l1-1-0.def.in+4-6| ... | @@ -47,7 +47,7 @@ _strtoi64 | ... | @@ -47,7 +47,7 @@ _strtoi64 |
| 47 | _strtoi64_l | 47 | _strtoi64_l |
| 48 | _strtoimax_l | 48 | _strtoimax_l |
| 49 | _strtol_l | 49 | _strtol_l |
| 50 | _strtold_l | 50 | F_ARM_ANY(_strtold_l) ; Can't use long double functions from the CRT on x86 |
| 51 | _strtoll_l | 51 | _strtoll_l |
| 52 | _strtoui64 | 52 | _strtoui64 |
| 53 | _strtoui64_l | 53 | _strtoui64_l |
| ... | @@ -68,7 +68,7 @@ _wcstoi64 | ... | @@ -68,7 +68,7 @@ _wcstoi64 |
| 68 | _wcstoi64_l | 68 | _wcstoi64_l |
| 69 | _wcstoimax_l | 69 | _wcstoimax_l |
| 70 | _wcstol_l | 70 | _wcstol_l |
| 71 | _wcstold_l | 71 | F_ARM_ANY(_wcstold_l) ; Can't use long double functions from the CRT on x86 |
| 72 | _wcstoll_l | 72 | _wcstoll_l |
| 73 | _wcstombs_l | 73 | _wcstombs_l |
| 74 | _wcstombs_s_l | 74 | _wcstombs_s_l |
| ... | @@ -108,8 +108,7 @@ strtod | ... | @@ -108,8 +108,7 @@ strtod |
| 108 | strtof | 108 | strtof |
| 109 | strtoimax | 109 | strtoimax |
| 110 | strtol | 110 | strtol |
| 111 | ; Can't use long double functions from the CRT on x86 | 111 | F_ARM_ANY(strtold) ; Can't use long double functions from the CRT on x86 |
| 112 | F_ARM_ANY(strtold) | ||
| 113 | strtoll | 112 | strtoll |
| 114 | strtoul | 113 | strtoul |
| 115 | strtoull | 114 | strtoull |
| ... | @@ -122,8 +121,7 @@ wcstod | ... | @@ -122,8 +121,7 @@ wcstod |
| 122 | wcstof | 121 | wcstof |
| 123 | wcstoimax | 122 | wcstoimax |
| 124 | wcstol | 123 | wcstol |
| 125 | ; Can't use long double functions from the CRT on x86 | 124 | F_ARM_ANY(wcstold) ; Can't use long double functions from the CRT on x86 |
| 126 | F_ARM_ANY(wcstold) | ||
| 127 | wcstoll | 125 | wcstoll |
| 128 | wcstombs | 126 | wcstombs |
| 129 | wcstombs_s | 127 | wcstombs_s |
lib/libc/mingw/lib-common/api-ms-win-crt-filesystem-l1-1-0.def deleted-79| ... | @@ -1,79 +0,0 @@ | ||
| 1 | LIBRARY api-ms-win-crt-filesystem-l1-1-0 | ||
| 2 | |||
| 3 | EXPORTS | ||
| 4 | |||
| 5 | _access | ||
| 6 | ; access is provided as an alias for __mingw_access | ||
| 7 | ; access == _access | ||
| 8 | _access_s | ||
| 9 | _chdir | ||
| 10 | chdir == _chdir | ||
| 11 | _chdrive | ||
| 12 | _chmod | ||
| 13 | chmod == _chmod | ||
| 14 | _findclose | ||
| 15 | _findfirst == _findfirst64 | ||
| 16 | _findfirst32 | ||
| 17 | _findfirst32i64 | ||
| 18 | _findfirst64 | ||
| 19 | _findfirst64i32 | ||
| 20 | _findnext == _findnext64 | ||
| 21 | _findnext32 | ||
| 22 | _findnext32i64 | ||
| 23 | _findnext64 | ||
| 24 | _findnext64i32 | ||
| 25 | _fstat32 | ||
| 26 | _fstat32i64 | ||
| 27 | _fstat64 | ||
| 28 | _fstat64i32 | ||
| 29 | _fullpath | ||
| 30 | _getdiskfree | ||
| 31 | _getdrive | ||
| 32 | _getdrives | ||
| 33 | _lock_file | ||
| 34 | _makepath | ||
| 35 | _makepath_s | ||
| 36 | _mkdir | ||
| 37 | mkdir == _mkdir | ||
| 38 | _rmdir | ||
| 39 | rmdir == _rmdir | ||
| 40 | _splitpath | ||
| 41 | _splitpath_s | ||
| 42 | _stat32 | ||
| 43 | _stat32i64 | ||
| 44 | _stat64 | ||
| 45 | _stat64i32 | ||
| 46 | _umask | ||
| 47 | umask == _umask | ||
| 48 | _umask_s | ||
| 49 | _unlink | ||
| 50 | unlink == _unlink | ||
| 51 | _unlock_file | ||
| 52 | _waccess | ||
| 53 | _waccess_s | ||
| 54 | _wchdir | ||
| 55 | _wchmod | ||
| 56 | _wfindfirst32 | ||
| 57 | _wfindfirst32i64 | ||
| 58 | _wfindfirst64 | ||
| 59 | _wfindfirst64i32 | ||
| 60 | _wfindnext32 | ||
| 61 | _wfindnext32i64 | ||
| 62 | _wfindnext64 | ||
| 63 | _wfindnext64i32 | ||
| 64 | _wfullpath | ||
| 65 | _wmakepath | ||
| 66 | _wmakepath_s | ||
| 67 | _wmkdir | ||
| 68 | _wremove | ||
| 69 | _wrename | ||
| 70 | _wrmdir | ||
| 71 | _wsplitpath | ||
| 72 | _wsplitpath_s | ||
| 73 | _wstat32 | ||
| 74 | _wstat32i64 | ||
| 75 | _wstat64 | ||
| 76 | _wstat64i32 | ||
| 77 | _wunlink | ||
| 78 | remove | ||
| 79 | rename | ||
lib/libc/mingw/lib-common/api-ms-win-crt-filesystem-l1-1-0.def.in created+109| ... | @@ -0,0 +1,109 @@ | ||
| 1 | LIBRARY api-ms-win-crt-filesystem-l1-1-0 | ||
| 2 | |||
| 3 | EXPORTS | ||
| 4 | |||
| 5 | #include "func.def.in" | ||
| 6 | |||
| 7 | _access | ||
| 8 | ; access is provided as an alias for __mingw_access | ||
| 9 | ; access == _access | ||
| 10 | _access_s | ||
| 11 | _chdir | ||
| 12 | chdir == _chdir | ||
| 13 | _chdrive | ||
| 14 | _chmod | ||
| 15 | chmod == _chmod | ||
| 16 | _findclose | ||
| 17 | F32(_findfirst == _findfirst32) | ||
| 18 | F64(_findfirst == _findfirst64i32) | ||
| 19 | F32(_findfirsti64 == _findfirst32i64) | ||
| 20 | F64(_findfirsti64 == _findfirst64) | ||
| 21 | _findfirst32 | ||
| 22 | _findfirst32i64 | ||
| 23 | _findfirst64 | ||
| 24 | _findfirst64i32 | ||
| 25 | F32(_findnext == _findnext32) | ||
| 26 | F64(_findnext == _findnext64i32) | ||
| 27 | F32(_findnexti64 == _findnext32i64) | ||
| 28 | F64(_findnexti64 == _findnext64) | ||
| 29 | _findnext32 | ||
| 30 | _findnext32i64 | ||
| 31 | _findnext64 | ||
| 32 | _findnext64i32 | ||
| 33 | F32(fstat == _fstat32) | ||
| 34 | F64(fstat == _fstat64i32) | ||
| 35 | F32(_fstat == _fstat32) | ||
| 36 | F64(_fstat == _fstat64i32) | ||
| 37 | F32(_fstati64 == _fstat32i64) | ||
| 38 | F64(_fstati64 == _fstat64) | ||
| 39 | _fstat32 | ||
| 40 | _fstat32i64 | ||
| 41 | _fstat64 | ||
| 42 | _fstat64i32 | ||
| 43 | _fullpath | ||
| 44 | _getdiskfree | ||
| 45 | _getdrive | ||
| 46 | _getdrives | ||
| 47 | _lock_file | ||
| 48 | _makepath | ||
| 49 | _makepath_s | ||
| 50 | _mkdir | ||
| 51 | mkdir == _mkdir | ||
| 52 | _rmdir | ||
| 53 | rmdir == _rmdir | ||
| 54 | _splitpath | ||
| 55 | _splitpath_s | ||
| 56 | F32(_stat == _stat32) | ||
| 57 | F64(_stat == _stat64i32) | ||
| 58 | F32(_stati64 == _stat32i64) | ||
| 59 | F64(_stati64 == _stat64) | ||
| 60 | _stat32 | ||
| 61 | _stat32i64 | ||
| 62 | _stat64 | ||
| 63 | _stat64i32 | ||
| 64 | _umask | ||
| 65 | umask == _umask | ||
| 66 | _umask_s | ||
| 67 | _unlink | ||
| 68 | unlink == _unlink | ||
| 69 | _unlock_file | ||
| 70 | _waccess | ||
| 71 | _waccess_s | ||
| 72 | _wchdir | ||
| 73 | _wchmod | ||
| 74 | F32(_wfindfirst == _wfindfirst32) | ||
| 75 | F64(_wfindfirst == _wfindfirst64i32) | ||
| 76 | F32(_wfindfirsti64 == _wfindfirst32i64) | ||
| 77 | F64(_wfindfirsti64 == _wfindfirst64) | ||
| 78 | _wfindfirst32 | ||
| 79 | _wfindfirst32i64 | ||
| 80 | _wfindfirst64 | ||
| 81 | _wfindfirst64i32 | ||
| 82 | F32(_wfindnext == _wfindnext32) | ||
| 83 | F64(_wfindnext == _wfindnext64i32) | ||
| 84 | F32(_wfindnexti64 == _wfindnext32i64) | ||
| 85 | F64(_wfindnexti64 == _wfindnext64) | ||
| 86 | _wfindnext32 | ||
| 87 | _wfindnext32i64 | ||
| 88 | _wfindnext64 | ||
| 89 | _wfindnext64i32 | ||
| 90 | _wfullpath | ||
| 91 | _wmakepath | ||
| 92 | _wmakepath_s | ||
| 93 | _wmkdir | ||
| 94 | _wremove | ||
| 95 | _wrename | ||
| 96 | _wrmdir | ||
| 97 | _wsplitpath | ||
| 98 | _wsplitpath_s | ||
| 99 | F32(_wstat == _wstat32) | ||
| 100 | F64(_wstat == _wstat64i32) | ||
| 101 | F32(_wstati64 == _wstat32i64) | ||
| 102 | F64(_wstati64 == _wstat64) | ||
| 103 | _wstat32 | ||
| 104 | _wstat32i64 | ||
| 105 | _wstat64 | ||
| 106 | _wstat64i32 | ||
| 107 | _wunlink | ||
| 108 | remove | ||
| 109 | rename | ||
lib/libc/mingw/lib-common/api-ms-win-crt-math-l1-1-0.def.in+61-61| ... | @@ -150,13 +150,13 @@ F_NON_I386(acosf) | ... | @@ -150,13 +150,13 @@ F_NON_I386(acosf) |
| 150 | F_ARM_ANY(acosl == acos) | 150 | F_ARM_ANY(acosl == acos) |
| 151 | acosh | 151 | acosh |
| 152 | acoshf | 152 | acoshf |
| 153 | acoshl F_X86_ANY(DATA) | 153 | F_ARM_ANY(acoshl) ; Can't use long double functions from the CRT on x86 |
| 154 | asin | 154 | asin |
| 155 | F_NON_I386(asinf) | 155 | F_NON_I386(asinf) |
| 156 | F_ARM_ANY(asinl == asin) | 156 | F_ARM_ANY(asinl == asin) |
| 157 | asinh | 157 | asinh |
| 158 | asinhf | 158 | asinhf |
| 159 | asinhl F_X86_ANY(DATA) | 159 | F_ARM_ANY(asinhl) ; Can't use long double functions from the CRT on x86 |
| 160 | atan | 160 | atan |
| 161 | atan2 | 161 | atan2 |
| 162 | F_NON_I386(atan2f) | 162 | F_NON_I386(atan2f) |
| ... | @@ -165,61 +165,61 @@ F_NON_I386(atanf) | ... | @@ -165,61 +165,61 @@ F_NON_I386(atanf) |
| 165 | F_ARM_ANY(atanl == atan) | 165 | F_ARM_ANY(atanl == atan) |
| 166 | atanh | 166 | atanh |
| 167 | atanhf | 167 | atanhf |
| 168 | atanhl F_X86_ANY(DATA) | 168 | F_ARM_ANY(atanhl) ; Can't use long double functions from the CRT on x86 |
| 169 | cabs | 169 | cabs |
| 170 | cabsf | 170 | cabsf |
| 171 | cabsl | 171 | F_ARM_ANY(cabsl) ; Can't use long double functions from the CRT on x86 |
| 172 | cacos | 172 | cacos |
| 173 | cacosf | 173 | cacosf |
| 174 | cacosh | 174 | cacosh |
| 175 | cacoshf | 175 | cacoshf |
| 176 | cacoshl | 176 | F_ARM_ANY(cacoshl) ; Can't use long double functions from the CRT on x86 |
| 177 | cacosl | 177 | F_ARM_ANY(cacosl) ; Can't use long double functions from the CRT on x86 |
| 178 | carg | 178 | carg |
| 179 | cargf | 179 | cargf |
| 180 | cargl | 180 | F_ARM_ANY(cargl) ; Can't use long double functions from the CRT on x86 |
| 181 | casin | 181 | casin |
| 182 | casinf | 182 | casinf |
| 183 | casinh | 183 | casinh |
| 184 | casinhf | 184 | casinhf |
| 185 | casinhl | 185 | F_ARM_ANY(casinhl) ; Can't use long double functions from the CRT on x86 |
| 186 | casinl | 186 | F_ARM_ANY(casinl) ; Can't use long double functions from the CRT on x86 |
| 187 | catan | 187 | catan |
| 188 | catanf | 188 | catanf |
| 189 | catanh | 189 | catanh |
| 190 | catanhf | 190 | catanhf |
| 191 | catanhl | 191 | F_ARM_ANY(catanhl) ; Can't use long double functions from the CRT on x86 |
| 192 | catanl | 192 | F_ARM_ANY(catanl) ; Can't use long double functions from the CRT on x86 |
| 193 | cbrt | 193 | cbrt |
| 194 | cbrtf | 194 | cbrtf |
| 195 | cbrtl F_X86_ANY(DATA) | 195 | F_ARM_ANY(cbrtl) ; Can't use long double functions from the CRT on x86 |
| 196 | ccos | 196 | ccos |
| 197 | ccosf | 197 | ccosf |
| 198 | ccosh | 198 | ccosh |
| 199 | ccoshf | 199 | ccoshf |
| 200 | ccoshl | 200 | F_ARM_ANY(ccoshl) ; Can't use long double functions from the CRT on x86 |
| 201 | ccosl | 201 | F_ARM_ANY(ccosl) ; Can't use long double functions from the CRT on x86 |
| 202 | ceil | 202 | ceil |
| 203 | F_NON_I386(ceilf) | 203 | F_NON_I386(ceilf) |
| 204 | F_ARM_ANY(ceill == ceil) | 204 | F_ARM_ANY(ceill == ceil) |
| 205 | cexp | 205 | cexp |
| 206 | cexpf | 206 | cexpf |
| 207 | cexpl | 207 | F_ARM_ANY(cexpl) ; Can't use long double functions from the CRT on x86 |
| 208 | cimag | 208 | cimag |
| 209 | cimagf | 209 | cimagf |
| 210 | cimagl | 210 | F_ARM_ANY(cimagl) ; Can't use long double functions from the CRT on x86 |
| 211 | clog | 211 | clog |
| 212 | clog10 | 212 | clog10 |
| 213 | clog10f | 213 | clog10f |
| 214 | clog10l | 214 | F_ARM_ANY(clog10l) ; Can't use long double functions from the CRT on x86 |
| 215 | clogf | 215 | clogf |
| 216 | clogl | 216 | F_ARM_ANY(clogl) ; Can't use long double functions from the CRT on x86 |
| 217 | conj | 217 | conj |
| 218 | conjf | 218 | conjf |
| 219 | conjl | 219 | F_ARM_ANY(conjl) ; Can't use long double functions from the CRT on x86 |
| 220 | copysign | 220 | copysign |
| 221 | copysignf | 221 | copysignf |
| 222 | copysignl F_X86_ANY(DATA) | 222 | F_ARM_ANY(copysignl) ; Can't use long double functions from the CRT on x86 |
| 223 | cos | 223 | cos |
| 224 | F_NON_I386(cosf) | 224 | F_NON_I386(cosf) |
| 225 | F_ARM_ANY(cosl == cos) | 225 | F_ARM_ANY(cosl == cos) |
| ... | @@ -227,60 +227,60 @@ cosh | ... | @@ -227,60 +227,60 @@ cosh |
| 227 | F_NON_I386(coshf) | 227 | F_NON_I386(coshf) |
| 228 | cpow | 228 | cpow |
| 229 | cpowf | 229 | cpowf |
| 230 | cpowl | 230 | F_ARM_ANY(cpowl) ; Can't use long double functions from the CRT on x86 |
| 231 | cproj | 231 | cproj |
| 232 | cprojf | 232 | cprojf |
| 233 | cprojl | 233 | F_ARM_ANY(cprojl) ; Can't use long double functions from the CRT on x86 |
| 234 | creal | 234 | creal |
| 235 | crealf | 235 | crealf |
| 236 | creall | 236 | F_ARM_ANY(creall) ; Can't use long double functions from the CRT on x86 |
| 237 | csin | 237 | csin |
| 238 | csinf | 238 | csinf |
| 239 | csinh | 239 | csinh |
| 240 | csinhf | 240 | csinhf |
| 241 | csinhl | 241 | F_ARM_ANY(csinhl) ; Can't use long double functions from the CRT on x86 |
| 242 | csinl | 242 | F_ARM_ANY(csinl) ; Can't use long double functions from the CRT on x86 |
| 243 | csqrt | 243 | csqrt |
| 244 | csqrtf | 244 | csqrtf |
| 245 | csqrtl | 245 | F_ARM_ANY(csqrtl) ; Can't use long double functions from the CRT on x86 |
| 246 | ctan | 246 | ctan |
| 247 | ctanf | 247 | ctanf |
| 248 | ctanh | 248 | ctanh |
| 249 | ctanhf | 249 | ctanhf |
| 250 | ctanhl | 250 | F_ARM_ANY(ctanhl) ; Can't use long double functions from the CRT on x86 |
| 251 | ctanl | 251 | F_ARM_ANY(ctanl) ; Can't use long double functions from the CRT on x86 |
| 252 | erf | 252 | erf |
| 253 | erfc | 253 | erfc |
| 254 | erfcf | 254 | erfcf |
| 255 | erfcl F_X86_ANY(DATA) | 255 | F_ARM_ANY(erfcl) ; Can't use long double functions from the CRT on x86 |
| 256 | erff | 256 | erff |
| 257 | erfl F_X86_ANY(DATA) | 257 | F_ARM_ANY(erfl) ; Can't use long double functions from the CRT on x86 |
| 258 | exp | 258 | exp |
| 259 | exp2 | 259 | exp2 |
| 260 | exp2f | 260 | exp2f |
| 261 | exp2l F_X86_ANY(DATA) | 261 | F_ARM_ANY(exp2l) ; Can't use long double functions from the CRT on x86 |
| 262 | F_NON_I386(expf) | 262 | F_NON_I386(expf) |
| 263 | F_ARM_ANY(expl == exp) | 263 | F_ARM_ANY(expl == exp) |
| 264 | expm1 | 264 | expm1 |
| 265 | expm1f | 265 | expm1f |
| 266 | expm1l F_X86_ANY(DATA) | 266 | F_ARM_ANY(expm1l) ; Can't use long double functions from the CRT on x86 |
| 267 | fabs | 267 | fabs |
| 268 | F_ARM_ANY(fabsf) | 268 | F_ARM_ANY(fabsf) |
| 269 | fdim | 269 | fdim |
| 270 | fdimf | 270 | fdimf |
| 271 | fdiml F_X86_ANY(DATA) | 271 | F_ARM_ANY(fdiml) ; Can't use long double functions from the CRT on x86 |
| 272 | floor | 272 | floor |
| 273 | F_NON_I386(floorf) | 273 | F_NON_I386(floorf) |
| 274 | F_ARM_ANY(floorl == floor) | 274 | F_ARM_ANY(floorl == floor) |
| 275 | fma | 275 | fma |
| 276 | fmaf | 276 | fmaf |
| 277 | fmal F_X86_ANY(DATA) | 277 | F_ARM_ANY(fmal) ; Can't use long double functions from the CRT on x86 |
| 278 | fmax | 278 | fmax |
| 279 | fmaxf | 279 | fmaxf |
| 280 | fmaxl F_X86_ANY(DATA) | 280 | F_ARM_ANY(fmaxl) ; Can't use long double functions from the CRT on x86 |
| 281 | fmin | 281 | fmin |
| 282 | fminf | 282 | fminf |
| 283 | fminl F_X86_ANY(DATA) | 283 | F_ARM_ANY(fminl) ; Can't use long double functions from the CRT on x86 |
| 284 | fmod | 284 | fmod |
| 285 | F_NON_I386(fmodf) | 285 | F_NON_I386(fmodf) |
| 286 | F_ARM_ANY(fmodl == fmod) | 286 | F_ARM_ANY(fmodl == fmod) |
| ... | @@ -288,80 +288,80 @@ frexp | ... | @@ -288,80 +288,80 @@ frexp |
| 288 | hypot | 288 | hypot |
| 289 | ilogb | 289 | ilogb |
| 290 | ilogbf | 290 | ilogbf |
| 291 | ilogbl F_X86_ANY(DATA) | 291 | F_ARM_ANY(ilogbl) ; Can't use long double functions from the CRT on x86 |
| 292 | ldexp | 292 | ldexp |
| 293 | ; The UCRT lgamma functions don't set/provide the signgam variable like | 293 | ; The UCRT lgamma functions don't set/provide the signgam variable like |
| 294 | ; the mingw ones do. Therefore prefer the libmingwex version instead. | 294 | ; the mingw ones do. Therefore prefer the libmingwex version instead. |
| 295 | lgamma DATA | 295 | lgamma DATA |
| 296 | lgammaf DATA | 296 | lgammaf DATA |
| 297 | lgammal DATA | 297 | F_ARM_ANY(lgammal DATA) ; Can't use long double functions from the CRT on x86 |
| 298 | llrint | 298 | llrint |
| 299 | llrintf | 299 | llrintf |
| 300 | llrintl F_X86_ANY(DATA) | 300 | F_ARM_ANY(llrintl) ; Can't use long double functions from the CRT on x86 |
| 301 | llround | 301 | llround |
| 302 | llroundf | 302 | llroundf |
| 303 | llroundl F_X86_ANY(DATA) | 303 | F_ARM_ANY(llroundl) ; Can't use long double functions from the CRT on x86 |
| 304 | log | 304 | log |
| 305 | log10 | 305 | log10 |
| 306 | F_NON_I386(log10f) | 306 | F_NON_I386(log10f) |
| 307 | F_ARM_ANY(log10l == log10) | 307 | F_ARM_ANY(log10l == log10) |
| 308 | log1p | 308 | log1p |
| 309 | log1pf | 309 | log1pf |
| 310 | log1pl F_X86_ANY(DATA) | 310 | F_ARM_ANY(log1pl) ; Can't use long double functions from the CRT on x86 |
| 311 | log2 | 311 | log2 |
| 312 | log2f | 312 | log2f |
| 313 | log2l F_X86_ANY(DATA) | 313 | F_ARM_ANY(log2l) ; Can't use long double functions from the CRT on x86 |
| 314 | logb | 314 | logb |
| 315 | logbf | 315 | logbf |
| 316 | logbl F_X86_ANY(DATA) | 316 | F_ARM_ANY(logbl) ; Can't use long double functions from the CRT on x86 |
| 317 | F_NON_I386(logf) | 317 | F_NON_I386(logf) |
| 318 | F_ARM_ANY(logl == log) | 318 | F_ARM_ANY(logl == log) |
| 319 | lrint | 319 | lrint |
| 320 | lrintf | 320 | lrintf |
| 321 | lrintl F_X86_ANY(DATA) | 321 | F_ARM_ANY(lrintl) ; Can't use long double functions from the CRT on x86 |
| 322 | lround | 322 | lround |
| 323 | lroundf | 323 | lroundf |
| 324 | lroundl F_X86_ANY(DATA) | 324 | F_ARM_ANY(lroundl) ; Can't use long double functions from the CRT on x86 |
| 325 | modf | 325 | modf |
| 326 | F_NON_I386(modff) | 326 | F_NON_I386(modff) |
| 327 | nan | 327 | nan |
| 328 | nanf | 328 | nanf |
| 329 | nanl F_X86_ANY(DATA) | 329 | F_ARM_ANY(nanl) ; Can't use long double functions from the CRT on x86 |
| 330 | nearbyint | 330 | nearbyint |
| 331 | nearbyintf | 331 | nearbyintf |
| 332 | nearbyintl F_X86_ANY(DATA) | 332 | F_ARM_ANY(nearbyintl) ; Can't use long double functions from the CRT on x86 |
| 333 | nextafter | 333 | nextafter |
| 334 | nextafterf | 334 | nextafterf |
| 335 | nextafterl F_X86_ANY(DATA) | 335 | F_ARM_ANY(nextafterl) ; Can't use long double functions from the CRT on x86 |
| 336 | ; All of the nexttoward functions take the second parameter as long doubke, | 336 | ; All of the nexttoward functions take the second parameter as long double, |
| 337 | ; making them unusable for x86. | 337 | ; making them unusable for x86. |
| 338 | nexttoward F_X86_ANY(DATA) | 338 | F_ARM_ANY(nexttoward) ; Can't use long double functions from the CRT on x86 |
| 339 | nexttowardf F_X86_ANY(DATA) | 339 | F_ARM_ANY(nexttowardf) ; Can't use long double functions from the CRT on x86 |
| 340 | nexttowardl F_X86_ANY(DATA) | 340 | F_ARM_ANY(nexttowardl) ; Can't use long double functions from the CRT on x86 |
| 341 | norm | 341 | norm |
| 342 | normf | 342 | normf |
| 343 | norml | 343 | norml |
| 344 | pow | 344 | pow |
| 345 | F_NON_I386(powf) | 345 | F_NON_I386(powf) ; Missing in Wine's ucrtbase.dll for i386 in Wine 9.15 and older |
| 346 | F_ARM_ANY(powl == pow) | 346 | F_ARM_ANY(powl == pow) |
| 347 | remainder | 347 | remainder |
| 348 | remainderf | 348 | remainderf |
| 349 | remainderl F_X86_ANY(DATA) | 349 | F_ARM_ANY(remainderl) ; Can't use long double functions from the CRT on x86 |
| 350 | remquo | 350 | remquo |
| 351 | remquof | 351 | remquof |
| 352 | remquol F_X86_ANY(DATA) | 352 | F_ARM_ANY(remquol) ; Can't use long double functions from the CRT on x86 |
| 353 | rint | 353 | rint |
| 354 | rintf | 354 | rintf |
| 355 | rintl F_X86_ANY(DATA) | 355 | F_ARM_ANY(rintl) ; Can't use long double functions from the CRT on x86 |
| 356 | round | 356 | round |
| 357 | roundf | 357 | roundf |
| 358 | roundl F_X86_ANY(DATA) | 358 | F_ARM_ANY(roundl) ; Can't use long double functions from the CRT on x86 |
| 359 | scalbln | 359 | scalbln |
| 360 | scalblnf | 360 | scalblnf |
| 361 | scalblnl F_X86_ANY(DATA) | 361 | F_ARM_ANY(scalblnl) ; Can't use long double functions from the CRT on x86 |
| 362 | scalbn | 362 | scalbn |
| 363 | scalbnf | 363 | scalbnf |
| 364 | scalbnl F_X86_ANY(DATA) | 364 | F_ARM_ANY(scalbnl) ; Can't use long double functions from the CRT on x86 |
| 365 | sin | 365 | sin |
| 366 | F_NON_I386(sinf) | 366 | F_NON_I386(sinf) |
| 367 | F_ARM_ANY(sinl == sin) | 367 | F_ARM_ANY(sinl == sin) |
| ... | @@ -378,7 +378,7 @@ tanh | ... | @@ -378,7 +378,7 @@ tanh |
| 378 | F_NON_I386(tanhf) | 378 | F_NON_I386(tanhf) |
| 379 | tgamma | 379 | tgamma |
| 380 | tgammaf | 380 | tgammaf |
| 381 | tgammal F_X86_ANY(DATA) | 381 | F_ARM_ANY(tgammal) ; Can't use long double functions from the CRT on x86 |
| 382 | trunc | 382 | trunc |
| 383 | truncf | 383 | truncf |
| 384 | truncl F_X86_ANY(DATA) | 384 | F_ARM_ANY(truncl) ; Can't use long double functions from the CRT on x86 |
lib/libc/mingw/lib-common/api-ms-win-crt-private-l1-1-0.def.in+1-1| ... | @@ -43,7 +43,7 @@ __TypeMatch | ... | @@ -43,7 +43,7 @@ __TypeMatch |
| 43 | __current_exception | 43 | __current_exception |
| 44 | __current_exception_context | 44 | __current_exception_context |
| 45 | __dcrt_get_wide_environment_from_os | 45 | __dcrt_get_wide_environment_from_os |
| 46 | __dcrt_initial_narrow_environment | 46 | __dcrt_initial_narrow_environment DATA |
| 47 | __intrinsic_abnormal_termination | 47 | __intrinsic_abnormal_termination |
| 48 | __intrinsic_setjmp | 48 | __intrinsic_setjmp |
| 49 | F64(__intrinsic_setjmpex) | 49 | F64(__intrinsic_setjmpex) |
lib/libc/mingw/lib-common/api-ms-win-crt-stdio-l1-1-0.def+2| ... | @@ -155,6 +155,7 @@ ferror | ... | @@ -155,6 +155,7 @@ ferror |
| 155 | fflush | 155 | fflush |
| 156 | fgetc | 156 | fgetc |
| 157 | fgetpos | 157 | fgetpos |
| 158 | fgetpos64 == fgetpos | ||
| 158 | fgets | 159 | fgets |
| 159 | fgetwc | 160 | fgetwc |
| 160 | fgetws | 161 | fgetws |
| ... | @@ -170,6 +171,7 @@ freopen | ... | @@ -170,6 +171,7 @@ freopen |
| 170 | freopen_s | 171 | freopen_s |
| 171 | fseek | 172 | fseek |
| 172 | fsetpos | 173 | fsetpos |
| 174 | fsetpos64 == fsetpos | ||
| 173 | ftell | 175 | ftell |
| 174 | fwrite | 176 | fwrite |
| 175 | getc | 177 | getc |
lib/libc/mingw/lib-common/api-ms-win-crt-string-l1-1-0.def+3-4| ... | @@ -128,7 +128,7 @@ _wcsupr_l | ... | @@ -128,7 +128,7 @@ _wcsupr_l |
| 128 | _wcsupr_s | 128 | _wcsupr_s |
| 129 | _wcsupr_s_l | 129 | _wcsupr_s_l |
| 130 | _wcsxfrm_l | 130 | _wcsxfrm_l |
| 131 | _wctype | 131 | _wctype DATA |
| 132 | is_wctype | 132 | is_wctype |
| 133 | isalnum | 133 | isalnum |
| 134 | isalpha | 134 | isalpha |
| ... | @@ -175,7 +175,7 @@ strncat_s | ... | @@ -175,7 +175,7 @@ strncat_s |
| 175 | strncmp | 175 | strncmp |
| 176 | strncpy | 176 | strncpy |
| 177 | strncpy_s | 177 | strncpy_s |
| 178 | ; strnlen replaced by emu | 178 | strnlen |
| 179 | strpbrk | 179 | strpbrk |
| 180 | strspn | 180 | strspn |
| 181 | strtok | 181 | strtok |
| ... | @@ -199,8 +199,7 @@ wcsncat_s | ... | @@ -199,8 +199,7 @@ wcsncat_s |
| 199 | wcsncmp | 199 | wcsncmp |
| 200 | wcsncpy | 200 | wcsncpy |
| 201 | wcsncpy_s | 201 | wcsncpy_s |
| 202 | ; We provide replacement implementation in libmingwex | 202 | wcsnlen |
| 203 | wcsnlen DATA | ||
| 204 | wcspbrk | 203 | wcspbrk |
| 205 | wcsspn | 204 | wcsspn |
| 206 | wcstok | 205 | wcstok |
lib/libc/mingw/lib-common/api-ms-win-crt-time-l1-1-0.def deleted-89| ... | @@ -1,89 +0,0 @@ | ||
| 1 | LIBRARY api-ms-win-crt-time-l1-1-0 | ||
| 2 | |||
| 3 | EXPORTS | ||
| 4 | |||
| 5 | __daylight | ||
| 6 | __dstbias | ||
| 7 | __timezone | ||
| 8 | __tzname | ||
| 9 | _ctime32 | ||
| 10 | _ctime32_s | ||
| 11 | _ctime64 | ||
| 12 | _ctime64_s | ||
| 13 | _difftime32 | ||
| 14 | _difftime64 | ||
| 15 | _ftime == _ftime64 | ||
| 16 | _ftime32 | ||
| 17 | _ftime32_s | ||
| 18 | _ftime64 | ||
| 19 | _ftime64_s | ||
| 20 | _futime == _futime64 | ||
| 21 | _futime32 | ||
| 22 | _futime64 | ||
| 23 | _get_daylight | ||
| 24 | _get_dstbias | ||
| 25 | _get_timezone | ||
| 26 | _get_tzname | ||
| 27 | _getsystime | ||
| 28 | _Getdays | ||
| 29 | _Getmonths | ||
| 30 | _Gettnames | ||
| 31 | _gmtime32 | ||
| 32 | _gmtime32_s | ||
| 33 | _gmtime64 | ||
| 34 | _gmtime64_s | ||
| 35 | _localtime32 | ||
| 36 | _localtime32_s | ||
| 37 | _localtime64 | ||
| 38 | _localtime64_s | ||
| 39 | _mkgmtime32 | ||
| 40 | _mkgmtime64 | ||
| 41 | _mktime32 | ||
| 42 | _mktime64 | ||
| 43 | _setsystime | ||
| 44 | _strdate | ||
| 45 | _strdate_s | ||
| 46 | _Strftime | ||
| 47 | _strftime_l | ||
| 48 | _strtime | ||
| 49 | _strtime_s | ||
| 50 | _time32 | ||
| 51 | _time64 | ||
| 52 | _timespec32_get | ||
| 53 | _timespec64_get | ||
| 54 | ; This is wrapped in the compat code. | ||
| 55 | _tzset DATA | ||
| 56 | _utime == _utime64 | ||
| 57 | utime == _utime64 | ||
| 58 | _utime32 | ||
| 59 | _utime64 | ||
| 60 | _W_Getdays | ||
| 61 | _W_Getmonths | ||
| 62 | _W_Gettnames | ||
| 63 | _wasctime | ||
| 64 | _wasctime_s | ||
| 65 | _Wcsftime | ||
| 66 | _wcsftime_l | ||
| 67 | _wctime32 | ||
| 68 | _wctime32_s | ||
| 69 | _wctime64 | ||
| 70 | _wctime64_s | ||
| 71 | _wstrdate | ||
| 72 | _wstrdate_s | ||
| 73 | _wstrtime | ||
| 74 | _wstrtime_s | ||
| 75 | _wutime == _wutime64 | ||
| 76 | _wutime32 | ||
| 77 | _wutime64 | ||
| 78 | asctime | ||
| 79 | asctime_s | ||
| 80 | clock | ||
| 81 | strftime | ||
| 82 | wcsftime | ||
| 83 | ; These functions may satisfy configure scripts. | ||
| 84 | ctime == _ctime64 | ||
| 85 | gmtime == _gmtime64 | ||
| 86 | localtime == _localtime64 | ||
| 87 | mktime == _mktime64 | ||
| 88 | time == _time64 | ||
| 89 | timespec_get == _timespec64_get | ||
lib/libc/mingw/lib-common/api-ms-win-crt-time-l1-1-0.def.in created+108| ... | @@ -0,0 +1,108 @@ | ||
| 1 | LIBRARY api-ms-win-crt-time-l1-1-0 | ||
| 2 | |||
| 3 | EXPORTS | ||
| 4 | |||
| 5 | #include "func.def.in" | ||
| 6 | |||
| 7 | __daylight | ||
| 8 | __dstbias | ||
| 9 | __timezone | ||
| 10 | __tzname | ||
| 11 | _ctime32 | ||
| 12 | _ctime32_s | ||
| 13 | _ctime64 | ||
| 14 | _ctime64_s | ||
| 15 | F32(difftime == _difftime32) | ||
| 16 | F64(difftime == _difftime64) | ||
| 17 | _difftime32 | ||
| 18 | _difftime64 | ||
| 19 | F32(_ftime == _ftime32) | ||
| 20 | F64(_ftime == _ftime64) | ||
| 21 | _ftime32 | ||
| 22 | _ftime32_s | ||
| 23 | _ftime64 | ||
| 24 | _ftime64_s | ||
| 25 | F32(_futime == _futime32) | ||
| 26 | F64(_futime == _futime64) | ||
| 27 | _futime32 | ||
| 28 | _futime64 | ||
| 29 | _get_daylight | ||
| 30 | _get_dstbias | ||
| 31 | _get_timezone | ||
| 32 | _get_tzname | ||
| 33 | _getsystime | ||
| 34 | _Getdays | ||
| 35 | _Getmonths | ||
| 36 | _Gettnames | ||
| 37 | _gmtime32 | ||
| 38 | _gmtime32_s | ||
| 39 | _gmtime64 | ||
| 40 | _gmtime64_s | ||
| 41 | _localtime32 | ||
| 42 | _localtime32_s | ||
| 43 | _localtime64 | ||
| 44 | _localtime64_s | ||
| 45 | F32(_mkgmtime == _mkgmtime32) | ||
| 46 | F64(_mkgmtime == _mkgmtime64) | ||
| 47 | _mkgmtime32 | ||
| 48 | _mkgmtime64 | ||
| 49 | _mktime32 | ||
| 50 | _mktime64 | ||
| 51 | _setsystime | ||
| 52 | _strdate | ||
| 53 | _strdate_s | ||
| 54 | _Strftime | ||
| 55 | _strftime_l | ||
| 56 | _strtime | ||
| 57 | _strtime_s | ||
| 58 | _time32 | ||
| 59 | _time64 | ||
| 60 | _timespec32_get | ||
| 61 | _timespec64_get | ||
| 62 | ; This is wrapped in the compat code. | ||
| 63 | _tzset DATA | ||
| 64 | F32(_utime == _utime32) | ||
| 65 | F64(_utime == _utime64) | ||
| 66 | F32(utime == _utime32) | ||
| 67 | F64(utime == _utime64) | ||
| 68 | _utime32 | ||
| 69 | _utime64 | ||
| 70 | _W_Getdays | ||
| 71 | _W_Getmonths | ||
| 72 | _W_Gettnames | ||
| 73 | _wasctime | ||
| 74 | _wasctime_s | ||
| 75 | _Wcsftime | ||
| 76 | _wcsftime_l | ||
| 77 | F32(_wctime == _wctime32) | ||
| 78 | F64(_wctime == _wctime64) | ||
| 79 | _wctime32 | ||
| 80 | _wctime32_s | ||
| 81 | _wctime64 | ||
| 82 | _wctime64_s | ||
| 83 | _wstrdate | ||
| 84 | _wstrdate_s | ||
| 85 | _wstrtime | ||
| 86 | _wstrtime_s | ||
| 87 | F32(_wutime == _wutime32) | ||
| 88 | F64(_wutime == _wutime64) | ||
| 89 | _wutime32 | ||
| 90 | _wutime64 | ||
| 91 | asctime | ||
| 92 | asctime_s | ||
| 93 | clock | ||
| 94 | strftime | ||
| 95 | wcsftime | ||
| 96 | ; These functions may satisfy configure scripts. | ||
| 97 | F32(ctime == _ctime32) | ||
| 98 | F64(ctime == _ctime64) | ||
| 99 | F32(gmtime == _gmtime32) | ||
| 100 | F64(gmtime == _gmtime64) | ||
| 101 | F32(localtime == _localtime32) | ||
| 102 | F64(localtime == _localtime64) | ||
| 103 | F32(mktime == _mktime32) | ||
| 104 | F64(mktime == _mktime64) | ||
| 105 | F32(time == _time32) | ||
| 106 | F64(time == _time64) | ||
| 107 | F32(timespec_get == _timespec32_get) | ||
| 108 | F64(timespec_get == _timespec64_get) | ||
lib/libc/mingw/lib-common/bcryptprimitives.def created+18| ... | @@ -0,0 +1,18 @@ | ||
| 1 | ; | ||
| 2 | ; Definition file of bcryptPrimitives.dll | ||
| 3 | ; Automatic generated by gendef 1.1 | ||
| 4 | ; written by Kai Tietz 2008 | ||
| 5 | ; The def file has to be processed by --kill-at (-k) option of dlltool or ld | ||
| 6 | ; | ||
| 7 | LIBRARY "bcryptPrimitives.dll" | ||
| 8 | EXPORTS | ||
| 9 | GetAsymmetricEncryptionInterface | ||
| 10 | GetCipherInterface | ||
| 11 | GetHashInterface | ||
| 12 | GetKeyDerivationInterface | ||
| 13 | GetRngInterface | ||
| 14 | GetSecretAgreementInterface | ||
| 15 | GetSignatureInterface | ||
| 16 | MSCryptConvertRsaPrivateBlobToFullRsaBlob | ||
| 17 | ProcessPrng | ||
| 18 | ProcessPrngGuid | ||
lib/libc/mingw/lib-common/cfgmgr32.def+5-2| ... | @@ -7,12 +7,12 @@ LIBRARY "CFGMGR32.dll" | ... | @@ -7,12 +7,12 @@ LIBRARY "CFGMGR32.dll" |
| 7 | EXPORTS | 7 | EXPORTS |
| 8 | CMP_GetBlockedDriverInfo | 8 | CMP_GetBlockedDriverInfo |
| 9 | CMP_GetServerSideDeviceInstallFlags | 9 | CMP_GetServerSideDeviceInstallFlags |
| 10 | CMP_Get_Device_ID_List | ||
| 11 | CMP_Get_Device_ID_List_Size | ||
| 10 | CMP_Init_Detection | 12 | CMP_Init_Detection |
| 11 | CMP_RegisterNotification | ||
| 12 | CMP_RegisterServiceNotification | 13 | CMP_RegisterServiceNotification |
| 13 | CMP_Register_Notification | 14 | CMP_Register_Notification |
| 14 | CMP_Report_LogOn | 15 | CMP_Report_LogOn |
| 15 | CMP_UnregisterNotification | ||
| 16 | CMP_WaitNoPendingInstallEvents | 16 | CMP_WaitNoPendingInstallEvents |
| 17 | CMP_WaitServicesAvailable | 17 | CMP_WaitServicesAvailable |
| 18 | CM_Add_Driver_PackageW | 18 | CM_Add_Driver_PackageW |
| ... | @@ -61,6 +61,7 @@ CM_Enumerate_EnumeratorsA | ... | @@ -61,6 +61,7 @@ CM_Enumerate_EnumeratorsA |
| 61 | CM_Enumerate_EnumeratorsW | 61 | CM_Enumerate_EnumeratorsW |
| 62 | CM_Enumerate_Enumerators_ExA | 62 | CM_Enumerate_Enumerators_ExA |
| 63 | CM_Enumerate_Enumerators_ExW | 63 | CM_Enumerate_Enumerators_ExW |
| 64 | CM_Export_Pnp_StateW | ||
| 64 | CM_Find_Range | 65 | CM_Find_Range |
| 65 | CM_First_Range | 66 | CM_First_Range |
| 66 | CM_Free_Log_Conf | 67 | CM_Free_Log_Conf |
| ... | @@ -167,6 +168,7 @@ CM_Get_Version_Ex | ... | @@ -167,6 +168,7 @@ CM_Get_Version_Ex |
| 167 | CM_Import_PowerScheme | 168 | CM_Import_PowerScheme |
| 168 | CM_Install_DevNodeW | 169 | CM_Install_DevNodeW |
| 169 | CM_Install_DevNode_ExW | 170 | CM_Install_DevNode_ExW |
| 171 | CM_Install_DriverW | ||
| 170 | CM_Intersect_Range_List | 172 | CM_Intersect_Range_List |
| 171 | CM_Invert_Range_List | 173 | CM_Invert_Range_List |
| 172 | CM_Is_Dock_Station_Present | 174 | CM_Is_Dock_Station_Present |
| ... | @@ -253,6 +255,7 @@ CM_Setup_DevNode_Ex | ... | @@ -253,6 +255,7 @@ CM_Setup_DevNode_Ex |
| 253 | CM_Test_Range_Available | 255 | CM_Test_Range_Available |
| 254 | CM_Uninstall_DevNode | 256 | CM_Uninstall_DevNode |
| 255 | CM_Uninstall_DevNode_Ex | 257 | CM_Uninstall_DevNode_Ex |
| 258 | CM_Uninstall_DriverW | ||
| 256 | CM_Unregister_Device_InterfaceA | 259 | CM_Unregister_Device_InterfaceA |
| 257 | CM_Unregister_Device_InterfaceW | 260 | CM_Unregister_Device_InterfaceW |
| 258 | CM_Unregister_Device_Interface_ExA | 261 | CM_Unregister_Device_Interface_ExA |
lib/libc/mingw/lib-common/computecore.def+7| ... | @@ -9,6 +9,7 @@ HcsEnumerateVmWorkerProcesses | ... | @@ -9,6 +9,7 @@ HcsEnumerateVmWorkerProcesses |
| 9 | HcsFindVmWorkerProcesses | 9 | HcsFindVmWorkerProcesses |
| 10 | HcsGetWorkerProcessJob | 10 | HcsGetWorkerProcessJob |
| 11 | HcsStartVmWorkerProcess | 11 | HcsStartVmWorkerProcess |
| 12 | HcsAbortSystemPreservation | ||
| 12 | HcsAddResourceToOperation | 13 | HcsAddResourceToOperation |
| 13 | HcsCancelOperation | 14 | HcsCancelOperation |
| 14 | HcsCloseComputeSystem | 15 | HcsCloseComputeSystem |
| ... | @@ -24,6 +25,8 @@ HcsCreateOperationWithNotifications | ... | @@ -24,6 +25,8 @@ HcsCreateOperationWithNotifications |
| 24 | HcsCreateProcess | 25 | HcsCreateProcess |
| 25 | HcsEnumerateComputeSystems | 26 | HcsEnumerateComputeSystems |
| 26 | HcsEnumerateComputeSystemsInNamespace | 27 | HcsEnumerateComputeSystemsInNamespace |
| 28 | HcsFinalizeLiveMigration | ||
| 29 | HcsFinalizeSystemPreservation | ||
| 27 | HcsGetComputeSystemFromOperation | 30 | HcsGetComputeSystemFromOperation |
| 28 | HcsGetComputeSystemProperties | 31 | HcsGetComputeSystemProperties |
| 29 | HcsGetOperationContext | 32 | HcsGetOperationContext |
| ... | @@ -39,6 +42,7 @@ HcsGetProcessorCompatibilityFromSavedState | ... | @@ -39,6 +42,7 @@ HcsGetProcessorCompatibilityFromSavedState |
| 39 | HcsGetServiceProperties | 42 | HcsGetServiceProperties |
| 40 | HcsGrantVmAccess | 43 | HcsGrantVmAccess |
| 41 | HcsGrantVmGroupAccess | 44 | HcsGrantVmGroupAccess |
| 45 | HcsInitializeLiveMigrationOnSource | ||
| 42 | HcsModifyComputeSystem | 46 | HcsModifyComputeSystem |
| 43 | HcsModifyProcess | 47 | HcsModifyProcess |
| 44 | HcsModifyServiceSettings | 48 | HcsModifyServiceSettings |
| ... | @@ -57,6 +61,9 @@ HcsSetProcessCallback | ... | @@ -57,6 +61,9 @@ HcsSetProcessCallback |
| 57 | HcsShutDownComputeSystem | 61 | HcsShutDownComputeSystem |
| 58 | HcsSignalProcess | 62 | HcsSignalProcess |
| 59 | HcsStartComputeSystem | 63 | HcsStartComputeSystem |
| 64 | HcsStartLiveMigrationOnSource | ||
| 65 | HcsStartLiveMigrationTransfer | ||
| 66 | HcsStartSystemPreservation | ||
| 60 | HcsSubmitWerReport | 67 | HcsSubmitWerReport |
| 61 | HcsSystemControl | 68 | HcsSystemControl |
| 62 | HcsTerminateComputeSystem | 69 | HcsTerminateComputeSystem |
lib/libc/mingw/lib-common/computenetwork.def+1| ... | @@ -18,6 +18,7 @@ HcnModifySdnRoute | ... | @@ -18,6 +18,7 @@ HcnModifySdnRoute |
| 18 | HcnOpenGuestNetworkService | 18 | HcnOpenGuestNetworkService |
| 19 | HcnOpenSdnRoute | 19 | HcnOpenSdnRoute |
| 20 | HcnQueryGuestNetworkServiceProperties | 20 | HcnQueryGuestNetworkServiceProperties |
| 21 | HcnQueryMetrics | ||
| 21 | HcnQuerySdnRouteProperties | 22 | HcnQuerySdnRouteProperties |
| 22 | HcnRegisterGuestNetworkServiceCallback | 23 | HcnRegisterGuestNetworkServiceCallback |
| 23 | HcnRegisterNetworkCallback | 24 | HcnRegisterNetworkCallback |
lib/libc/mingw/lib-common/computestorage.def+2| ... | @@ -6,8 +6,10 @@ | ... | @@ -6,8 +6,10 @@ |
| 6 | LIBRARY "computestorage.dll" | 6 | LIBRARY "computestorage.dll" |
| 7 | EXPORTS | 7 | EXPORTS |
| 8 | HcsAttachLayerStorageFilter | 8 | HcsAttachLayerStorageFilter |
| 9 | HcsAttachOverlayFilter | ||
| 9 | HcsDestroyLayer | 10 | HcsDestroyLayer |
| 10 | HcsDetachLayerStorageFilter | 11 | HcsDetachLayerStorageFilter |
| 12 | HcsDetachOverlayFilter | ||
| 11 | HcsExportLayer | 13 | HcsExportLayer |
| 12 | HcsExportLegacyWritableLayer | 14 | HcsExportLegacyWritableLayer |
| 13 | HcsFormatWritableLayerVhd | 15 | HcsFormatWritableLayerVhd |
lib/libc/mingw/lib-common/kernel32.def.in+2| ... | @@ -121,9 +121,11 @@ BuildCommDCBW | ... | @@ -121,9 +121,11 @@ BuildCommDCBW |
| 121 | BuildIoRingCancelRequest | 121 | BuildIoRingCancelRequest |
| 122 | BuildIoRingFlushFile | 122 | BuildIoRingFlushFile |
| 123 | BuildIoRingReadFile | 123 | BuildIoRingReadFile |
| 124 | BuildIoRingReadFileScatter | ||
| 124 | BuildIoRingRegisterBuffers | 125 | BuildIoRingRegisterBuffers |
| 125 | BuildIoRingRegisterFileHandles | 126 | BuildIoRingRegisterFileHandles |
| 126 | BuildIoRingWriteFile | 127 | BuildIoRingWriteFile |
| 128 | BuildIoRingWriteFileGather | ||
| 127 | CallNamedPipeA | 129 | CallNamedPipeA |
| 128 | CallNamedPipeW | 130 | CallNamedPipeW |
| 129 | CallbackMayRunLong | 131 | CallbackMayRunLong |
lib/libc/mingw/lib-common/ninput.def created+37| ... | @@ -0,0 +1,37 @@ | ||
| 1 | ; | ||
| 2 | ; Definition file of ninput.dll | ||
| 3 | ; Automatic generated by gendef | ||
| 4 | ; written by Kai Tietz 2008-2014 | ||
| 5 | ; | ||
| 6 | LIBRARY "ninput.dll" | ||
| 7 | EXPORTS | ||
| 8 | AddPointerInteractionContext | ||
| 9 | BufferPointerPacketsInteractionContext | ||
| 10 | CreateInteractionContext | ||
| 11 | DestroyInteractionContext | ||
| 12 | GetCrossSlideParameterInteractionContext | ||
| 13 | GetHoldParameterInteractionContext | ||
| 14 | GetInertiaParameterInteractionContext | ||
| 15 | GetInteractionConfigurationInteractionContext | ||
| 16 | GetMouseWheelParameterInteractionContext | ||
| 17 | GetPropertyInteractionContext | ||
| 18 | GetStateInteractionContext | ||
| 19 | GetTapParameterInteractionContext | ||
| 20 | GetTranslationParameterInteractionContext | ||
| 21 | ProcessBufferedPacketsInteractionContext | ||
| 22 | ProcessInertiaInteractionContext | ||
| 23 | ProcessPointerFramesInteractionContext | ||
| 24 | RegisterOutputCallbackInteractionContext | ||
| 25 | RegisterOutputCallbackInteractionContext2 | ||
| 26 | RemovePointerInteractionContext | ||
| 27 | ResetInteractionContext | ||
| 28 | SetCrossSlideParametersInteractionContext | ||
| 29 | SetHoldParameterInteractionContext | ||
| 30 | SetInertiaParameterInteractionContext | ||
| 31 | SetInteractionConfigurationInteractionContext | ||
| 32 | SetMouseWheelParameterInteractionContext | ||
| 33 | SetPivotInteractionContext | ||
| 34 | SetPropertyInteractionContext | ||
| 35 | SetTapParameterInteractionContext | ||
| 36 | SetTranslationParameterInteractionContext | ||
| 37 | StopInteractionContext | ||
lib/libc/mingw/lib-common/tbs.def+1| ... | @@ -17,6 +17,7 @@ Tbsi_GetDeviceInfo | ... | @@ -17,6 +17,7 @@ Tbsi_GetDeviceInfo |
| 17 | Tbsi_Get_OwnerAuth | 17 | Tbsi_Get_OwnerAuth |
| 18 | Tbsi_Get_TCG_Log | 18 | Tbsi_Get_TCG_Log |
| 19 | Tbsi_Get_TCG_Log_Ex | 19 | Tbsi_Get_TCG_Log_Ex |
| 20 | Tbsi_Is_Tpm_Present | ||
| 20 | Tbsi_Physical_Presence_Command | 21 | Tbsi_Physical_Presence_Command |
| 21 | Tbsi_Revoke_Attestation | 22 | Tbsi_Revoke_Attestation |
| 22 | Tbsi_ShaHash | 23 | Tbsi_ShaHash |
lib/libc/mingw/lib-common/ucrtbase-common.def.in created+2709| ... | @@ -0,0 +1,2709 @@ | ||
| 1 | #ifdef DEF_DEBUG | ||
| 2 | #define F_DEBUG(x) x | ||
| 3 | #define F_NON_DEBUG(x) | ||
| 4 | #else | ||
| 5 | #define F_DEBUG(x) | ||
| 6 | #define F_NON_DEBUG(x) x | ||
| 7 | #endif | ||
| 8 | |||
| 9 | ; This is list of symbols available in the first public UCRT version (ucrtbase.dll and ucrtbased.dll) | ||
| 10 | ; First public ucrtbase.dll version is 10.0.10137.0 and is part of the Microsoft Visual C++ 2015 Redistributable version 14.0.23026.0 | ||
| 11 | ; First public ucrtbased.dll version is 10.0.10150.0 and is part of the Microsoft Visual Studio 2015 (Universal CRT Headers Libraries and Sources) | ||
| 12 | F_I386(_CIacos) | ||
| 13 | F_I386(_CIasin) | ||
| 14 | F_I386(_CIatan) | ||
| 15 | F_I386(_CIatan2) | ||
| 16 | F_I386(_CIcos) | ||
| 17 | F_I386(_CIcosh) | ||
| 18 | F_I386(_CIexp) | ||
| 19 | F_I386(_CIfmod) | ||
| 20 | F_I386(_CIlog) | ||
| 21 | F_I386(_CIlog10) | ||
| 22 | F_I386(_CIpow) | ||
| 23 | F_I386(_CIsin) | ||
| 24 | F_I386(_CIsinh) | ||
| 25 | F_I386(_CIsqrt) | ||
| 26 | F_I386(_CItan) | ||
| 27 | F_I386(_CItanh) | ||
| 28 | _Cbuild | ||
| 29 | _Cmulcc | ||
| 30 | _Cmulcr | ||
| 31 | _CreateFrameInfo | ||
| 32 | F_DEBUG(_CrtCheckMemory) | ||
| 33 | F_DEBUG(_CrtDbgReport) | ||
| 34 | F_DEBUG(_CrtDbgReportW) | ||
| 35 | F_DEBUG(_CrtDoForAllClientObjects) | ||
| 36 | F_DEBUG(_CrtDumpMemoryLeaks) | ||
| 37 | F_DEBUG(_CrtGetAllocHook) | ||
| 38 | F_DEBUG(_CrtGetDebugFillThreshold) | ||
| 39 | F_DEBUG(_CrtGetDumpClient) | ||
| 40 | F_DEBUG(_CrtGetReportHook) | ||
| 41 | F_DEBUG(_CrtIsMemoryBlock) | ||
| 42 | F_DEBUG(_CrtIsValidHeapPointer) | ||
| 43 | F_DEBUG(_CrtIsValidPointer) | ||
| 44 | F_DEBUG(_CrtMemCheckpoint) | ||
| 45 | F_DEBUG(_CrtMemDifference) | ||
| 46 | F_DEBUG(_CrtMemDumpAllObjectsSince) | ||
| 47 | F_DEBUG(_CrtMemDumpStatistics) | ||
| 48 | F_DEBUG(_CrtReportBlockType) | ||
| 49 | F_DEBUG(_CrtSetAllocHook) | ||
| 50 | F_DEBUG(_CrtSetBreakAlloc) | ||
| 51 | F_DEBUG(_CrtSetDbgBlockType) | ||
| 52 | F_DEBUG(_CrtSetDbgFlag) | ||
| 53 | F_DEBUG(_CrtSetDebugFillThreshold) | ||
| 54 | F_DEBUG(_CrtSetDumpClient) | ||
| 55 | F_DEBUG(_CrtSetReportFile) | ||
| 56 | F_DEBUG(_CrtSetReportHook) | ||
| 57 | F_DEBUG(_CrtSetReportHook2) | ||
| 58 | F_DEBUG(_CrtSetReportHookW2) | ||
| 59 | F_DEBUG(_CrtSetReportMode) | ||
| 60 | F_I386(_CxxThrowException@8) | ||
| 61 | F_NON_I386(_CxxThrowException) | ||
| 62 | F_I386(_EH_prolog) | ||
| 63 | _Exit | ||
| 64 | _FCbuild | ||
| 65 | _FCmulcc | ||
| 66 | _FCmulcr | ||
| 67 | F_ARM32(_FPE_Raise) | ||
| 68 | _FindAndUnlinkFrame | ||
| 69 | F_X64(_GetImageBase) | ||
| 70 | F_X64(_GetThrowImageBase) | ||
| 71 | _Getdays | ||
| 72 | _Getmonths | ||
| 73 | _Gettnames | ||
| 74 | _IsExceptionObjectToBeDestroyed | ||
| 75 | _LCbuild | ||
| 76 | _LCmulcc | ||
| 77 | _LCmulcr | ||
| 78 | F_I386(_NLG_Dispatch2@4) | ||
| 79 | F_I386(_NLG_Return@12) | ||
| 80 | F_I386(_NLG_Return2) | ||
| 81 | F_X64(_SetImageBase) | ||
| 82 | F_X64(_SetThrowImageBase) | ||
| 83 | _SetWinRTOutOfMemoryExceptionCallback | ||
| 84 | _Strftime | ||
| 85 | F_DEBUG(_VCrtDbgReportA) | ||
| 86 | F_DEBUG(_VCrtDbgReportW) | ||
| 87 | _W_Getdays | ||
| 88 | _W_Getmonths | ||
| 89 | _W_Gettnames | ||
| 90 | _Wcsftime | ||
| 91 | __AdjustPointer | ||
| 92 | __BuildCatchObject | ||
| 93 | __BuildCatchObjectHelper | ||
| 94 | F_NON_I386(__C_specific_handler) | ||
| 95 | __CxxDetectRethrow | ||
| 96 | __CxxExceptionFilter | ||
| 97 | __CxxFrameHandler | ||
| 98 | __CxxFrameHandler2 | ||
| 99 | __CxxFrameHandler3 | ||
| 100 | F_I386(__CxxLongjmpUnwind@4) | ||
| 101 | __CxxQueryExceptionSize | ||
| 102 | __CxxRegisterExceptionObject | ||
| 103 | __CxxUnregisterExceptionObject | ||
| 104 | __DestructExceptionObject | ||
| 105 | __FrameUnwindFilter | ||
| 106 | __GetPlatformExceptionInfo | ||
| 107 | F_NON_I386(__NLG_Dispatch2) | ||
| 108 | F_NON_I386(__NLG_Return2) | ||
| 109 | __RTCastToVoid | ||
| 110 | __RTDynamicCast | ||
| 111 | __RTtypeid | ||
| 112 | __TypeMatch | ||
| 113 | ___lc_codepage_func | ||
| 114 | ___lc_collate_cp_func | ||
| 115 | ___lc_locale_name_func | ||
| 116 | ___mb_cur_max_func | ||
| 117 | ___mb_cur_max_l_func | ||
| 118 | __acrt_iob_func | ||
| 119 | __conio_common_vcprintf | ||
| 120 | __conio_common_vcprintf_p | ||
| 121 | __conio_common_vcprintf_s | ||
| 122 | __conio_common_vcscanf | ||
| 123 | __conio_common_vcwprintf | ||
| 124 | __conio_common_vcwprintf_p | ||
| 125 | __conio_common_vcwprintf_s | ||
| 126 | __conio_common_vcwscanf | ||
| 127 | F_I386(__control87_2) | ||
| 128 | __current_exception | ||
| 129 | __current_exception_context | ||
| 130 | __daylight | ||
| 131 | __dcrt_get_wide_environment_from_os | ||
| 132 | __dcrt_initial_narrow_environment DATA | ||
| 133 | __doserrno | ||
| 134 | __dstbias | ||
| 135 | __fpe_flt_rounds | ||
| 136 | __fpecode | ||
| 137 | __initialize_lconv_for_unsigned_char | ||
| 138 | F_I386(__intrinsic_abnormal_termination) | ||
| 139 | F_NON_ARM64(__intrinsic_setjmp) | ||
| 140 | F64(__intrinsic_setjmpex) | ||
| 141 | __isascii | ||
| 142 | __iscsym | ||
| 143 | __iscsymf | ||
| 144 | __iswcsym | ||
| 145 | __iswcsymf | ||
| 146 | F_ARM32(__jump_unwind) | ||
| 147 | F_I386(__libm_sse2_acos) | ||
| 148 | F_I386(__libm_sse2_acosf) | ||
| 149 | F_I386(__libm_sse2_asin) | ||
| 150 | F_I386(__libm_sse2_asinf) | ||
| 151 | F_I386(__libm_sse2_atan) | ||
| 152 | F_I386(__libm_sse2_atan2) | ||
| 153 | F_I386(__libm_sse2_atanf) | ||
| 154 | F_I386(__libm_sse2_cos) | ||
| 155 | F_I386(__libm_sse2_cosf) | ||
| 156 | F_I386(__libm_sse2_exp) | ||
| 157 | F_I386(__libm_sse2_expf) | ||
| 158 | F_I386(__libm_sse2_log) | ||
| 159 | F_I386(__libm_sse2_log10) | ||
| 160 | F_I386(__libm_sse2_log10f) | ||
| 161 | F_I386(__libm_sse2_logf) | ||
| 162 | F_I386(__libm_sse2_pow) | ||
| 163 | F_I386(__libm_sse2_powf) | ||
| 164 | F_I386(__libm_sse2_sin) | ||
| 165 | F_I386(__libm_sse2_sinf) | ||
| 166 | F_I386(__libm_sse2_tan) | ||
| 167 | F_I386(__libm_sse2_tanf) | ||
| 168 | __p___argc | ||
| 169 | __p___argv | ||
| 170 | __p___wargv | ||
| 171 | __p__acmdln | ||
| 172 | __p__commode | ||
| 173 | F_DEBUG(__p__crtBreakAlloc) | ||
| 174 | F_DEBUG(__p__crtDbgFlag) | ||
| 175 | __p__environ | ||
| 176 | __p__fmode | ||
| 177 | __p__mbcasemap | ||
| 178 | __p__mbctype | ||
| 179 | __p__pgmptr | ||
| 180 | __p__wcmdln | ||
| 181 | __p__wenviron | ||
| 182 | __p__wpgmptr | ||
| 183 | __pctype_func | ||
| 184 | __processing_throw | ||
| 185 | __pwctype_func | ||
| 186 | __pxcptinfoptrs | ||
| 187 | __report_gsfailure | ||
| 188 | __setusermatherr | ||
| 189 | __std_exception_copy | ||
| 190 | __std_exception_destroy | ||
| 191 | __std_type_info_compare | ||
| 192 | __std_type_info_destroy_list | ||
| 193 | __std_type_info_hash | ||
| 194 | __std_type_info_name | ||
| 195 | __stdio_common_vfprintf | ||
| 196 | __stdio_common_vfprintf_p | ||
| 197 | __stdio_common_vfprintf_s | ||
| 198 | __stdio_common_vfscanf | ||
| 199 | __stdio_common_vfwprintf | ||
| 200 | __stdio_common_vfwprintf_p | ||
| 201 | __stdio_common_vfwprintf_s | ||
| 202 | __stdio_common_vfwscanf | ||
| 203 | __stdio_common_vsnprintf_s | ||
| 204 | __stdio_common_vsnwprintf_s | ||
| 205 | __stdio_common_vsprintf | ||
| 206 | __stdio_common_vsprintf_p | ||
| 207 | __stdio_common_vsprintf_s | ||
| 208 | __stdio_common_vsscanf | ||
| 209 | __stdio_common_vswprintf | ||
| 210 | __stdio_common_vswprintf_p | ||
| 211 | __stdio_common_vswprintf_s | ||
| 212 | __stdio_common_vswscanf | ||
| 213 | __strncnt | ||
| 214 | __sys_errlist | ||
| 215 | __sys_nerr | ||
| 216 | __threadhandle | ||
| 217 | __threadid | ||
| 218 | __timezone | ||
| 219 | __toascii | ||
| 220 | __tzname | ||
| 221 | #if !defined(DEF_DEBUG) || !defined(DEF_ARM64) | ||
| 222 | ; symbols __unDName and __unDNameEx are available in all versions except ARM64 ucrtbased.dll | ||
| 223 | __unDName | ||
| 224 | __unDNameEx | ||
| 225 | #endif | ||
| 226 | __uncaught_exception | ||
| 227 | __wcserror | ||
| 228 | __wcserror_s | ||
| 229 | __wcsncnt | ||
| 230 | _abs64 | ||
| 231 | _access | ||
| 232 | _access_s | ||
| 233 | _aligned_free | ||
| 234 | F_DEBUG(_aligned_free_dbg) | ||
| 235 | _aligned_malloc | ||
| 236 | F_DEBUG(_aligned_malloc_dbg) | ||
| 237 | _aligned_msize | ||
| 238 | F_DEBUG(_aligned_msize_dbg) | ||
| 239 | _aligned_offset_malloc | ||
| 240 | F_DEBUG(_aligned_offset_malloc_dbg) | ||
| 241 | _aligned_offset_realloc | ||
| 242 | F_DEBUG(_aligned_offset_realloc_dbg) | ||
| 243 | _aligned_offset_recalloc | ||
| 244 | F_DEBUG(_aligned_offset_recalloc_dbg) | ||
| 245 | _aligned_realloc | ||
| 246 | F_DEBUG(_aligned_realloc_dbg) | ||
| 247 | _aligned_recalloc | ||
| 248 | F_DEBUG(_aligned_recalloc_dbg) | ||
| 249 | _assert | ||
| 250 | _atodbl | ||
| 251 | _atodbl_l | ||
| 252 | _atof_l | ||
| 253 | _atoflt | ||
| 254 | _atoflt_l | ||
| 255 | _atoi64 | ||
| 256 | _atoi64_l | ||
| 257 | _atoi_l | ||
| 258 | _atol_l | ||
| 259 | _atoldbl | ||
| 260 | _atoldbl_l | ||
| 261 | _atoll_l | ||
| 262 | _beep | ||
| 263 | _beginthread | ||
| 264 | _beginthreadex | ||
| 265 | _byteswap_uint64 | ||
| 266 | _byteswap_ulong | ||
| 267 | _byteswap_ushort | ||
| 268 | _c_exit | ||
| 269 | _cabs DATA ; DATA set manually | ||
| 270 | _callnewh | ||
| 271 | _calloc_base | ||
| 272 | F_DEBUG(_calloc_dbg) | ||
| 273 | _cexit | ||
| 274 | _cgets | ||
| 275 | _cgets_s | ||
| 276 | _cgetws | ||
| 277 | _cgetws_s | ||
| 278 | _chdir | ||
| 279 | _chdrive | ||
| 280 | _chgsign | ||
| 281 | _chgsignf | ||
| 282 | F_I386(_chkesp) | ||
| 283 | _chmod | ||
| 284 | _chsize | ||
| 285 | _chsize_s | ||
| 286 | F_DEBUG(_chvalidator) | ||
| 287 | F_DEBUG(_chvalidator_l) | ||
| 288 | _clearfp | ||
| 289 | _close | ||
| 290 | _commit | ||
| 291 | _configthreadlocale | ||
| 292 | _configure_narrow_argv | ||
| 293 | _configure_wide_argv | ||
| 294 | _control87 | ||
| 295 | _controlfp | ||
| 296 | _controlfp_s | ||
| 297 | _copysign | ||
| 298 | _copysignf | ||
| 299 | _cputs | ||
| 300 | _cputws | ||
| 301 | _creat | ||
| 302 | _create_locale | ||
| 303 | _crt_at_quick_exit | ||
| 304 | _crt_atexit | ||
| 305 | F_I386(_crt_debugger_hook) | ||
| 306 | _ctime32 | ||
| 307 | _ctime32_s | ||
| 308 | _ctime64 | ||
| 309 | _ctime64_s | ||
| 310 | _cwait | ||
| 311 | _d_int | ||
| 312 | _dclass | ||
| 313 | _dexp | ||
| 314 | _difftime32 | ||
| 315 | _difftime64 | ||
| 316 | _dlog | ||
| 317 | _dnorm | ||
| 318 | _dpcomp | ||
| 319 | _dpoly | ||
| 320 | _dscale | ||
| 321 | _dsign | ||
| 322 | _dsin | ||
| 323 | _dtest | ||
| 324 | _dunscale | ||
| 325 | _dup | ||
| 326 | _dup2 | ||
| 327 | _dupenv_s | ||
| 328 | F_DEBUG(_dupenv_s_dbg) | ||
| 329 | _ecvt | ||
| 330 | _ecvt_s | ||
| 331 | _endthread | ||
| 332 | _endthreadex | ||
| 333 | _eof | ||
| 334 | _errno | ||
| 335 | _except1 | ||
| 336 | F_I386(_except_handler2) | ||
| 337 | F_I386(_except_handler3) | ||
| 338 | F_I386(_except_handler4_common) | ||
| 339 | _execl | ||
| 340 | _execle | ||
| 341 | _execlp | ||
| 342 | _execlpe | ||
| 343 | _execute_onexit_table | ||
| 344 | _execv | ||
| 345 | _execve | ||
| 346 | _execvp | ||
| 347 | _execvpe | ||
| 348 | _exit | ||
| 349 | _expand | ||
| 350 | F_DEBUG(_expand_dbg) | ||
| 351 | _fclose_nolock | ||
| 352 | _fcloseall | ||
| 353 | _fcvt | ||
| 354 | _fcvt_s | ||
| 355 | _fd_int | ||
| 356 | _fdclass | ||
| 357 | _fdexp | ||
| 358 | _fdlog | ||
| 359 | _fdnorm | ||
| 360 | _fdopen | ||
| 361 | _fdpcomp | ||
| 362 | _fdpoly | ||
| 363 | _fdscale | ||
| 364 | _fdsign | ||
| 365 | _fdsin | ||
| 366 | _fdtest | ||
| 367 | _fdunscale | ||
| 368 | _fflush_nolock | ||
| 369 | _fgetc_nolock | ||
| 370 | _fgetchar | ||
| 371 | _fgetwc_nolock | ||
| 372 | _fgetwchar | ||
| 373 | _filelength | ||
| 374 | _filelengthi64 | ||
| 375 | _fileno | ||
| 376 | _findclose | ||
| 377 | _findfirst32 | ||
| 378 | _findfirst32i64 | ||
| 379 | _findfirst64 | ||
| 380 | _findfirst64i32 | ||
| 381 | _findnext32 | ||
| 382 | _findnext32i64 | ||
| 383 | _findnext64 | ||
| 384 | _findnext64i32 | ||
| 385 | _finite | ||
| 386 | F_NON_I386(_finitef) | ||
| 387 | _flushall | ||
| 388 | _fpclass | ||
| 389 | F_X64(_fpclassf) | ||
| 390 | _fpieee_flt | ||
| 391 | _fpreset DATA ; DATA added manually | ||
| 392 | _fputc_nolock | ||
| 393 | _fputchar | ||
| 394 | _fputwc_nolock | ||
| 395 | _fputwchar | ||
| 396 | _fread_nolock | ||
| 397 | _fread_nolock_s | ||
| 398 | _free_base | ||
| 399 | F_DEBUG(_free_dbg) | ||
| 400 | _free_locale | ||
| 401 | _fseek_nolock | ||
| 402 | _fseeki64 | ||
| 403 | _fseeki64_nolock | ||
| 404 | _fsopen | ||
| 405 | _fstat32 | ||
| 406 | _fstat32i64 | ||
| 407 | _fstat64 | ||
| 408 | _fstat64i32 | ||
| 409 | _ftell_nolock | ||
| 410 | _ftelli64 | ||
| 411 | _ftelli64_nolock | ||
| 412 | _ftime32 | ||
| 413 | _ftime32_s | ||
| 414 | _ftime64 | ||
| 415 | _ftime64_s | ||
| 416 | F_I386(_ftol) | ||
| 417 | _fullpath | ||
| 418 | F_DEBUG(_fullpath_dbg) | ||
| 419 | _futime32 | ||
| 420 | _futime64 | ||
| 421 | _fwrite_nolock | ||
| 422 | _gcvt | ||
| 423 | _gcvt_s | ||
| 424 | F_X64(_get_FMA3_enable) | ||
| 425 | _get_current_locale | ||
| 426 | _get_daylight | ||
| 427 | _get_doserrno | ||
| 428 | _get_dstbias | ||
| 429 | _get_errno | ||
| 430 | _get_fmode | ||
| 431 | _get_heap_handle | ||
| 432 | _get_initial_narrow_environment | ||
| 433 | _get_initial_wide_environment | ||
| 434 | _get_invalid_parameter_handler | ||
| 435 | _get_narrow_winmain_command_line | ||
| 436 | _get_osfhandle | ||
| 437 | _get_pgmptr | ||
| 438 | _get_printf_count_output | ||
| 439 | _get_purecall_handler | ||
| 440 | _get_stream_buffer_pointers | ||
| 441 | _get_terminate | ||
| 442 | _get_thread_local_invalid_parameter_handler | ||
| 443 | _get_timezone | ||
| 444 | _get_tzname | ||
| 445 | _get_unexpected | ||
| 446 | _get_wide_winmain_command_line | ||
| 447 | _get_wpgmptr | ||
| 448 | _getc_nolock | ||
| 449 | _getch | ||
| 450 | _getch_nolock | ||
| 451 | _getche | ||
| 452 | _getche_nolock | ||
| 453 | _getcwd | ||
| 454 | F_DEBUG(_getcwd_dbg) | ||
| 455 | _getdcwd | ||
| 456 | F_DEBUG(_getdcwd_dbg) | ||
| 457 | _getdiskfree | ||
| 458 | _getdllprocaddr | ||
| 459 | _getdrive | ||
| 460 | _getdrives | ||
| 461 | _getmaxstdio | ||
| 462 | _getmbcp | ||
| 463 | _getpid | ||
| 464 | _getsystime | ||
| 465 | _getw | ||
| 466 | _getwc_nolock | ||
| 467 | _getwch | ||
| 468 | _getwch_nolock | ||
| 469 | _getwche | ||
| 470 | _getwche_nolock | ||
| 471 | _getws | ||
| 472 | _getws_s | ||
| 473 | F_I386(_global_unwind2) | ||
| 474 | _gmtime32 | ||
| 475 | _gmtime32_s | ||
| 476 | _gmtime64 | ||
| 477 | _gmtime64_s | ||
| 478 | _heapchk | ||
| 479 | _heapmin | ||
| 480 | _heapwalk | ||
| 481 | _hypot | ||
| 482 | _hypotf | ||
| 483 | _i64toa | ||
| 484 | _i64toa_s | ||
| 485 | _i64tow | ||
| 486 | _i64tow_s | ||
| 487 | _initialize_narrow_environment | ||
| 488 | _initialize_onexit_table | ||
| 489 | _initialize_wide_environment | ||
| 490 | _initterm | ||
| 491 | _initterm_e | ||
| 492 | F_DEBUG(_invalid_parameter) | ||
| 493 | _invalid_parameter_noinfo | ||
| 494 | _invalid_parameter_noinfo_noreturn | ||
| 495 | _invoke_watson | ||
| 496 | #if !defined(DEF_DEBUG) || !defined(DEF_ARM64) | ||
| 497 | ; symbol _is_exception_typeof is available in all versions except ARM64 ucrtbased.dll | ||
| 498 | _is_exception_typeof | ||
| 499 | #endif | ||
| 500 | _isalnum_l | ||
| 501 | _isalpha_l | ||
| 502 | _isatty | ||
| 503 | _isblank_l | ||
| 504 | _iscntrl_l | ||
| 505 | _isctype | ||
| 506 | _isctype_l | ||
| 507 | _isdigit_l | ||
| 508 | _isgraph_l | ||
| 509 | _isleadbyte_l | ||
| 510 | _islower_l | ||
| 511 | _ismbbalnum | ||
| 512 | _ismbbalnum_l | ||
| 513 | _ismbbalpha | ||
| 514 | _ismbbalpha_l | ||
| 515 | _ismbbblank | ||
| 516 | _ismbbblank_l | ||
| 517 | _ismbbgraph | ||
| 518 | _ismbbgraph_l | ||
| 519 | _ismbbkalnum | ||
| 520 | _ismbbkalnum_l | ||
| 521 | _ismbbkana | ||
| 522 | _ismbbkana_l | ||
| 523 | _ismbbkprint | ||
| 524 | _ismbbkprint_l | ||
| 525 | _ismbbkpunct | ||
| 526 | _ismbbkpunct_l | ||
| 527 | _ismbblead | ||
| 528 | _ismbblead_l | ||
| 529 | _ismbbprint | ||
| 530 | _ismbbprint_l | ||
| 531 | _ismbbpunct | ||
| 532 | _ismbbpunct_l | ||
| 533 | _ismbbtrail | ||
| 534 | _ismbbtrail_l | ||
| 535 | _ismbcalnum | ||
| 536 | _ismbcalnum_l | ||
| 537 | _ismbcalpha | ||
| 538 | _ismbcalpha_l | ||
| 539 | _ismbcblank | ||
| 540 | _ismbcblank_l | ||
| 541 | _ismbcdigit | ||
| 542 | _ismbcdigit_l | ||
| 543 | _ismbcgraph | ||
| 544 | _ismbcgraph_l | ||
| 545 | _ismbchira | ||
| 546 | _ismbchira_l | ||
| 547 | _ismbckata | ||
| 548 | _ismbckata_l | ||
| 549 | _ismbcl0 | ||
| 550 | _ismbcl0_l | ||
| 551 | _ismbcl1 | ||
| 552 | _ismbcl1_l | ||
| 553 | _ismbcl2 | ||
| 554 | _ismbcl2_l | ||
| 555 | _ismbclegal | ||
| 556 | _ismbclegal_l | ||
| 557 | _ismbclower | ||
| 558 | _ismbclower_l | ||
| 559 | _ismbcprint | ||
| 560 | _ismbcprint_l | ||
| 561 | _ismbcpunct | ||
| 562 | _ismbcpunct_l | ||
| 563 | _ismbcspace | ||
| 564 | _ismbcspace_l | ||
| 565 | _ismbcsymbol | ||
| 566 | _ismbcsymbol_l | ||
| 567 | _ismbcupper | ||
| 568 | _ismbcupper_l | ||
| 569 | _ismbslead | ||
| 570 | _ismbslead_l | ||
| 571 | _ismbstrail | ||
| 572 | _ismbstrail_l | ||
| 573 | _isnan | ||
| 574 | F_X64(_isnanf) | ||
| 575 | _isprint_l | ||
| 576 | _ispunct_l | ||
| 577 | _isspace_l | ||
| 578 | _isupper_l | ||
| 579 | _iswalnum_l | ||
| 580 | _iswalpha_l | ||
| 581 | _iswblank_l | ||
| 582 | _iswcntrl_l | ||
| 583 | _iswcsym_l | ||
| 584 | _iswcsymf_l | ||
| 585 | _iswctype_l | ||
| 586 | _iswdigit_l | ||
| 587 | _iswgraph_l | ||
| 588 | _iswlower_l | ||
| 589 | _iswprint_l | ||
| 590 | _iswpunct_l | ||
| 591 | _iswspace_l | ||
| 592 | _iswupper_l | ||
| 593 | _iswxdigit_l | ||
| 594 | _isxdigit_l | ||
| 595 | _itoa | ||
| 596 | _itoa_s | ||
| 597 | _itow | ||
| 598 | _itow_s | ||
| 599 | _j0 | ||
| 600 | _j1 | ||
| 601 | _jn | ||
| 602 | _kbhit | ||
| 603 | _ld_int | ||
| 604 | _ldclass | ||
| 605 | _ldexp | ||
| 606 | _ldlog | ||
| 607 | _ldpcomp | ||
| 608 | _ldpoly | ||
| 609 | _ldscale | ||
| 610 | _ldsign | ||
| 611 | _ldsin | ||
| 612 | _ldtest | ||
| 613 | _ldunscale | ||
| 614 | _lfind | ||
| 615 | _lfind_s | ||
| 616 | F_I386(_libm_sse2_acos_precise) | ||
| 617 | F_I386(_libm_sse2_asin_precise) | ||
| 618 | F_I386(_libm_sse2_atan_precise) | ||
| 619 | F_I386(_libm_sse2_cos_precise) | ||
| 620 | F_I386(_libm_sse2_exp_precise) | ||
| 621 | F_I386(_libm_sse2_log10_precise) | ||
| 622 | F_I386(_libm_sse2_log_precise) | ||
| 623 | F_I386(_libm_sse2_pow_precise) | ||
| 624 | F_I386(_libm_sse2_sin_precise) | ||
| 625 | F_I386(_libm_sse2_sqrt_precise) | ||
| 626 | F_I386(_libm_sse2_tan_precise) | ||
| 627 | _loaddll | ||
| 628 | F64(_local_unwind) | ||
| 629 | F_I386(_local_unwind2) | ||
| 630 | F_I386(_local_unwind4) | ||
| 631 | _localtime32 | ||
| 632 | _localtime32_s | ||
| 633 | _localtime64 | ||
| 634 | _localtime64_s | ||
| 635 | _lock_file | ||
| 636 | _lock_locales | ||
| 637 | _locking | ||
| 638 | _logb | ||
| 639 | F_NON_I386(_logbf) | ||
| 640 | F_I386(_longjmpex) | ||
| 641 | _lrotl | ||
| 642 | _lrotr | ||
| 643 | _lsearch | ||
| 644 | _lsearch_s | ||
| 645 | _lseek | ||
| 646 | _lseeki64 | ||
| 647 | _ltoa | ||
| 648 | _ltoa_s | ||
| 649 | _ltow | ||
| 650 | _ltow_s | ||
| 651 | _makepath | ||
| 652 | _makepath_s | ||
| 653 | _malloc_base | ||
| 654 | F_DEBUG(_malloc_dbg) | ||
| 655 | _mbbtombc | ||
| 656 | _mbbtombc_l | ||
| 657 | _mbbtype | ||
| 658 | _mbbtype_l | ||
| 659 | _mbcasemap DATA | ||
| 660 | _mbccpy | ||
| 661 | _mbccpy_l | ||
| 662 | _mbccpy_s | ||
| 663 | _mbccpy_s_l | ||
| 664 | _mbcjistojms | ||
| 665 | _mbcjistojms_l | ||
| 666 | _mbcjmstojis | ||
| 667 | _mbcjmstojis_l | ||
| 668 | _mbclen | ||
| 669 | _mbclen_l | ||
| 670 | _mbctohira | ||
| 671 | _mbctohira_l | ||
| 672 | _mbctokata | ||
| 673 | _mbctokata_l | ||
| 674 | _mbctolower | ||
| 675 | _mbctolower_l | ||
| 676 | _mbctombb | ||
| 677 | _mbctombb_l | ||
| 678 | _mbctoupper | ||
| 679 | _mbctoupper_l | ||
| 680 | _mblen_l | ||
| 681 | _mbsbtype | ||
| 682 | _mbsbtype_l | ||
| 683 | _mbscat_s | ||
| 684 | _mbscat_s_l | ||
| 685 | _mbschr | ||
| 686 | _mbschr_l | ||
| 687 | _mbscmp | ||
| 688 | _mbscmp_l | ||
| 689 | _mbscoll | ||
| 690 | _mbscoll_l | ||
| 691 | _mbscpy_s | ||
| 692 | _mbscpy_s_l | ||
| 693 | _mbscspn | ||
| 694 | _mbscspn_l | ||
| 695 | _mbsdec | ||
| 696 | _mbsdec_l | ||
| 697 | _mbsdup | ||
| 698 | F_DEBUG(_mbsdup_dbg) | ||
| 699 | _mbsicmp | ||
| 700 | _mbsicmp_l | ||
| 701 | _mbsicoll | ||
| 702 | _mbsicoll_l | ||
| 703 | _mbsinc | ||
| 704 | _mbsinc_l | ||
| 705 | _mbslen | ||
| 706 | _mbslen_l | ||
| 707 | _mbslwr | ||
| 708 | _mbslwr_l | ||
| 709 | _mbslwr_s | ||
| 710 | _mbslwr_s_l | ||
| 711 | _mbsnbcat | ||
| 712 | _mbsnbcat_l | ||
| 713 | _mbsnbcat_s | ||
| 714 | _mbsnbcat_s_l | ||
| 715 | _mbsnbcmp | ||
| 716 | _mbsnbcmp_l | ||
| 717 | _mbsnbcnt | ||
| 718 | _mbsnbcnt_l | ||
| 719 | _mbsnbcoll | ||
| 720 | _mbsnbcoll_l | ||
| 721 | _mbsnbcpy | ||
| 722 | _mbsnbcpy_l | ||
| 723 | _mbsnbcpy_s | ||
| 724 | _mbsnbcpy_s_l | ||
| 725 | _mbsnbicmp | ||
| 726 | _mbsnbicmp_l | ||
| 727 | _mbsnbicoll | ||
| 728 | _mbsnbicoll_l | ||
| 729 | _mbsnbset | ||
| 730 | _mbsnbset_l | ||
| 731 | _mbsnbset_s | ||
| 732 | _mbsnbset_s_l | ||
| 733 | _mbsncat | ||
| 734 | _mbsncat_l | ||
| 735 | _mbsncat_s | ||
| 736 | _mbsncat_s_l | ||
| 737 | _mbsnccnt | ||
| 738 | _mbsnccnt_l | ||
| 739 | _mbsncmp | ||
| 740 | _mbsncmp_l | ||
| 741 | _mbsncoll | ||
| 742 | _mbsncoll_l | ||
| 743 | _mbsncpy | ||
| 744 | _mbsncpy_l | ||
| 745 | _mbsncpy_s | ||
| 746 | _mbsncpy_s_l | ||
| 747 | _mbsnextc | ||
| 748 | _mbsnextc_l | ||
| 749 | _mbsnicmp | ||
| 750 | _mbsnicmp_l | ||
| 751 | _mbsnicoll | ||
| 752 | _mbsnicoll_l | ||
| 753 | _mbsninc | ||
| 754 | _mbsninc_l | ||
| 755 | _mbsnlen | ||
| 756 | _mbsnlen_l | ||
| 757 | _mbsnset | ||
| 758 | _mbsnset_l | ||
| 759 | _mbsnset_s | ||
| 760 | _mbsnset_s_l | ||
| 761 | _mbspbrk | ||
| 762 | _mbspbrk_l | ||
| 763 | _mbsrchr | ||
| 764 | _mbsrchr_l | ||
| 765 | _mbsrev | ||
| 766 | _mbsrev_l | ||
| 767 | _mbsset | ||
| 768 | _mbsset_l | ||
| 769 | _mbsset_s | ||
| 770 | _mbsset_s_l | ||
| 771 | _mbsspn | ||
| 772 | _mbsspn_l | ||
| 773 | _mbsspnp | ||
| 774 | _mbsspnp_l | ||
| 775 | _mbsstr | ||
| 776 | _mbsstr_l | ||
| 777 | _mbstok | ||
| 778 | _mbstok_l | ||
| 779 | _mbstok_s | ||
| 780 | _mbstok_s_l | ||
| 781 | _mbstowcs_l | ||
| 782 | _mbstowcs_s_l | ||
| 783 | _mbstrlen | ||
| 784 | _mbstrlen_l | ||
| 785 | _mbstrnlen | ||
| 786 | _mbstrnlen_l | ||
| 787 | _mbsupr | ||
| 788 | _mbsupr_l | ||
| 789 | _mbsupr_s | ||
| 790 | _mbsupr_s_l | ||
| 791 | _mbtowc_l | ||
| 792 | _memccpy | ||
| 793 | _memicmp | ||
| 794 | _memicmp_l | ||
| 795 | _mkdir | ||
| 796 | _mkgmtime32 | ||
| 797 | _mkgmtime64 | ||
| 798 | _mktemp | ||
| 799 | _mktemp_s | ||
| 800 | _mktime32 | ||
| 801 | _mktime64 | ||
| 802 | _msize | ||
| 803 | F_DEBUG(_msize_dbg) | ||
| 804 | _nextafter | ||
| 805 | F_X64(_nextafterf) | ||
| 806 | F_I386(_o__CIacos) | ||
| 807 | F_I386(_o__CIasin) | ||
| 808 | F_I386(_o__CIatan) | ||
| 809 | F_I386(_o__CIatan2) | ||
| 810 | F_I386(_o__CIcos) | ||
| 811 | F_I386(_o__CIcosh) | ||
| 812 | F_I386(_o__CIexp) | ||
| 813 | F_I386(_o__CIfmod) | ||
| 814 | F_I386(_o__CIlog) | ||
| 815 | F_I386(_o__CIlog10) | ||
| 816 | F_I386(_o__CIpow) | ||
| 817 | F_I386(_o__CIsin) | ||
| 818 | F_I386(_o__CIsinh) | ||
| 819 | F_I386(_o__CIsqrt) | ||
| 820 | F_I386(_o__CItan) | ||
| 821 | F_I386(_o__CItanh) | ||
| 822 | _o__Getdays | ||
| 823 | _o__Getmonths | ||
| 824 | _o__Gettnames | ||
| 825 | _o__Strftime | ||
| 826 | _o__W_Getdays | ||
| 827 | _o__W_Getmonths | ||
| 828 | _o__W_Gettnames | ||
| 829 | _o__Wcsftime | ||
| 830 | _o___acrt_iob_func | ||
| 831 | _o___conio_common_vcprintf | ||
| 832 | _o___conio_common_vcprintf_p | ||
| 833 | _o___conio_common_vcprintf_s | ||
| 834 | _o___conio_common_vcscanf | ||
| 835 | _o___conio_common_vcwprintf | ||
| 836 | _o___conio_common_vcwprintf_p | ||
| 837 | _o___conio_common_vcwprintf_s | ||
| 838 | _o___conio_common_vcwscanf | ||
| 839 | _o___daylight | ||
| 840 | _o___dstbias | ||
| 841 | _o___fpe_flt_rounds | ||
| 842 | F_I386(_o___libm_sse2_acos) | ||
| 843 | F_I386(_o___libm_sse2_acosf) | ||
| 844 | F_I386(_o___libm_sse2_asin) | ||
| 845 | F_I386(_o___libm_sse2_asinf) | ||
| 846 | F_I386(_o___libm_sse2_atan) | ||
| 847 | F_I386(_o___libm_sse2_atan2) | ||
| 848 | F_I386(_o___libm_sse2_atanf) | ||
| 849 | F_I386(_o___libm_sse2_cos) | ||
| 850 | F_I386(_o___libm_sse2_cosf) | ||
| 851 | F_I386(_o___libm_sse2_exp) | ||
| 852 | F_I386(_o___libm_sse2_expf) | ||
| 853 | F_I386(_o___libm_sse2_log) | ||
| 854 | F_I386(_o___libm_sse2_log10) | ||
| 855 | F_I386(_o___libm_sse2_log10f) | ||
| 856 | F_I386(_o___libm_sse2_logf) | ||
| 857 | F_I386(_o___libm_sse2_pow) | ||
| 858 | F_I386(_o___libm_sse2_powf) | ||
| 859 | F_I386(_o___libm_sse2_sin) | ||
| 860 | F_I386(_o___libm_sse2_sinf) | ||
| 861 | F_I386(_o___libm_sse2_tan) | ||
| 862 | F_I386(_o___libm_sse2_tanf) | ||
| 863 | _o___p___argc | ||
| 864 | _o___p___argv | ||
| 865 | _o___p___wargv | ||
| 866 | _o___p__acmdln | ||
| 867 | _o___p__commode | ||
| 868 | _o___p__environ | ||
| 869 | _o___p__fmode | ||
| 870 | _o___p__mbcasemap | ||
| 871 | _o___p__mbctype | ||
| 872 | _o___p__pgmptr | ||
| 873 | _o___p__wcmdln | ||
| 874 | _o___p__wenviron | ||
| 875 | _o___p__wpgmptr | ||
| 876 | _o___pctype_func | ||
| 877 | _o___pwctype_func | ||
| 878 | _o___stdio_common_vfprintf | ||
| 879 | _o___stdio_common_vfprintf_p | ||
| 880 | _o___stdio_common_vfprintf_s | ||
| 881 | _o___stdio_common_vfscanf | ||
| 882 | _o___stdio_common_vfwprintf | ||
| 883 | _o___stdio_common_vfwprintf_p | ||
| 884 | _o___stdio_common_vfwprintf_s | ||
| 885 | _o___stdio_common_vfwscanf | ||
| 886 | _o___stdio_common_vsnprintf_s | ||
| 887 | _o___stdio_common_vsnwprintf_s | ||
| 888 | _o___stdio_common_vsprintf | ||
| 889 | _o___stdio_common_vsprintf_p | ||
| 890 | _o___stdio_common_vsprintf_s | ||
| 891 | _o___stdio_common_vsscanf | ||
| 892 | _o___stdio_common_vswprintf | ||
| 893 | _o___stdio_common_vswprintf_p | ||
| 894 | _o___stdio_common_vswprintf_s | ||
| 895 | _o___stdio_common_vswscanf | ||
| 896 | _o___timezone | ||
| 897 | _o___tzname | ||
| 898 | _o___wcserror | ||
| 899 | _o__access | ||
| 900 | _o__access_s | ||
| 901 | _o__aligned_free | ||
| 902 | _o__aligned_malloc | ||
| 903 | _o__aligned_msize | ||
| 904 | _o__aligned_offset_malloc | ||
| 905 | _o__aligned_offset_realloc | ||
| 906 | _o__aligned_offset_recalloc | ||
| 907 | _o__aligned_realloc | ||
| 908 | _o__aligned_recalloc | ||
| 909 | _o__atodbl | ||
| 910 | _o__atodbl_l | ||
| 911 | _o__atof_l | ||
| 912 | _o__atoflt | ||
| 913 | _o__atoflt_l | ||
| 914 | _o__atoi64 | ||
| 915 | _o__atoi64_l | ||
| 916 | _o__atoi_l | ||
| 917 | _o__atol_l | ||
| 918 | _o__atoldbl | ||
| 919 | _o__atoldbl_l | ||
| 920 | _o__atoll_l | ||
| 921 | _o__beep | ||
| 922 | _o__beginthread | ||
| 923 | _o__beginthreadex | ||
| 924 | _o__cabs | ||
| 925 | _o__callnewh | ||
| 926 | _o__calloc_base | ||
| 927 | _o__cgets | ||
| 928 | _o__cgets_s | ||
| 929 | _o__cgetws | ||
| 930 | _o__cgetws_s | ||
| 931 | _o__chdir | ||
| 932 | _o__chdrive | ||
| 933 | _o__chmod | ||
| 934 | _o__chsize | ||
| 935 | _o__chsize_s | ||
| 936 | _o__close | ||
| 937 | _o__commit | ||
| 938 | _o__configure_wide_argv | ||
| 939 | _o__cputs | ||
| 940 | _o__cputws | ||
| 941 | _o__creat | ||
| 942 | _o__create_locale | ||
| 943 | _o__ctime32_s | ||
| 944 | _o__ctime64_s | ||
| 945 | _o__cwait | ||
| 946 | _o__d_int | ||
| 947 | _o__dclass | ||
| 948 | _o__difftime32 | ||
| 949 | _o__difftime64 | ||
| 950 | _o__dlog | ||
| 951 | _o__dnorm | ||
| 952 | _o__dpcomp | ||
| 953 | _o__dpoly | ||
| 954 | _o__dscale | ||
| 955 | _o__dsign | ||
| 956 | _o__dsin | ||
| 957 | _o__dtest | ||
| 958 | _o__dunscale | ||
| 959 | _o__dup | ||
| 960 | _o__dup2 | ||
| 961 | _o__dupenv_s | ||
| 962 | _o__ecvt | ||
| 963 | _o__ecvt_s | ||
| 964 | _o__endthread | ||
| 965 | _o__endthreadex | ||
| 966 | _o__eof | ||
| 967 | _o__errno | ||
| 968 | _o__except1 | ||
| 969 | _o__execute_onexit_table | ||
| 970 | _o__execv | ||
| 971 | _o__execve | ||
| 972 | _o__execvp | ||
| 973 | _o__execvpe | ||
| 974 | _o__expand | ||
| 975 | _o__fclose_nolock | ||
| 976 | _o__fcloseall | ||
| 977 | _o__fcvt | ||
| 978 | _o__fcvt_s | ||
| 979 | _o__fd_int | ||
| 980 | _o__fdclass | ||
| 981 | _o__fdexp | ||
| 982 | _o__fdlog | ||
| 983 | _o__fdopen | ||
| 984 | _o__fdpcomp | ||
| 985 | _o__fdpoly | ||
| 986 | _o__fdscale | ||
| 987 | _o__fdsign | ||
| 988 | _o__fdsin | ||
| 989 | _o__fflush_nolock | ||
| 990 | _o__fgetc_nolock | ||
| 991 | _o__fgetchar | ||
| 992 | _o__fgetwc_nolock | ||
| 993 | _o__fgetwchar | ||
| 994 | _o__filelength | ||
| 995 | _o__filelengthi64 | ||
| 996 | _o__fileno | ||
| 997 | _o__findclose | ||
| 998 | _o__findfirst32 | ||
| 999 | _o__findfirst32i64 | ||
| 1000 | _o__findfirst64 | ||
| 1001 | _o__findfirst64i32 | ||
| 1002 | _o__findnext32 | ||
| 1003 | _o__findnext32i64 | ||
| 1004 | _o__findnext64 | ||
| 1005 | _o__findnext64i32 | ||
| 1006 | _o__flushall | ||
| 1007 | _o__fpclass | ||
| 1008 | F_X64(_o__fpclassf) | ||
| 1009 | _o__fputc_nolock | ||
| 1010 | _o__fputchar | ||
| 1011 | _o__fputwc_nolock | ||
| 1012 | _o__fputwchar | ||
| 1013 | _o__fread_nolock | ||
| 1014 | _o__fread_nolock_s | ||
| 1015 | _o__free_base | ||
| 1016 | _o__free_locale | ||
| 1017 | _o__fseek_nolock | ||
| 1018 | _o__fseeki64 | ||
| 1019 | _o__fseeki64_nolock | ||
| 1020 | _o__fsopen | ||
| 1021 | _o__fstat32 | ||
| 1022 | _o__fstat32i64 | ||
| 1023 | _o__fstat64 | ||
| 1024 | _o__fstat64i32 | ||
| 1025 | _o__ftell_nolock | ||
| 1026 | _o__ftelli64 | ||
| 1027 | _o__ftelli64_nolock | ||
| 1028 | _o__ftime32 | ||
| 1029 | _o__ftime32_s | ||
| 1030 | _o__ftime64 | ||
| 1031 | _o__ftime64_s | ||
| 1032 | _o__fullpath | ||
| 1033 | _o__futime32 | ||
| 1034 | _o__futime64 | ||
| 1035 | _o__fwrite_nolock | ||
| 1036 | _o__gcvt | ||
| 1037 | _o__gcvt_s | ||
| 1038 | _o__get_daylight | ||
| 1039 | _o__get_doserrno | ||
| 1040 | _o__get_dstbias | ||
| 1041 | _o__get_errno | ||
| 1042 | _o__get_fmode | ||
| 1043 | _o__get_heap_handle | ||
| 1044 | _o__get_invalid_parameter_handler | ||
| 1045 | _o__get_narrow_winmain_command_line | ||
| 1046 | _o__get_osfhandle | ||
| 1047 | _o__get_pgmptr | ||
| 1048 | _o__get_stream_buffer_pointers | ||
| 1049 | _o__get_terminate | ||
| 1050 | _o__get_thread_local_invalid_parameter_handler | ||
| 1051 | _o__get_timezone | ||
| 1052 | _o__get_tzname | ||
| 1053 | _o__get_wide_winmain_command_line | ||
| 1054 | _o__get_wpgmptr | ||
| 1055 | _o__getc_nolock | ||
| 1056 | _o__getch | ||
| 1057 | _o__getch_nolock | ||
| 1058 | _o__getche | ||
| 1059 | _o__getche_nolock | ||
| 1060 | _o__getcwd | ||
| 1061 | _o__getdcwd | ||
| 1062 | _o__getdiskfree | ||
| 1063 | _o__getdllprocaddr | ||
| 1064 | _o__getdrive | ||
| 1065 | _o__getdrives | ||
| 1066 | _o__getmbcp | ||
| 1067 | _o__getsystime | ||
| 1068 | _o__getw | ||
| 1069 | _o__getwc_nolock | ||
| 1070 | _o__getwch | ||
| 1071 | _o__getwch_nolock | ||
| 1072 | _o__getwche | ||
| 1073 | _o__getwche_nolock | ||
| 1074 | _o__getws | ||
| 1075 | _o__getws_s | ||
| 1076 | _o__gmtime32 | ||
| 1077 | _o__gmtime32_s | ||
| 1078 | _o__gmtime64 | ||
| 1079 | _o__gmtime64_s | ||
| 1080 | _o__heapchk | ||
| 1081 | _o__heapmin | ||
| 1082 | _o__hypot | ||
| 1083 | _o__hypotf | ||
| 1084 | _o__i64toa | ||
| 1085 | _o__i64toa_s | ||
| 1086 | _o__i64tow | ||
| 1087 | _o__i64tow_s | ||
| 1088 | _o__initialize_onexit_table | ||
| 1089 | _o__invalid_parameter_noinfo | ||
| 1090 | _o__invalid_parameter_noinfo_noreturn | ||
| 1091 | _o__isatty | ||
| 1092 | _o__isctype | ||
| 1093 | _o__isctype_l | ||
| 1094 | _o__isleadbyte_l | ||
| 1095 | _o__ismbbalnum | ||
| 1096 | _o__ismbbalnum_l | ||
| 1097 | _o__ismbbalpha | ||
| 1098 | _o__ismbbalpha_l | ||
| 1099 | _o__ismbbblank | ||
| 1100 | _o__ismbbblank_l | ||
| 1101 | _o__ismbbgraph | ||
| 1102 | _o__ismbbgraph_l | ||
| 1103 | _o__ismbbkalnum | ||
| 1104 | _o__ismbbkalnum_l | ||
| 1105 | _o__ismbbkana | ||
| 1106 | _o__ismbbkana_l | ||
| 1107 | _o__ismbbkprint | ||
| 1108 | _o__ismbbkprint_l | ||
| 1109 | _o__ismbbkpunct | ||
| 1110 | _o__ismbbkpunct_l | ||
| 1111 | _o__ismbblead | ||
| 1112 | _o__ismbblead_l | ||
| 1113 | _o__ismbbprint | ||
| 1114 | _o__ismbbprint_l | ||
| 1115 | _o__ismbbpunct | ||
| 1116 | _o__ismbbpunct_l | ||
| 1117 | _o__ismbbtrail | ||
| 1118 | _o__ismbbtrail_l | ||
| 1119 | _o__ismbcalnum | ||
| 1120 | _o__ismbcalnum_l | ||
| 1121 | _o__ismbcalpha | ||
| 1122 | _o__ismbcalpha_l | ||
| 1123 | _o__ismbcblank | ||
| 1124 | _o__ismbcblank_l | ||
| 1125 | _o__ismbcdigit | ||
| 1126 | _o__ismbcdigit_l | ||
| 1127 | _o__ismbcgraph | ||
| 1128 | _o__ismbcgraph_l | ||
| 1129 | _o__ismbchira | ||
| 1130 | _o__ismbchira_l | ||
| 1131 | _o__ismbckata | ||
| 1132 | _o__ismbckata_l | ||
| 1133 | _o__ismbcl0 | ||
| 1134 | _o__ismbcl0_l | ||
| 1135 | _o__ismbcl1 | ||
| 1136 | _o__ismbcl1_l | ||
| 1137 | _o__ismbcl2 | ||
| 1138 | _o__ismbcl2_l | ||
| 1139 | _o__ismbclegal | ||
| 1140 | _o__ismbclegal_l | ||
| 1141 | _o__ismbclower | ||
| 1142 | _o__ismbclower_l | ||
| 1143 | _o__ismbcprint | ||
| 1144 | _o__ismbcprint_l | ||
| 1145 | _o__ismbcpunct | ||
| 1146 | _o__ismbcpunct_l | ||
| 1147 | _o__ismbcspace | ||
| 1148 | _o__ismbcspace_l | ||
| 1149 | _o__ismbcsymbol | ||
| 1150 | _o__ismbcsymbol_l | ||
| 1151 | _o__ismbcupper | ||
| 1152 | _o__ismbcupper_l | ||
| 1153 | _o__ismbslead | ||
| 1154 | _o__ismbslead_l | ||
| 1155 | _o__ismbstrail | ||
| 1156 | _o__ismbstrail_l | ||
| 1157 | _o__iswctype_l | ||
| 1158 | _o__itoa | ||
| 1159 | _o__itoa_s | ||
| 1160 | _o__itow | ||
| 1161 | _o__itow_s | ||
| 1162 | _o__j0 | ||
| 1163 | _o__j1 | ||
| 1164 | _o__jn | ||
| 1165 | _o__kbhit | ||
| 1166 | _o__ld_int | ||
| 1167 | _o__ldclass | ||
| 1168 | _o__ldexp | ||
| 1169 | _o__ldlog | ||
| 1170 | _o__ldpcomp | ||
| 1171 | _o__ldpoly | ||
| 1172 | _o__ldscale | ||
| 1173 | _o__ldsign | ||
| 1174 | _o__ldsin | ||
| 1175 | _o__ldtest | ||
| 1176 | _o__ldunscale | ||
| 1177 | _o__lfind | ||
| 1178 | _o__lfind_s | ||
| 1179 | F_I386(_o__libm_sse2_acos_precise) | ||
| 1180 | F_I386(_o__libm_sse2_asin_precise) | ||
| 1181 | F_I386(_o__libm_sse2_atan_precise) | ||
| 1182 | F_I386(_o__libm_sse2_cos_precise) | ||
| 1183 | F_I386(_o__libm_sse2_exp_precise) | ||
| 1184 | F_I386(_o__libm_sse2_log10_precise) | ||
| 1185 | F_I386(_o__libm_sse2_log_precise) | ||
| 1186 | F_I386(_o__libm_sse2_pow_precise) | ||
| 1187 | F_I386(_o__libm_sse2_sin_precise) | ||
| 1188 | F_I386(_o__libm_sse2_sqrt_precise) | ||
| 1189 | F_I386(_o__libm_sse2_tan_precise) | ||
| 1190 | _o__loaddll | ||
| 1191 | _o__localtime32 | ||
| 1192 | _o__localtime32_s | ||
| 1193 | _o__localtime64 | ||
| 1194 | _o__localtime64_s | ||
| 1195 | _o__lock_file | ||
| 1196 | _o__locking | ||
| 1197 | _o__logb | ||
| 1198 | F_NON_I386(_o__logbf) | ||
| 1199 | _o__lsearch | ||
| 1200 | _o__lsearch_s | ||
| 1201 | _o__lseek | ||
| 1202 | _o__lseeki64 | ||
| 1203 | _o__ltoa | ||
| 1204 | _o__ltoa_s | ||
| 1205 | _o__ltow | ||
| 1206 | _o__ltow_s | ||
| 1207 | _o__makepath | ||
| 1208 | _o__makepath_s | ||
| 1209 | _o__malloc_base | ||
| 1210 | _o__mbbtombc | ||
| 1211 | _o__mbbtombc_l | ||
| 1212 | _o__mbbtype | ||
| 1213 | _o__mbbtype_l | ||
| 1214 | _o__mbccpy | ||
| 1215 | _o__mbccpy_l | ||
| 1216 | _o__mbccpy_s | ||
| 1217 | _o__mbccpy_s_l | ||
| 1218 | _o__mbcjistojms | ||
| 1219 | _o__mbcjistojms_l | ||
| 1220 | _o__mbcjmstojis | ||
| 1221 | _o__mbcjmstojis_l | ||
| 1222 | _o__mbclen | ||
| 1223 | _o__mbclen_l | ||
| 1224 | _o__mbctohira | ||
| 1225 | _o__mbctohira_l | ||
| 1226 | _o__mbctokata | ||
| 1227 | _o__mbctokata_l | ||
| 1228 | _o__mbctolower | ||
| 1229 | _o__mbctolower_l | ||
| 1230 | _o__mbctombb | ||
| 1231 | _o__mbctombb_l | ||
| 1232 | _o__mbctoupper | ||
| 1233 | _o__mbctoupper_l | ||
| 1234 | _o__mblen_l | ||
| 1235 | _o__mbsbtype | ||
| 1236 | _o__mbsbtype_l | ||
| 1237 | _o__mbscat_s | ||
| 1238 | _o__mbscat_s_l | ||
| 1239 | _o__mbschr | ||
| 1240 | _o__mbschr_l | ||
| 1241 | _o__mbscmp | ||
| 1242 | _o__mbscmp_l | ||
| 1243 | _o__mbscoll | ||
| 1244 | _o__mbscoll_l | ||
| 1245 | _o__mbscpy_s | ||
| 1246 | _o__mbscpy_s_l | ||
| 1247 | _o__mbscspn | ||
| 1248 | _o__mbscspn_l | ||
| 1249 | _o__mbsdec | ||
| 1250 | _o__mbsdec_l | ||
| 1251 | _o__mbsicmp | ||
| 1252 | _o__mbsicmp_l | ||
| 1253 | _o__mbsicoll | ||
| 1254 | _o__mbsicoll_l | ||
| 1255 | _o__mbsinc | ||
| 1256 | _o__mbsinc_l | ||
| 1257 | _o__mbslen | ||
| 1258 | _o__mbslen_l | ||
| 1259 | _o__mbslwr | ||
| 1260 | _o__mbslwr_l | ||
| 1261 | _o__mbslwr_s | ||
| 1262 | _o__mbslwr_s_l | ||
| 1263 | _o__mbsnbcat | ||
| 1264 | _o__mbsnbcat_l | ||
| 1265 | _o__mbsnbcat_s | ||
| 1266 | _o__mbsnbcat_s_l | ||
| 1267 | _o__mbsnbcmp | ||
| 1268 | _o__mbsnbcmp_l | ||
| 1269 | _o__mbsnbcnt | ||
| 1270 | _o__mbsnbcnt_l | ||
| 1271 | _o__mbsnbcoll | ||
| 1272 | _o__mbsnbcoll_l | ||
| 1273 | _o__mbsnbcpy | ||
| 1274 | _o__mbsnbcpy_l | ||
| 1275 | _o__mbsnbcpy_s | ||
| 1276 | _o__mbsnbcpy_s_l | ||
| 1277 | _o__mbsnbicmp | ||
| 1278 | _o__mbsnbicmp_l | ||
| 1279 | _o__mbsnbicoll | ||
| 1280 | _o__mbsnbicoll_l | ||
| 1281 | _o__mbsnbset | ||
| 1282 | _o__mbsnbset_l | ||
| 1283 | _o__mbsnbset_s | ||
| 1284 | _o__mbsnbset_s_l | ||
| 1285 | _o__mbsncat | ||
| 1286 | _o__mbsncat_l | ||
| 1287 | _o__mbsncat_s | ||
| 1288 | _o__mbsncat_s_l | ||
| 1289 | _o__mbsnccnt | ||
| 1290 | _o__mbsnccnt_l | ||
| 1291 | _o__mbsncmp | ||
| 1292 | _o__mbsncmp_l | ||
| 1293 | _o__mbsncoll | ||
| 1294 | _o__mbsncoll_l | ||
| 1295 | _o__mbsncpy | ||
| 1296 | _o__mbsncpy_l | ||
| 1297 | _o__mbsncpy_s | ||
| 1298 | _o__mbsncpy_s_l | ||
| 1299 | _o__mbsnextc | ||
| 1300 | _o__mbsnextc_l | ||
| 1301 | _o__mbsnicmp | ||
| 1302 | _o__mbsnicmp_l | ||
| 1303 | _o__mbsnicoll | ||
| 1304 | _o__mbsnicoll_l | ||
| 1305 | _o__mbsninc | ||
| 1306 | _o__mbsninc_l | ||
| 1307 | _o__mbsnlen | ||
| 1308 | _o__mbsnlen_l | ||
| 1309 | _o__mbsnset | ||
| 1310 | _o__mbsnset_l | ||
| 1311 | _o__mbsnset_s | ||
| 1312 | _o__mbsnset_s_l | ||
| 1313 | _o__mbspbrk | ||
| 1314 | _o__mbspbrk_l | ||
| 1315 | _o__mbsrchr | ||
| 1316 | _o__mbsrchr_l | ||
| 1317 | _o__mbsrev | ||
| 1318 | _o__mbsrev_l | ||
| 1319 | _o__mbsset | ||
| 1320 | _o__mbsset_l | ||
| 1321 | _o__mbsset_s | ||
| 1322 | _o__mbsset_s_l | ||
| 1323 | _o__mbsspn | ||
| 1324 | _o__mbsspn_l | ||
| 1325 | _o__mbsspnp | ||
| 1326 | _o__mbsspnp_l | ||
| 1327 | _o__mbsstr | ||
| 1328 | _o__mbsstr_l | ||
| 1329 | _o__mbstok | ||
| 1330 | _o__mbstok_l | ||
| 1331 | _o__mbstok_s | ||
| 1332 | _o__mbstok_s_l | ||
| 1333 | _o__mbstowcs_l | ||
| 1334 | _o__mbstowcs_s_l | ||
| 1335 | _o__mbstrlen | ||
| 1336 | _o__mbstrlen_l | ||
| 1337 | _o__mbstrnlen | ||
| 1338 | _o__mbstrnlen_l | ||
| 1339 | _o__mbsupr | ||
| 1340 | _o__mbsupr_l | ||
| 1341 | _o__mbsupr_s | ||
| 1342 | _o__mbsupr_s_l | ||
| 1343 | _o__mbtowc_l | ||
| 1344 | _o__memicmp | ||
| 1345 | _o__memicmp_l | ||
| 1346 | _o__mkdir | ||
| 1347 | _o__mkgmtime32 | ||
| 1348 | _o__mkgmtime64 | ||
| 1349 | _o__mktemp | ||
| 1350 | _o__mktemp_s | ||
| 1351 | _o__mktime32 | ||
| 1352 | _o__mktime64 | ||
| 1353 | _o__msize | ||
| 1354 | _o__nextafter | ||
| 1355 | F_X64(_o__nextafterf) | ||
| 1356 | _o__open_osfhandle | ||
| 1357 | _o__pclose | ||
| 1358 | _o__pipe | ||
| 1359 | _o__popen | ||
| 1360 | _o__putc_nolock | ||
| 1361 | _o__putch | ||
| 1362 | _o__putch_nolock | ||
| 1363 | _o__putenv | ||
| 1364 | _o__putenv_s | ||
| 1365 | _o__putw | ||
| 1366 | _o__putwc_nolock | ||
| 1367 | _o__putwch | ||
| 1368 | _o__putwch_nolock | ||
| 1369 | _o__putws | ||
| 1370 | _o__read | ||
| 1371 | _o__realloc_base | ||
| 1372 | _o__recalloc | ||
| 1373 | _o__register_onexit_function | ||
| 1374 | _o__resetstkoflw | ||
| 1375 | _o__rmdir | ||
| 1376 | _o__rmtmp | ||
| 1377 | _o__scalb | ||
| 1378 | F_X64(_o__scalbf) | ||
| 1379 | _o__searchenv | ||
| 1380 | _o__searchenv_s | ||
| 1381 | _o__set_abort_behavior | ||
| 1382 | _o__set_doserrno | ||
| 1383 | _o__set_errno | ||
| 1384 | _o__set_invalid_parameter_handler | ||
| 1385 | _o__set_new_handler | ||
| 1386 | _o__set_new_mode | ||
| 1387 | _o__set_thread_local_invalid_parameter_handler | ||
| 1388 | _o__seterrormode | ||
| 1389 | _o__setmbcp | ||
| 1390 | _o__setmode | ||
| 1391 | _o__setsystime | ||
| 1392 | _o__sleep | ||
| 1393 | _o__sopen | ||
| 1394 | _o__sopen_dispatch | ||
| 1395 | _o__sopen_s | ||
| 1396 | _o__spawnv | ||
| 1397 | _o__spawnve | ||
| 1398 | _o__spawnvp | ||
| 1399 | _o__spawnvpe | ||
| 1400 | _o__splitpath | ||
| 1401 | _o__splitpath_s | ||
| 1402 | _o__stat32 | ||
| 1403 | _o__stat32i64 | ||
| 1404 | _o__stat64 | ||
| 1405 | _o__stat64i32 | ||
| 1406 | _o__strcoll_l | ||
| 1407 | _o__strdate | ||
| 1408 | _o__strdate_s | ||
| 1409 | _o__strdup | ||
| 1410 | _o__strerror | ||
| 1411 | _o__strerror_s | ||
| 1412 | _o__strftime_l | ||
| 1413 | _o__stricmp | ||
| 1414 | _o__stricmp_l | ||
| 1415 | _o__stricoll | ||
| 1416 | _o__stricoll_l | ||
| 1417 | _o__strlwr | ||
| 1418 | _o__strlwr_l | ||
| 1419 | _o__strlwr_s | ||
| 1420 | _o__strlwr_s_l | ||
| 1421 | _o__strncoll | ||
| 1422 | _o__strncoll_l | ||
| 1423 | _o__strnicmp | ||
| 1424 | _o__strnicmp_l | ||
| 1425 | _o__strnicoll | ||
| 1426 | _o__strnicoll_l | ||
| 1427 | _o__strnset_s | ||
| 1428 | _o__strset_s | ||
| 1429 | _o__strtime | ||
| 1430 | _o__strtime_s | ||
| 1431 | _o__strtod_l | ||
| 1432 | _o__strtof_l | ||
| 1433 | _o__strtoi64 | ||
| 1434 | _o__strtoi64_l | ||
| 1435 | _o__strtol_l | ||
| 1436 | F_ARM_ANY(_o__strtold_l) ; Can't use long double functions from the CRT on x86 | ||
| 1437 | _o__strtoll_l | ||
| 1438 | _o__strtoui64 | ||
| 1439 | _o__strtoui64_l | ||
| 1440 | _o__strtoul_l | ||
| 1441 | _o__strtoull_l | ||
| 1442 | _o__strupr | ||
| 1443 | _o__strupr_l | ||
| 1444 | _o__strupr_s | ||
| 1445 | _o__strupr_s_l | ||
| 1446 | _o__strxfrm_l | ||
| 1447 | _o__swab | ||
| 1448 | _o__tell | ||
| 1449 | _o__telli64 | ||
| 1450 | _o__timespec32_get | ||
| 1451 | _o__timespec64_get | ||
| 1452 | _o__tolower | ||
| 1453 | _o__tolower_l | ||
| 1454 | _o__toupper | ||
| 1455 | _o__toupper_l | ||
| 1456 | _o__towlower_l | ||
| 1457 | _o__towupper_l | ||
| 1458 | _o__tzset | ||
| 1459 | _o__ui64toa | ||
| 1460 | _o__ui64toa_s | ||
| 1461 | _o__ui64tow | ||
| 1462 | _o__ui64tow_s | ||
| 1463 | _o__ultoa | ||
| 1464 | _o__ultoa_s | ||
| 1465 | _o__ultow | ||
| 1466 | _o__ultow_s | ||
| 1467 | _o__umask | ||
| 1468 | _o__umask_s | ||
| 1469 | _o__ungetc_nolock | ||
| 1470 | _o__ungetch | ||
| 1471 | _o__ungetch_nolock | ||
| 1472 | _o__ungetwc_nolock | ||
| 1473 | _o__ungetwch | ||
| 1474 | _o__ungetwch_nolock | ||
| 1475 | _o__unlink | ||
| 1476 | _o__unloaddll | ||
| 1477 | _o__unlock_file | ||
| 1478 | _o__utime32 | ||
| 1479 | _o__utime64 | ||
| 1480 | _o__waccess | ||
| 1481 | _o__waccess_s | ||
| 1482 | _o__wasctime | ||
| 1483 | _o__wasctime_s | ||
| 1484 | _o__wchdir | ||
| 1485 | _o__wchmod | ||
| 1486 | _o__wcreat | ||
| 1487 | _o__wcreate_locale | ||
| 1488 | _o__wcscoll_l | ||
| 1489 | _o__wcsdup | ||
| 1490 | _o__wcserror | ||
| 1491 | _o__wcserror_s | ||
| 1492 | _o__wcsftime_l | ||
| 1493 | _o__wcsicmp | ||
| 1494 | _o__wcsicmp_l | ||
| 1495 | _o__wcsicoll | ||
| 1496 | _o__wcsicoll_l | ||
| 1497 | _o__wcslwr | ||
| 1498 | _o__wcslwr_l | ||
| 1499 | _o__wcslwr_s | ||
| 1500 | _o__wcslwr_s_l | ||
| 1501 | _o__wcsncoll | ||
| 1502 | _o__wcsncoll_l | ||
| 1503 | _o__wcsnicmp | ||
| 1504 | _o__wcsnicmp_l | ||
| 1505 | _o__wcsnicoll | ||
| 1506 | _o__wcsnicoll_l | ||
| 1507 | _o__wcsnset | ||
| 1508 | _o__wcsnset_s | ||
| 1509 | _o__wcsset | ||
| 1510 | _o__wcsset_s | ||
| 1511 | _o__wcstod_l | ||
| 1512 | _o__wcstof_l | ||
| 1513 | _o__wcstoi64 | ||
| 1514 | _o__wcstoi64_l | ||
| 1515 | _o__wcstol_l | ||
| 1516 | F_ARM_ANY(_o__wcstold_l) ; Can't use long double functions from the CRT on x86 | ||
| 1517 | _o__wcstoll_l | ||
| 1518 | _o__wcstombs_l | ||
| 1519 | _o__wcstombs_s_l | ||
| 1520 | _o__wcstoui64 | ||
| 1521 | _o__wcstoui64_l | ||
| 1522 | _o__wcstoul_l | ||
| 1523 | _o__wcstoull_l | ||
| 1524 | _o__wcsupr | ||
| 1525 | _o__wcsupr_l | ||
| 1526 | _o__wcsupr_s | ||
| 1527 | _o__wcsupr_s_l | ||
| 1528 | _o__wcsxfrm_l | ||
| 1529 | _o__wctime32 | ||
| 1530 | _o__wctime32_s | ||
| 1531 | _o__wctime64 | ||
| 1532 | _o__wctime64_s | ||
| 1533 | _o__wctomb_l | ||
| 1534 | _o__wctomb_s_l | ||
| 1535 | _o__wdupenv_s | ||
| 1536 | _o__wexecv | ||
| 1537 | _o__wexecve | ||
| 1538 | _o__wexecvp | ||
| 1539 | _o__wexecvpe | ||
| 1540 | _o__wfdopen | ||
| 1541 | _o__wfindfirst32 | ||
| 1542 | _o__wfindfirst32i64 | ||
| 1543 | _o__wfindfirst64 | ||
| 1544 | _o__wfindfirst64i32 | ||
| 1545 | _o__wfindnext32 | ||
| 1546 | _o__wfindnext32i64 | ||
| 1547 | _o__wfindnext64 | ||
| 1548 | _o__wfindnext64i32 | ||
| 1549 | _o__wfopen | ||
| 1550 | _o__wfopen_s | ||
| 1551 | _o__wfreopen | ||
| 1552 | _o__wfreopen_s | ||
| 1553 | _o__wfsopen | ||
| 1554 | _o__wfullpath | ||
| 1555 | _o__wgetcwd | ||
| 1556 | _o__wgetdcwd | ||
| 1557 | _o__wgetenv | ||
| 1558 | _o__wgetenv_s | ||
| 1559 | _o__wmakepath | ||
| 1560 | _o__wmakepath_s | ||
| 1561 | _o__wmkdir | ||
| 1562 | _o__wmktemp | ||
| 1563 | _o__wmktemp_s | ||
| 1564 | _o__wperror | ||
| 1565 | _o__wpopen | ||
| 1566 | _o__wputenv | ||
| 1567 | _o__wputenv_s | ||
| 1568 | _o__wremove | ||
| 1569 | _o__wrename | ||
| 1570 | _o__write | ||
| 1571 | _o__wrmdir | ||
| 1572 | _o__wsearchenv | ||
| 1573 | _o__wsearchenv_s | ||
| 1574 | _o__wsetlocale | ||
| 1575 | _o__wsopen_dispatch | ||
| 1576 | _o__wsopen_s | ||
| 1577 | _o__wspawnv | ||
| 1578 | _o__wspawnve | ||
| 1579 | _o__wspawnvp | ||
| 1580 | _o__wspawnvpe | ||
| 1581 | _o__wsplitpath | ||
| 1582 | _o__wsplitpath_s | ||
| 1583 | _o__wstat32 | ||
| 1584 | _o__wstat32i64 | ||
| 1585 | _o__wstat64 | ||
| 1586 | _o__wstat64i32 | ||
| 1587 | _o__wstrdate | ||
| 1588 | _o__wstrdate_s | ||
| 1589 | _o__wstrtime | ||
| 1590 | _o__wstrtime_s | ||
| 1591 | _o__wsystem | ||
| 1592 | _o__wtmpnam_s | ||
| 1593 | _o__wtof | ||
| 1594 | _o__wtof_l | ||
| 1595 | _o__wtoi | ||
| 1596 | _o__wtoi64 | ||
| 1597 | _o__wtoi64_l | ||
| 1598 | _o__wtoi_l | ||
| 1599 | _o__wtol | ||
| 1600 | _o__wtol_l | ||
| 1601 | _o__wtoll | ||
| 1602 | _o__wtoll_l | ||
| 1603 | _o__wunlink | ||
| 1604 | _o__wutime32 | ||
| 1605 | _o__wutime64 | ||
| 1606 | _o__y0 | ||
| 1607 | _o__y1 | ||
| 1608 | _o__yn | ||
| 1609 | _o_abort | ||
| 1610 | _o_acos | ||
| 1611 | F_NON_I386(_o_acosf) | ||
| 1612 | _o_acosh | ||
| 1613 | _o_acoshf | ||
| 1614 | F_ARM_ANY(_o_acoshl) ; Can't use long double functions from the CRT on x86 | ||
| 1615 | _o_asctime | ||
| 1616 | _o_asctime_s | ||
| 1617 | _o_asin | ||
| 1618 | F_NON_I386(_o_asinf) | ||
| 1619 | _o_asinh | ||
| 1620 | _o_asinhf | ||
| 1621 | F_ARM_ANY(_o_asinhl) ; Can't use long double functions from the CRT on x86 | ||
| 1622 | _o_atan | ||
| 1623 | _o_atan2 | ||
| 1624 | F_NON_I386(_o_atan2f) | ||
| 1625 | F_NON_I386(_o_atanf) | ||
| 1626 | _o_atanh | ||
| 1627 | _o_atanhf | ||
| 1628 | F_ARM_ANY(_o_atanhl) ; Can't use long double functions from the CRT on x86 | ||
| 1629 | _o_atof | ||
| 1630 | _o_atoi | ||
| 1631 | _o_atol | ||
| 1632 | _o_atoll | ||
| 1633 | _o_bsearch | ||
| 1634 | _o_bsearch_s | ||
| 1635 | _o_btowc | ||
| 1636 | _o_calloc | ||
| 1637 | _o_cbrt | ||
| 1638 | _o_cbrtf | ||
| 1639 | _o_ceil | ||
| 1640 | F_NON_I386(_o_ceilf) | ||
| 1641 | _o_clearerr | ||
| 1642 | _o_clearerr_s | ||
| 1643 | _o_cos | ||
| 1644 | F_NON_I386(_o_cosf) | ||
| 1645 | _o_cosh | ||
| 1646 | F_NON_I386(_o_coshf) | ||
| 1647 | _o_erf | ||
| 1648 | _o_erfc | ||
| 1649 | _o_erfcf | ||
| 1650 | F_ARM_ANY(_o_erfcl) ; Can't use long double functions from the CRT on x86 | ||
| 1651 | _o_erff | ||
| 1652 | F_ARM_ANY(_o_erfl) ; Can't use long double functions from the CRT on x86 | ||
| 1653 | _o_exp | ||
| 1654 | _o_exp2 | ||
| 1655 | _o_exp2f | ||
| 1656 | F_ARM_ANY(_o_exp2l) ; Can't use long double functions from the CRT on x86 | ||
| 1657 | F_NON_I386(_o_expf) | ||
| 1658 | _o_fabs | ||
| 1659 | F_ARM_ANY(_o_fabsf) | ||
| 1660 | _o_fclose | ||
| 1661 | _o_feof | ||
| 1662 | _o_ferror | ||
| 1663 | _o_fflush | ||
| 1664 | _o_fgetc | ||
| 1665 | _o_fgetpos | ||
| 1666 | _o_fgets | ||
| 1667 | _o_fgetwc | ||
| 1668 | _o_fgetws | ||
| 1669 | _o_floor | ||
| 1670 | F_NON_I386(_o_floorf) | ||
| 1671 | _o_fma | ||
| 1672 | _o_fmaf | ||
| 1673 | F_ARM_ANY(_o_fmal) ; Can't use long double functions from the CRT on x86 | ||
| 1674 | _o_fmod | ||
| 1675 | F_NON_I386(_o_fmodf) | ||
| 1676 | _o_fopen | ||
| 1677 | _o_fopen_s | ||
| 1678 | _o_fputc | ||
| 1679 | _o_fputs | ||
| 1680 | _o_fputwc | ||
| 1681 | _o_fputws | ||
| 1682 | _o_fread | ||
| 1683 | _o_fread_s | ||
| 1684 | _o_free | ||
| 1685 | _o_freopen | ||
| 1686 | _o_freopen_s | ||
| 1687 | _o_frexp | ||
| 1688 | _o_fseek | ||
| 1689 | _o_fsetpos | ||
| 1690 | _o_ftell | ||
| 1691 | _o_fwrite | ||
| 1692 | _o_getc | ||
| 1693 | _o_getchar | ||
| 1694 | _o_getenv | ||
| 1695 | _o_getenv_s | ||
| 1696 | _o_gets | ||
| 1697 | _o_gets_s | ||
| 1698 | _o_getwc | ||
| 1699 | _o_getwchar | ||
| 1700 | _o_hypot | ||
| 1701 | _o_is_wctype | ||
| 1702 | _o_isalnum | ||
| 1703 | _o_isalpha | ||
| 1704 | _o_isblank | ||
| 1705 | _o_iscntrl | ||
| 1706 | _o_isdigit | ||
| 1707 | _o_isgraph | ||
| 1708 | _o_isleadbyte | ||
| 1709 | _o_islower | ||
| 1710 | _o_isprint | ||
| 1711 | _o_ispunct | ||
| 1712 | _o_isspace | ||
| 1713 | _o_isupper | ||
| 1714 | _o_iswalnum | ||
| 1715 | _o_iswalpha | ||
| 1716 | _o_iswascii | ||
| 1717 | _o_iswblank | ||
| 1718 | _o_iswcntrl | ||
| 1719 | _o_iswctype | ||
| 1720 | _o_iswdigit | ||
| 1721 | _o_iswgraph | ||
| 1722 | _o_iswlower | ||
| 1723 | _o_iswprint | ||
| 1724 | _o_iswpunct | ||
| 1725 | _o_iswspace | ||
| 1726 | _o_iswupper | ||
| 1727 | _o_iswxdigit | ||
| 1728 | _o_isxdigit | ||
| 1729 | _o_ldexp | ||
| 1730 | _o_lgamma | ||
| 1731 | _o_lgammaf | ||
| 1732 | F_ARM_ANY(_o_lgammal) ; Can't use long double functions from the CRT on x86 | ||
| 1733 | _o_llrint | ||
| 1734 | _o_llrintf | ||
| 1735 | F_ARM_ANY(_o_llrintl) ; Can't use long double functions from the CRT on x86 | ||
| 1736 | _o_llround | ||
| 1737 | _o_llroundf | ||
| 1738 | F_ARM_ANY(_o_llroundl) ; Can't use long double functions from the CRT on x86 | ||
| 1739 | _o_localeconv | ||
| 1740 | _o_log | ||
| 1741 | _o_log10 | ||
| 1742 | F_NON_I386(_o_log10f) | ||
| 1743 | _o_log1p | ||
| 1744 | _o_log1pf | ||
| 1745 | F_ARM_ANY(_o_log1pl) ; Can't use long double functions from the CRT on x86 | ||
| 1746 | _o_log2 | ||
| 1747 | _o_log2f | ||
| 1748 | F_ARM_ANY(_o_log2l) ; Can't use long double functions from the CRT on x86 | ||
| 1749 | _o_logb | ||
| 1750 | _o_logbf | ||
| 1751 | F_ARM_ANY(_o_logbl) ; Can't use long double functions from the CRT on x86 | ||
| 1752 | F_NON_I386(_o_logf) | ||
| 1753 | _o_lrint | ||
| 1754 | _o_lrintf | ||
| 1755 | F_ARM_ANY(_o_lrintl) ; Can't use long double functions from the CRT on x86 | ||
| 1756 | _o_lround | ||
| 1757 | _o_lroundf | ||
| 1758 | F_ARM_ANY(_o_lroundl) ; Can't use long double functions from the CRT on x86 | ||
| 1759 | _o_malloc | ||
| 1760 | _o_mblen | ||
| 1761 | _o_mbrlen | ||
| 1762 | _o_mbrtoc16 | ||
| 1763 | _o_mbrtoc32 | ||
| 1764 | _o_mbrtowc | ||
| 1765 | _o_mbsrtowcs | ||
| 1766 | _o_mbsrtowcs_s | ||
| 1767 | _o_mbstowcs | ||
| 1768 | _o_mbstowcs_s | ||
| 1769 | _o_mbtowc | ||
| 1770 | _o_memset | ||
| 1771 | _o_modf | ||
| 1772 | F_NON_I386(_o_modff) | ||
| 1773 | _o_nan | ||
| 1774 | _o_nanf | ||
| 1775 | F_ARM_ANY(_o_nanl) ; Can't use long double functions from the CRT on x86 | ||
| 1776 | _o_nearbyint | ||
| 1777 | _o_nearbyintf | ||
| 1778 | F_ARM_ANY(_o_nearbyintl) ; Can't use long double functions from the CRT on x86 | ||
| 1779 | _o_nextafter | ||
| 1780 | _o_nextafterf | ||
| 1781 | F_ARM_ANY(_o_nextafterl) ; Can't use long double functions from the CRT on x86 | ||
| 1782 | F_ARM_ANY(_o_nexttoward) ; Can't use long double functions from the CRT on x86 | ||
| 1783 | F_ARM_ANY(_o_nexttowardf) ; Can't use long double functions from the CRT on x86 | ||
| 1784 | F_ARM_ANY(_o_nexttowardl) ; Can't use long double functions from the CRT on x86 | ||
| 1785 | _o_pow | ||
| 1786 | _o_powf | ||
| 1787 | _o_putc | ||
| 1788 | _o_putchar | ||
| 1789 | _o_puts | ||
| 1790 | _o_putwc | ||
| 1791 | _o_putwchar | ||
| 1792 | _o_qsort | ||
| 1793 | _o_qsort_s | ||
| 1794 | _o_raise | ||
| 1795 | _o_rand | ||
| 1796 | _o_rand_s | ||
| 1797 | _o_realloc | ||
| 1798 | _o_remainder | ||
| 1799 | _o_remainderf | ||
| 1800 | F_ARM_ANY(_o_remainderl) ; Can't use long double functions from the CRT on x86 | ||
| 1801 | _o_remove | ||
| 1802 | _o_remquo | ||
| 1803 | _o_remquof | ||
| 1804 | F_ARM_ANY(_o_remquol) ; Can't use long double functions from the CRT on x86 | ||
| 1805 | _o_rewind | ||
| 1806 | _o_rint | ||
| 1807 | _o_rintf | ||
| 1808 | F_ARM_ANY(_o_rintl) ; Can't use long double functions from the CRT on x86 | ||
| 1809 | _o_round | ||
| 1810 | _o_roundf | ||
| 1811 | F_ARM_ANY(_o_roundl) ; Can't use long double functions from the CRT on x86 | ||
| 1812 | _o_scalbln | ||
| 1813 | _o_scalblnf | ||
| 1814 | F_ARM_ANY(_o_scalblnl) ; Can't use long double functions from the CRT on x86 | ||
| 1815 | _o_scalbn | ||
| 1816 | _o_scalbnf | ||
| 1817 | F_ARM_ANY(_o_scalbnl) ; Can't use long double functions from the CRT on x86 | ||
| 1818 | _o_set_terminate | ||
| 1819 | _o_setbuf | ||
| 1820 | _o_setvbuf | ||
| 1821 | _o_sin | ||
| 1822 | F_NON_I386(_o_sinf) | ||
| 1823 | _o_sinh | ||
| 1824 | F_NON_I386(_o_sinhf) | ||
| 1825 | _o_sqrt | ||
| 1826 | F_NON_I386(_o_sqrtf) | ||
| 1827 | _o_srand | ||
| 1828 | _o_strcat_s | ||
| 1829 | _o_strcoll | ||
| 1830 | _o_strcpy_s | ||
| 1831 | _o_strerror | ||
| 1832 | _o_strerror_s | ||
| 1833 | _o_strftime | ||
| 1834 | _o_strncat_s | ||
| 1835 | _o_strncpy_s | ||
| 1836 | _o_strtod | ||
| 1837 | _o_strtof | ||
| 1838 | _o_strtok | ||
| 1839 | _o_strtok_s | ||
| 1840 | _o_strtol | ||
| 1841 | F_ARM_ANY(_o_strtold) ; Can't use long double functions from the CRT on x86 | ||
| 1842 | _o_strtoll | ||
| 1843 | _o_strtoul | ||
| 1844 | _o_strtoull | ||
| 1845 | _o_system | ||
| 1846 | _o_tan | ||
| 1847 | F_NON_I386(_o_tanf) | ||
| 1848 | _o_tanh | ||
| 1849 | F_NON_I386(_o_tanhf) | ||
| 1850 | _o_terminate | ||
| 1851 | _o_tgamma | ||
| 1852 | _o_tgammaf | ||
| 1853 | F_ARM_ANY(_o_tgammal) ; Can't use long double functions from the CRT on x86 | ||
| 1854 | _o_tmpfile_s | ||
| 1855 | _o_tmpnam_s | ||
| 1856 | _o_tolower | ||
| 1857 | _o_toupper | ||
| 1858 | _o_towlower | ||
| 1859 | _o_towupper | ||
| 1860 | _o_ungetc | ||
| 1861 | _o_ungetwc | ||
| 1862 | _o_wcrtomb | ||
| 1863 | _o_wcrtomb_s | ||
| 1864 | _o_wcscat_s | ||
| 1865 | _o_wcscoll | ||
| 1866 | _o_wcscpy | ||
| 1867 | _o_wcscpy_s | ||
| 1868 | _o_wcsftime | ||
| 1869 | _o_wcsncat_s | ||
| 1870 | _o_wcsncpy_s | ||
| 1871 | _o_wcsrtombs | ||
| 1872 | _o_wcsrtombs_s | ||
| 1873 | _o_wcstod | ||
| 1874 | _o_wcstof | ||
| 1875 | _o_wcstok | ||
| 1876 | _o_wcstok_s | ||
| 1877 | _o_wcstol | ||
| 1878 | F_ARM_ANY(_o_wcstold) ; Can't use long double functions from the CRT on x86 | ||
| 1879 | _o_wcstoll | ||
| 1880 | _o_wcstombs | ||
| 1881 | _o_wcstombs_s | ||
| 1882 | _o_wcstoul | ||
| 1883 | _o_wcstoull | ||
| 1884 | _o_wctob | ||
| 1885 | _o_wctomb | ||
| 1886 | _o_wctomb_s | ||
| 1887 | _o_wmemcpy_s | ||
| 1888 | _o_wmemmove_s | ||
| 1889 | _open | ||
| 1890 | _open_osfhandle | ||
| 1891 | _pclose | ||
| 1892 | _pipe | ||
| 1893 | _popen | ||
| 1894 | _purecall | ||
| 1895 | _putc_nolock | ||
| 1896 | _putch | ||
| 1897 | _putch_nolock | ||
| 1898 | _putenv | ||
| 1899 | _putenv_s | ||
| 1900 | _putw | ||
| 1901 | _putwc_nolock | ||
| 1902 | _putwch | ||
| 1903 | _putwch_nolock | ||
| 1904 | _putws | ||
| 1905 | _query_app_type | ||
| 1906 | _query_new_handler | ||
| 1907 | _query_new_mode | ||
| 1908 | _read | ||
| 1909 | _realloc_base | ||
| 1910 | F_DEBUG(_realloc_dbg) | ||
| 1911 | _recalloc | ||
| 1912 | F_DEBUG(_recalloc_dbg) | ||
| 1913 | _register_onexit_function | ||
| 1914 | _register_thread_local_exe_atexit_callback | ||
| 1915 | _resetstkoflw | ||
| 1916 | _rmdir | ||
| 1917 | _rmtmp | ||
| 1918 | _rotl | ||
| 1919 | _rotl64 | ||
| 1920 | _rotr | ||
| 1921 | _rotr64 | ||
| 1922 | _scalb | ||
| 1923 | F_X64(_scalbf) | ||
| 1924 | _searchenv | ||
| 1925 | _searchenv_s | ||
| 1926 | _seh_filter_dll | ||
| 1927 | _seh_filter_exe | ||
| 1928 | F_X64(_set_FMA3_enable) | ||
| 1929 | F_I386(_seh_longjmp_unwind4@4) | ||
| 1930 | F_I386(_seh_longjmp_unwind@4) | ||
| 1931 | F_I386(_set_SSE2_enable) | ||
| 1932 | _set_abort_behavior | ||
| 1933 | _set_app_type | ||
| 1934 | _set_controlfp | ||
| 1935 | _set_doserrno | ||
| 1936 | _set_errno | ||
| 1937 | _set_error_mode | ||
| 1938 | _set_fmode | ||
| 1939 | _set_invalid_parameter_handler | ||
| 1940 | _set_new_handler | ||
| 1941 | _set_new_mode | ||
| 1942 | _set_printf_count_output | ||
| 1943 | _set_purecall_handler | ||
| 1944 | _set_se_translator | ||
| 1945 | _set_thread_local_invalid_parameter_handler | ||
| 1946 | _seterrormode | ||
| 1947 | F_I386(_setjmp3) | ||
| 1948 | _setmaxstdio | ||
| 1949 | _setmbcp | ||
| 1950 | _setmode | ||
| 1951 | _setsystime | ||
| 1952 | _sleep | ||
| 1953 | _sopen | ||
| 1954 | _sopen_dispatch | ||
| 1955 | _sopen_s | ||
| 1956 | _spawnl | ||
| 1957 | _spawnle | ||
| 1958 | _spawnlp | ||
| 1959 | _spawnlpe | ||
| 1960 | _spawnv | ||
| 1961 | _spawnve | ||
| 1962 | _spawnvp | ||
| 1963 | _spawnvpe | ||
| 1964 | _splitpath | ||
| 1965 | _splitpath_s | ||
| 1966 | _stat32 | ||
| 1967 | _stat32i64 | ||
| 1968 | _stat64 | ||
| 1969 | _stat64i32 | ||
| 1970 | _statusfp | ||
| 1971 | F_I386(_statusfp2) | ||
| 1972 | _strcoll_l | ||
| 1973 | _strdate | ||
| 1974 | _strdate_s | ||
| 1975 | _strdup | ||
| 1976 | F_DEBUG(_strdup_dbg) | ||
| 1977 | _strerror | ||
| 1978 | _strerror_s | ||
| 1979 | _strftime_l | ||
| 1980 | _stricmp | ||
| 1981 | _stricmp_l | ||
| 1982 | _stricoll | ||
| 1983 | _stricoll_l | ||
| 1984 | _strlwr | ||
| 1985 | _strlwr_l | ||
| 1986 | _strlwr_s | ||
| 1987 | _strlwr_s_l | ||
| 1988 | _strncoll | ||
| 1989 | _strncoll_l | ||
| 1990 | _strnicmp | ||
| 1991 | _strnicmp_l | ||
| 1992 | _strnicoll | ||
| 1993 | _strnicoll_l | ||
| 1994 | _strnset | ||
| 1995 | _strnset_s | ||
| 1996 | _strrev | ||
| 1997 | _strset | ||
| 1998 | _strset_s | ||
| 1999 | _strtime | ||
| 2000 | _strtime_s | ||
| 2001 | _strtod_l | ||
| 2002 | _strtof_l | ||
| 2003 | _strtoi64 | ||
| 2004 | _strtoi64_l | ||
| 2005 | _strtoimax_l | ||
| 2006 | _strtol_l | ||
| 2007 | F_ARM_ANY(_strtold_l) ; Can't use long double functions from the CRT on x86 | ||
| 2008 | _strtoll_l | ||
| 2009 | _strtoui64 | ||
| 2010 | _strtoui64_l | ||
| 2011 | _strtoul_l | ||
| 2012 | _strtoull_l | ||
| 2013 | _strtoumax_l | ||
| 2014 | _strupr | ||
| 2015 | _strupr_l | ||
| 2016 | _strupr_s | ||
| 2017 | _strupr_s_l | ||
| 2018 | _strxfrm_l | ||
| 2019 | _swab | ||
| 2020 | _tell | ||
| 2021 | _telli64 | ||
| 2022 | _tempnam | ||
| 2023 | F_DEBUG(_tempnam_dbg) | ||
| 2024 | _time32 | ||
| 2025 | _time64 | ||
| 2026 | _timespec32_get | ||
| 2027 | _timespec64_get | ||
| 2028 | _tolower | ||
| 2029 | _tolower_l | ||
| 2030 | _toupper | ||
| 2031 | _toupper_l | ||
| 2032 | _towlower_l | ||
| 2033 | _towupper_l | ||
| 2034 | _tzset DATA ; This is wrapped in the compat code. | ||
| 2035 | _ui64toa | ||
| 2036 | _ui64toa_s | ||
| 2037 | _ui64tow | ||
| 2038 | _ui64tow_s | ||
| 2039 | _ultoa | ||
| 2040 | _ultoa_s | ||
| 2041 | _ultow | ||
| 2042 | _ultow_s | ||
| 2043 | _umask | ||
| 2044 | _umask_s | ||
| 2045 | _ungetc_nolock | ||
| 2046 | _ungetch | ||
| 2047 | _ungetch_nolock | ||
| 2048 | _ungetwc_nolock | ||
| 2049 | _ungetwch | ||
| 2050 | _ungetwch_nolock | ||
| 2051 | _unlink | ||
| 2052 | _unloaddll | ||
| 2053 | _unlock_file | ||
| 2054 | _unlock_locales | ||
| 2055 | _utime32 | ||
| 2056 | _utime64 | ||
| 2057 | _waccess | ||
| 2058 | _waccess_s | ||
| 2059 | _wasctime | ||
| 2060 | _wasctime_s | ||
| 2061 | _wassert | ||
| 2062 | _wchdir | ||
| 2063 | _wchmod | ||
| 2064 | _wcreat | ||
| 2065 | _wcreate_locale | ||
| 2066 | _wcscoll_l | ||
| 2067 | _wcsdup | ||
| 2068 | F_DEBUG(_wcsdup_dbg) | ||
| 2069 | _wcserror | ||
| 2070 | _wcserror_s | ||
| 2071 | _wcsftime_l | ||
| 2072 | _wcsicmp | ||
| 2073 | _wcsicmp_l | ||
| 2074 | _wcsicoll | ||
| 2075 | _wcsicoll_l | ||
| 2076 | _wcslwr | ||
| 2077 | _wcslwr_l | ||
| 2078 | _wcslwr_s | ||
| 2079 | _wcslwr_s_l | ||
| 2080 | _wcsncoll | ||
| 2081 | _wcsncoll_l | ||
| 2082 | _wcsnicmp | ||
| 2083 | _wcsnicmp_l | ||
| 2084 | _wcsnicoll | ||
| 2085 | _wcsnicoll_l | ||
| 2086 | _wcsnset | ||
| 2087 | _wcsnset_s | ||
| 2088 | _wcsrev | ||
| 2089 | _wcsset | ||
| 2090 | _wcsset_s | ||
| 2091 | _wcstod_l | ||
| 2092 | _wcstof_l | ||
| 2093 | _wcstoi64 | ||
| 2094 | _wcstoi64_l | ||
| 2095 | _wcstoimax_l | ||
| 2096 | _wcstol_l | ||
| 2097 | F_ARM_ANY(_wcstold_l) ; Can't use long double functions from the CRT on x86 | ||
| 2098 | _wcstoll_l | ||
| 2099 | _wcstombs_l | ||
| 2100 | _wcstombs_s_l | ||
| 2101 | _wcstoui64 | ||
| 2102 | _wcstoui64_l | ||
| 2103 | _wcstoul_l | ||
| 2104 | _wcstoull_l | ||
| 2105 | _wcstoumax_l | ||
| 2106 | _wcsupr | ||
| 2107 | _wcsupr_l | ||
| 2108 | _wcsupr_s | ||
| 2109 | _wcsupr_s_l | ||
| 2110 | _wcsxfrm_l | ||
| 2111 | _wctime32 | ||
| 2112 | _wctime32_s | ||
| 2113 | _wctime64 | ||
| 2114 | _wctime64_s | ||
| 2115 | _wctomb_l | ||
| 2116 | _wctomb_s_l | ||
| 2117 | _wctype DATA | ||
| 2118 | _wdupenv_s | ||
| 2119 | F_DEBUG(_wdupenv_s_dbg) | ||
| 2120 | _wexecl | ||
| 2121 | _wexecle | ||
| 2122 | _wexeclp | ||
| 2123 | _wexeclpe | ||
| 2124 | _wexecv | ||
| 2125 | _wexecve | ||
| 2126 | _wexecvp | ||
| 2127 | _wexecvpe | ||
| 2128 | _wfdopen | ||
| 2129 | _wfindfirst32 | ||
| 2130 | _wfindfirst32i64 | ||
| 2131 | _wfindfirst64 | ||
| 2132 | _wfindfirst64i32 | ||
| 2133 | _wfindnext32 | ||
| 2134 | _wfindnext32i64 | ||
| 2135 | _wfindnext64 | ||
| 2136 | _wfindnext64i32 | ||
| 2137 | _wfopen | ||
| 2138 | _wfopen_s | ||
| 2139 | _wfreopen | ||
| 2140 | _wfreopen_s | ||
| 2141 | _wfsopen | ||
| 2142 | _wfullpath | ||
| 2143 | F_DEBUG(_wfullpath_dbg) | ||
| 2144 | _wgetcwd | ||
| 2145 | F_DEBUG(_wgetcwd_dbg) | ||
| 2146 | _wgetdcwd | ||
| 2147 | F_DEBUG(_wgetdcwd_dbg) | ||
| 2148 | _wgetenv | ||
| 2149 | _wgetenv_s | ||
| 2150 | _wmakepath | ||
| 2151 | _wmakepath_s | ||
| 2152 | _wmkdir | ||
| 2153 | _wmktemp | ||
| 2154 | _wmktemp_s | ||
| 2155 | _wopen | ||
| 2156 | _wperror | ||
| 2157 | _wpopen | ||
| 2158 | _wputenv | ||
| 2159 | _wputenv_s | ||
| 2160 | _wremove | ||
| 2161 | _wrename | ||
| 2162 | _write | ||
| 2163 | _wrmdir | ||
| 2164 | _wsearchenv | ||
| 2165 | _wsearchenv_s | ||
| 2166 | _wsetlocale | ||
| 2167 | _wsopen | ||
| 2168 | _wsopen_dispatch | ||
| 2169 | _wsopen_s | ||
| 2170 | _wspawnl | ||
| 2171 | _wspawnle | ||
| 2172 | _wspawnlp | ||
| 2173 | _wspawnlpe | ||
| 2174 | _wspawnv | ||
| 2175 | _wspawnve | ||
| 2176 | _wspawnvp | ||
| 2177 | _wspawnvpe | ||
| 2178 | _wsplitpath | ||
| 2179 | _wsplitpath_s | ||
| 2180 | _wstat32 | ||
| 2181 | _wstat32i64 | ||
| 2182 | _wstat64 | ||
| 2183 | _wstat64i32 | ||
| 2184 | _wstrdate | ||
| 2185 | _wstrdate_s | ||
| 2186 | _wstrtime | ||
| 2187 | _wstrtime_s | ||
| 2188 | _wsystem | ||
| 2189 | _wtempnam | ||
| 2190 | F_DEBUG(_wtempnam_dbg) | ||
| 2191 | _wtmpnam | ||
| 2192 | _wtmpnam_s | ||
| 2193 | _wtof | ||
| 2194 | _wtof_l | ||
| 2195 | _wtoi | ||
| 2196 | _wtoi64 | ||
| 2197 | _wtoi64_l | ||
| 2198 | _wtoi_l | ||
| 2199 | _wtol | ||
| 2200 | _wtol_l | ||
| 2201 | _wtoll | ||
| 2202 | _wtoll_l | ||
| 2203 | _wunlink | ||
| 2204 | _wutime32 | ||
| 2205 | _wutime64 | ||
| 2206 | _y0 | ||
| 2207 | _y1 | ||
| 2208 | _yn | ||
| 2209 | abort | ||
| 2210 | abs | ||
| 2211 | acos | ||
| 2212 | F_NON_I386(acosf) | ||
| 2213 | acosh | ||
| 2214 | acoshf | ||
| 2215 | F_ARM_ANY(acoshl) ; Can't use long double functions from the CRT on x86 | ||
| 2216 | asctime | ||
| 2217 | asctime_s | ||
| 2218 | asin | ||
| 2219 | F_NON_I386(asinf) | ||
| 2220 | asinh | ||
| 2221 | asinhf | ||
| 2222 | F_ARM_ANY(asinhl) ; Can't use long double functions from the CRT on x86 | ||
| 2223 | atan | ||
| 2224 | atan2 | ||
| 2225 | F_NON_I386(atan2f) | ||
| 2226 | F_NON_I386(atanf) | ||
| 2227 | atanh | ||
| 2228 | atanhf | ||
| 2229 | F_ARM_ANY(atanhl) ; Can't use long double functions from the CRT on x86 | ||
| 2230 | atof | ||
| 2231 | atoi | ||
| 2232 | atol | ||
| 2233 | atoll | ||
| 2234 | bsearch | ||
| 2235 | bsearch_s | ||
| 2236 | btowc | ||
| 2237 | c16rtomb | ||
| 2238 | c32rtomb | ||
| 2239 | cabs | ||
| 2240 | cabsf | ||
| 2241 | F_ARM_ANY(cabsl) ; Can't use long double functions from the CRT on x86 | ||
| 2242 | cacos | ||
| 2243 | cacosf | ||
| 2244 | cacosh | ||
| 2245 | cacoshf | ||
| 2246 | F_ARM_ANY(cacoshl) ; Can't use long double functions from the CRT on x86 | ||
| 2247 | F_ARM_ANY(cacosl) ; Can't use long double functions from the CRT on x86 | ||
| 2248 | calloc | ||
| 2249 | carg | ||
| 2250 | cargf | ||
| 2251 | F_ARM_ANY(cargl) ; Can't use long double functions from the CRT on x86 | ||
| 2252 | casin | ||
| 2253 | casinf | ||
| 2254 | casinh | ||
| 2255 | casinhf | ||
| 2256 | F_ARM_ANY(casinhl) ; Can't use long double functions from the CRT on x86 | ||
| 2257 | F_ARM_ANY(casinl) ; Can't use long double functions from the CRT on x86 | ||
| 2258 | catan | ||
| 2259 | catanf | ||
| 2260 | catanh | ||
| 2261 | catanhf | ||
| 2262 | F_ARM_ANY(catanhl) ; Can't use long double functions from the CRT on x86 | ||
| 2263 | F_ARM_ANY(catanl) ; Can't use long double functions from the CRT on x86 | ||
| 2264 | cbrt | ||
| 2265 | cbrtf | ||
| 2266 | F_ARM_ANY(cbrtl) ; Can't use long double functions from the CRT on x86 | ||
| 2267 | ccos | ||
| 2268 | ccosf | ||
| 2269 | ccosh | ||
| 2270 | ccoshf | ||
| 2271 | F_ARM_ANY(ccoshl) ; Can't use long double functions from the CRT on x86 | ||
| 2272 | F_ARM_ANY(ccosl) ; Can't use long double functions from the CRT on x86 | ||
| 2273 | ceil | ||
| 2274 | F_NON_I386(ceilf) | ||
| 2275 | cexp | ||
| 2276 | cexpf | ||
| 2277 | F_ARM_ANY(cexpl) ; Can't use long double functions from the CRT on x86 | ||
| 2278 | cimag | ||
| 2279 | cimagf | ||
| 2280 | F_ARM_ANY(cimagl) ; Can't use long double functions from the CRT on x86 | ||
| 2281 | clearerr | ||
| 2282 | clearerr_s | ||
| 2283 | clock | ||
| 2284 | clog | ||
| 2285 | clog10 | ||
| 2286 | clog10f | ||
| 2287 | F_ARM_ANY(clog10l) ; Can't use long double functions from the CRT on x86 | ||
| 2288 | clogf | ||
| 2289 | F_ARM_ANY(clogl) ; Can't use long double functions from the CRT on x86 | ||
| 2290 | conj | ||
| 2291 | conjf | ||
| 2292 | F_ARM_ANY(conjl) ; Can't use long double functions from the CRT on x86 | ||
| 2293 | copysign | ||
| 2294 | copysignf | ||
| 2295 | F_ARM_ANY(copysignl) ; Can't use long double functions from the CRT on x86 | ||
| 2296 | cos | ||
| 2297 | F_NON_I386(cosf) | ||
| 2298 | cosh | ||
| 2299 | F_NON_I386(coshf) | ||
| 2300 | cpow | ||
| 2301 | cpowf | ||
| 2302 | F_ARM_ANY(cpowl) ; Can't use long double functions from the CRT on x86 | ||
| 2303 | cproj | ||
| 2304 | cprojf | ||
| 2305 | F_ARM_ANY(cprojl) ; Can't use long double functions from the CRT on x86 | ||
| 2306 | creal | ||
| 2307 | crealf | ||
| 2308 | F_ARM_ANY(creall) ; Can't use long double functions from the CRT on x86 | ||
| 2309 | csin | ||
| 2310 | csinf | ||
| 2311 | csinh | ||
| 2312 | csinhf | ||
| 2313 | F_ARM_ANY(csinhl) ; Can't use long double functions from the CRT on x86 | ||
| 2314 | F_ARM_ANY(csinl) ; Can't use long double functions from the CRT on x86 | ||
| 2315 | csqrt | ||
| 2316 | csqrtf | ||
| 2317 | F_ARM_ANY(csqrtl) ; Can't use long double functions from the CRT on x86 | ||
| 2318 | ctan | ||
| 2319 | ctanf | ||
| 2320 | ctanh | ||
| 2321 | ctanhf | ||
| 2322 | F_ARM_ANY(ctanhl) ; Can't use long double functions from the CRT on x86 | ||
| 2323 | F_ARM_ANY(ctanl) ; Can't use long double functions from the CRT on x86 | ||
| 2324 | div | ||
| 2325 | erf | ||
| 2326 | erfc | ||
| 2327 | erfcf | ||
| 2328 | F_ARM_ANY(erfcl) ; Can't use long double functions from the CRT on x86 | ||
| 2329 | erff | ||
| 2330 | F_ARM_ANY(erfl) ; Can't use long double functions from the CRT on x86 | ||
| 2331 | exit | ||
| 2332 | exp | ||
| 2333 | exp2 | ||
| 2334 | exp2f | ||
| 2335 | F_ARM_ANY(exp2l) ; Can't use long double functions from the CRT on x86 | ||
| 2336 | F_NON_I386(expf) | ||
| 2337 | expm1 | ||
| 2338 | expm1f | ||
| 2339 | F_ARM_ANY(expm1l) ; Can't use long double functions from the CRT on x86 | ||
| 2340 | fabs | ||
| 2341 | F_ARM_ANY(fabsf) | ||
| 2342 | fclose | ||
| 2343 | fdim | ||
| 2344 | fdimf | ||
| 2345 | F_ARM_ANY(fdiml) ; Can't use long double functions from the CRT on x86 | ||
| 2346 | ; Don't use the float env functions from UCRT; fesetround doesn't seem to have | ||
| 2347 | ; any effect on the FPU control word as required by other libmingwex math | ||
| 2348 | ; routines. | ||
| 2349 | feclearexcept DATA | ||
| 2350 | fegetenv DATA | ||
| 2351 | fegetexceptflag DATA | ||
| 2352 | fegetround DATA | ||
| 2353 | feholdexcept DATA | ||
| 2354 | feof | ||
| 2355 | ferror | ||
| 2356 | fesetenv DATA | ||
| 2357 | fesetexceptflag DATA | ||
| 2358 | fesetround DATA | ||
| 2359 | fetestexcept DATA | ||
| 2360 | fflush | ||
| 2361 | fgetc | ||
| 2362 | fgetpos | ||
| 2363 | fgets | ||
| 2364 | fgetwc | ||
| 2365 | fgetws | ||
| 2366 | floor | ||
| 2367 | F_NON_I386(floorf) | ||
| 2368 | fma | ||
| 2369 | fmaf | ||
| 2370 | F_ARM_ANY(fmal) ; Can't use long double functions from the CRT on x86 | ||
| 2371 | fmax | ||
| 2372 | fmaxf | ||
| 2373 | F_ARM_ANY(fmaxl) ; Can't use long double functions from the CRT on x86 | ||
| 2374 | fmin | ||
| 2375 | fminf | ||
| 2376 | F_ARM_ANY(fminl) ; Can't use long double functions from the CRT on x86 | ||
| 2377 | fmod | ||
| 2378 | F_NON_I386(fmodf) | ||
| 2379 | fopen | ||
| 2380 | fopen_s | ||
| 2381 | fputc | ||
| 2382 | fputs | ||
| 2383 | fputwc | ||
| 2384 | fputws | ||
| 2385 | fread | ||
| 2386 | fread_s | ||
| 2387 | free | ||
| 2388 | freopen | ||
| 2389 | freopen_s | ||
| 2390 | frexp | ||
| 2391 | fseek | ||
| 2392 | fsetpos | ||
| 2393 | ftell | ||
| 2394 | fwrite | ||
| 2395 | getc | ||
| 2396 | getchar | ||
| 2397 | getenv | ||
| 2398 | getenv_s | ||
| 2399 | gets | ||
| 2400 | gets_s | ||
| 2401 | getwc | ||
| 2402 | getwchar | ||
| 2403 | hypot | ||
| 2404 | ilogb | ||
| 2405 | ilogbf | ||
| 2406 | F_ARM_ANY(ilogbl) ; Can't use long double functions from the CRT on x86 | ||
| 2407 | imaxabs | ||
| 2408 | imaxdiv | ||
| 2409 | is_wctype | ||
| 2410 | isalnum | ||
| 2411 | isalpha | ||
| 2412 | isblank | ||
| 2413 | iscntrl | ||
| 2414 | isdigit | ||
| 2415 | isgraph | ||
| 2416 | isleadbyte | ||
| 2417 | islower | ||
| 2418 | isprint | ||
| 2419 | ispunct | ||
| 2420 | isspace | ||
| 2421 | isupper | ||
| 2422 | iswalnum | ||
| 2423 | iswalpha | ||
| 2424 | iswascii | ||
| 2425 | iswblank | ||
| 2426 | iswcntrl | ||
| 2427 | iswctype | ||
| 2428 | iswdigit | ||
| 2429 | iswgraph | ||
| 2430 | iswlower | ||
| 2431 | iswprint | ||
| 2432 | iswpunct | ||
| 2433 | iswspace | ||
| 2434 | iswupper | ||
| 2435 | iswxdigit | ||
| 2436 | isxdigit | ||
| 2437 | labs | ||
| 2438 | ldexp | ||
| 2439 | ldiv | ||
| 2440 | ; The UCRT lgamma functions don't set/provide the signgam variable like | ||
| 2441 | ; the mingw ones do. Therefore prefer the libmingwex version instead. | ||
| 2442 | lgamma DATA | ||
| 2443 | lgammaf DATA | ||
| 2444 | F_ARM_ANY(lgammal DATA) ; Can't use long double functions from the CRT on x86 | ||
| 2445 | llabs | ||
| 2446 | lldiv | ||
| 2447 | llrint | ||
| 2448 | llrintf | ||
| 2449 | F_ARM_ANY(llrintl) ; Can't use long double functions from the CRT on x86 | ||
| 2450 | llround | ||
| 2451 | llroundf | ||
| 2452 | F_ARM_ANY(llroundl) ; Can't use long double functions from the CRT on x86 | ||
| 2453 | localeconv | ||
| 2454 | log | ||
| 2455 | log10 | ||
| 2456 | F_NON_I386(log10f) | ||
| 2457 | log1p | ||
| 2458 | log1pf | ||
| 2459 | F_ARM_ANY(log1pl) ; Can't use long double functions from the CRT on x86 | ||
| 2460 | log2 | ||
| 2461 | log2f | ||
| 2462 | F_ARM_ANY(log2l) ; Can't use long double functions from the CRT on x86 | ||
| 2463 | logb | ||
| 2464 | logbf | ||
| 2465 | F_ARM_ANY(logbl) ; Can't use long double functions from the CRT on x86 | ||
| 2466 | F_NON_I386(logf) | ||
| 2467 | longjmp | ||
| 2468 | lrint | ||
| 2469 | lrintf | ||
| 2470 | F_ARM_ANY(lrintl) ; Can't use long double functions from the CRT on x86 | ||
| 2471 | lround | ||
| 2472 | lroundf | ||
| 2473 | F_ARM_ANY(lroundl) ; Can't use long double functions from the CRT on x86 | ||
| 2474 | malloc | ||
| 2475 | mblen | ||
| 2476 | mbrlen | ||
| 2477 | mbrtoc16 | ||
| 2478 | mbrtoc32 | ||
| 2479 | mbrtowc | ||
| 2480 | mbsrtowcs | ||
| 2481 | mbsrtowcs_s | ||
| 2482 | mbstowcs | ||
| 2483 | mbstowcs_s | ||
| 2484 | mbtowc | ||
| 2485 | memchr | ||
| 2486 | memcmp | ||
| 2487 | memcpy | ||
| 2488 | memcpy_s | ||
| 2489 | memmove | ||
| 2490 | memmove_s | ||
| 2491 | memset | ||
| 2492 | modf | ||
| 2493 | F_NON_I386(modff) | ||
| 2494 | nan | ||
| 2495 | nanf | ||
| 2496 | F_ARM_ANY(nanl) ; Can't use long double functions from the CRT on x86 | ||
| 2497 | nearbyint | ||
| 2498 | nearbyintf | ||
| 2499 | F_ARM_ANY(nearbyintl) ; Can't use long double functions from the CRT on x86 | ||
| 2500 | nextafter | ||
| 2501 | nextafterf | ||
| 2502 | F_ARM_ANY(nextafterl) ; Can't use long double functions from the CRT on x86 | ||
| 2503 | ; All of the nexttoward functions take the second parameter as long double, | ||
| 2504 | ; making them unusable for x86. | ||
| 2505 | F_ARM_ANY(nexttoward) ; Can't use long double functions from the CRT on x86 | ||
| 2506 | F_ARM_ANY(nexttowardf) ; Can't use long double functions from the CRT on x86 | ||
| 2507 | F_ARM_ANY(nexttowardl) ; Can't use long double functions from the CRT on x86 | ||
| 2508 | norm | ||
| 2509 | normf | ||
| 2510 | norml | ||
| 2511 | perror | ||
| 2512 | pow | ||
| 2513 | F_NON_I386(powf) ; Missing in Wine's ucrtbase.dll for i386 in Wine 9.15 and older | ||
| 2514 | putc | ||
| 2515 | putchar | ||
| 2516 | puts | ||
| 2517 | putwc | ||
| 2518 | putwchar | ||
| 2519 | qsort | ||
| 2520 | qsort_s | ||
| 2521 | quick_exit | ||
| 2522 | raise | ||
| 2523 | rand | ||
| 2524 | rand_s | ||
| 2525 | realloc | ||
| 2526 | remainder | ||
| 2527 | remainderf | ||
| 2528 | F_ARM_ANY(remainderl) ; Can't use long double functions from the CRT on x86 | ||
| 2529 | remove | ||
| 2530 | remquo | ||
| 2531 | remquof | ||
| 2532 | F_ARM_ANY(remquol) ; Can't use long double functions from the CRT on x86 | ||
| 2533 | rename | ||
| 2534 | rewind | ||
| 2535 | rint | ||
| 2536 | rintf | ||
| 2537 | F_ARM_ANY(rintl) ; Can't use long double functions from the CRT on x86 | ||
| 2538 | round | ||
| 2539 | roundf | ||
| 2540 | F_ARM_ANY(roundl) ; Can't use long double functions from the CRT on x86 | ||
| 2541 | scalbln | ||
| 2542 | scalblnf | ||
| 2543 | F_ARM_ANY(scalblnl) ; Can't use long double functions from the CRT on x86 | ||
| 2544 | scalbn | ||
| 2545 | scalbnf | ||
| 2546 | F_ARM_ANY(scalbnl) ; Can't use long double functions from the CRT on x86 | ||
| 2547 | set_terminate | ||
| 2548 | set_unexpected | ||
| 2549 | setbuf | ||
| 2550 | F_X64(setjmp) | ||
| 2551 | setlocale | ||
| 2552 | setvbuf | ||
| 2553 | signal | ||
| 2554 | sin | ||
| 2555 | F_NON_I386(sinf) | ||
| 2556 | ; if we implement sinh, we can set it DATA only. | ||
| 2557 | sinh | ||
| 2558 | F_NON_I386(sinhf) | ||
| 2559 | sqrt | ||
| 2560 | F_NON_I386(sqrtf) | ||
| 2561 | srand | ||
| 2562 | strcat | ||
| 2563 | strcat_s | ||
| 2564 | strchr | ||
| 2565 | strcmp | ||
| 2566 | strcoll | ||
| 2567 | strcpy | ||
| 2568 | strcpy_s | ||
| 2569 | strcspn | ||
| 2570 | strerror | ||
| 2571 | strerror_s | ||
| 2572 | strftime | ||
| 2573 | strlen | ||
| 2574 | strncat | ||
| 2575 | strncat_s | ||
| 2576 | strncmp | ||
| 2577 | strncpy | ||
| 2578 | strncpy_s | ||
| 2579 | strnlen | ||
| 2580 | strpbrk | ||
| 2581 | strrchr | ||
| 2582 | strspn | ||
| 2583 | strstr | ||
| 2584 | strtod | ||
| 2585 | strtof | ||
| 2586 | strtoimax | ||
| 2587 | strtok | ||
| 2588 | strtok_s | ||
| 2589 | strtol | ||
| 2590 | F_ARM_ANY(strtold) ; Can't use long double functions from the CRT on x86 | ||
| 2591 | strtoll | ||
| 2592 | strtoul | ||
| 2593 | strtoull | ||
| 2594 | strtoumax | ||
| 2595 | strxfrm | ||
| 2596 | system | ||
| 2597 | tan | ||
| 2598 | F_NON_I386(tanf) | ||
| 2599 | ; if we implement tanh, we can set it to DATA only. | ||
| 2600 | tanh | ||
| 2601 | F_NON_I386(tanhf) | ||
| 2602 | terminate | ||
| 2603 | tgamma | ||
| 2604 | tgammaf | ||
| 2605 | F_ARM_ANY(tgammal) ; Can't use long double functions from the CRT on x86 | ||
| 2606 | tmpfile | ||
| 2607 | tmpfile_s | ||
| 2608 | tmpnam | ||
| 2609 | tmpnam_s | ||
| 2610 | tolower | ||
| 2611 | toupper | ||
| 2612 | towctrans | ||
| 2613 | towlower | ||
| 2614 | towupper | ||
| 2615 | trunc | ||
| 2616 | truncf | ||
| 2617 | F_ARM_ANY(truncl) ; Can't use long double functions from the CRT on x86 | ||
| 2618 | unexpected | ||
| 2619 | ungetc | ||
| 2620 | ungetwc | ||
| 2621 | wcrtomb | ||
| 2622 | wcrtomb_s | ||
| 2623 | wcscat | ||
| 2624 | wcscat_s | ||
| 2625 | wcschr | ||
| 2626 | wcscmp | ||
| 2627 | wcscoll | ||
| 2628 | wcscpy | ||
| 2629 | wcscpy_s | ||
| 2630 | wcscspn | ||
| 2631 | wcsftime | ||
| 2632 | wcslen | ||
| 2633 | wcsncat | ||
| 2634 | wcsncat_s | ||
| 2635 | wcsncmp | ||
| 2636 | wcsncpy | ||
| 2637 | wcsncpy_s | ||
| 2638 | wcsnlen | ||
| 2639 | wcspbrk | ||
| 2640 | wcsrchr | ||
| 2641 | wcsrtombs | ||
| 2642 | wcsrtombs_s | ||
| 2643 | wcsspn | ||
| 2644 | wcsstr | ||
| 2645 | wcstod | ||
| 2646 | wcstof | ||
| 2647 | wcstoimax | ||
| 2648 | wcstok | ||
| 2649 | wcstok_s | ||
| 2650 | wcstol | ||
| 2651 | F_ARM_ANY(wcstold) ; Can't use long double functions from the CRT on x86 | ||
| 2652 | wcstoll | ||
| 2653 | wcstombs | ||
| 2654 | wcstombs_s | ||
| 2655 | wcstoul | ||
| 2656 | wcstoull | ||
| 2657 | wcstoumax | ||
| 2658 | wcsxfrm | ||
| 2659 | wctob | ||
| 2660 | wctomb | ||
| 2661 | wctomb_s | ||
| 2662 | wctrans | ||
| 2663 | wctype | ||
| 2664 | wmemcpy_s | ||
| 2665 | wmemmove_s | ||
| 2666 | |||
| 2667 | ; These symbols were added in some later version of ucrtbase.dll and ucrtbased.dll | ||
| 2668 | ; They were added into ucrtbase.dll version 10.0.10563.0 which is part of the Microsoft Visual C++ 2015 Redistributable version 14.0.23506.0 | ||
| 2669 | _o____lc_codepage_func | ||
| 2670 | _o____lc_collate_cp_func | ||
| 2671 | _o____lc_locale_name_func | ||
| 2672 | _o____mb_cur_max_func | ||
| 2673 | _o___std_exception_copy | ||
| 2674 | _o___std_exception_destroy | ||
| 2675 | _o___std_type_info_destroy_list | ||
| 2676 | _o___std_type_info_name | ||
| 2677 | _o__cexit | ||
| 2678 | _o__configthreadlocale | ||
| 2679 | _o__configure_narrow_argv | ||
| 2680 | _o__controlfp_s | ||
| 2681 | _o__crt_atexit | ||
| 2682 | _o__exit | ||
| 2683 | _o__get_initial_narrow_environment | ||
| 2684 | _o__get_initial_wide_environment | ||
| 2685 | _o__initialize_narrow_environment | ||
| 2686 | _o__initialize_wide_environment | ||
| 2687 | _o__purecall | ||
| 2688 | _o__seh_filter_dll | ||
| 2689 | _o__seh_filter_exe | ||
| 2690 | _o__set_app_type | ||
| 2691 | _o__set_fmode | ||
| 2692 | _o_exit | ||
| 2693 | _o_memcpy_s | ||
| 2694 | _o_rename | ||
| 2695 | _o_setlocale | ||
| 2696 | |||
| 2697 | ; All symbols below this line are not available in Windows XP version of ucrtbase.dll | ||
| 2698 | ; Also those symbols are not available in any version of ucrtbased.dll | ||
| 2699 | |||
| 2700 | ; These symbols were added in ucrtbase.dll version 10.0.14393.0 | ||
| 2701 | ; This is part of the Windows 10 Anniversary Update (Redstone 1) | ||
| 2702 | F_NON_DEBUG(__std_terminate) | ||
| 2703 | F_NON_DEBUG(__uncaught_exceptions) | ||
| 2704 | |||
| 2705 | ; These symbols were added in ucrtbase.dll version 10.0.17134.1 | ||
| 2706 | F_NON_DEBUG(F_NON_I386(__C_specific_handler_noexcept)) | ||
| 2707 | |||
| 2708 | ; These symbols were added in ucrtbase.dll version 10.0.19041.1 | ||
| 2709 | F_NON_DEBUG(F_X64(__CxxFrameHandler4)) | ||
lib/libc/mingw/lib-common/ucrtbase.def.in+7-2657| ... | @@ -2,2661 +2,11 @@ LIBRARY "ucrtbase.dll" | ... | @@ -2,2661 +2,11 @@ LIBRARY "ucrtbase.dll" |
| 2 | EXPORTS | 2 | EXPORTS |
| 3 | 3 | ||
| 4 | #include "func.def.in" | 4 | #include "func.def.in" |
| 5 | #define UCRTBASE | ||
| 6 | #include "msvcrt-common.def.in" | ||
| 7 | 5 | ||
| 8 | #ifdef DEF_I386 | 6 | ; Include common ucrtbase symbols for non-debug build ucrtbase.dll |
| 9 | _CIacos | 7 | #undef DEF_DEBUG |
| 10 | _CIasin | 8 | #include "ucrtbase-common.def.in" |
| 11 | _CIatan | 9 | |
| 12 | _CIatan2 | 10 | ; Include symbol aliases for compatibility with msvcrt.dll |
| 13 | _CIcos | 11 | #define UCRTBASE |
| 14 | _CIcosh | 12 | #include "crt-aliases.def.in" |
| 15 | _CIexp | ||
| 16 | _CIfmod | ||
| 17 | _CIlog | ||
| 18 | _CIlog10 | ||
| 19 | _CIpow | ||
| 20 | _CIsin | ||
| 21 | _CIsinh | ||
| 22 | _CIsqrt | ||
| 23 | _CItan | ||
| 24 | _CItanh | ||
| 25 | #endif | ||
| 26 | _Cbuild | ||
| 27 | _Cmulcc | ||
| 28 | _Cmulcr | ||
| 29 | _CreateFrameInfo | ||
| 30 | F_I386(_CxxThrowException@8) | ||
| 31 | F_NON_I386(_CxxThrowException) | ||
| 32 | F_I386(_EH_prolog) | ||
| 33 | _Exit | ||
| 34 | _FCbuild | ||
| 35 | _FCmulcc | ||
| 36 | _FCmulcr | ||
| 37 | _FindAndUnlinkFrame | ||
| 38 | _GetImageBase | ||
| 39 | _GetThrowImageBase | ||
| 40 | _Getdays | ||
| 41 | _Getmonths | ||
| 42 | _Gettnames | ||
| 43 | _IsExceptionObjectToBeDestroyed | ||
| 44 | _LCbuild | ||
| 45 | _LCmulcc | ||
| 46 | _LCmulcr | ||
| 47 | _SetImageBase | ||
| 48 | _SetThrowImageBase | ||
| 49 | _NLG_Dispatch2 | ||
| 50 | _NLG_Return | ||
| 51 | _NLG_Return2 | ||
| 52 | _SetWinRTOutOfMemoryExceptionCallback | ||
| 53 | _Strftime | ||
| 54 | _W_Getdays | ||
| 55 | _W_Getmonths | ||
| 56 | _W_Gettnames | ||
| 57 | _Wcsftime | ||
| 58 | __AdjustPointer | ||
| 59 | __BuildCatchObject | ||
| 60 | __BuildCatchObjectHelper | ||
| 61 | F_NON_I386(__C_specific_handler) | ||
| 62 | __CxxDetectRethrow | ||
| 63 | __CxxExceptionFilter | ||
| 64 | __CxxFrameHandler | ||
| 65 | __CxxFrameHandler2 | ||
| 66 | __CxxFrameHandler3 | ||
| 67 | F_I386(__CxxLongjmpUnwind@4) | ||
| 68 | __CxxQueryExceptionSize | ||
| 69 | __CxxRegisterExceptionObject | ||
| 70 | __CxxUnregisterExceptionObject | ||
| 71 | __DestructExceptionObject | ||
| 72 | __FrameUnwindFilter | ||
| 73 | __GetPlatformExceptionInfo | ||
| 74 | __NLG_Dispatch2 | ||
| 75 | __NLG_Return2 | ||
| 76 | __RTCastToVoid | ||
| 77 | __RTDynamicCast | ||
| 78 | __RTtypeid | ||
| 79 | __TypeMatch | ||
| 80 | ___lc_codepage_func | ||
| 81 | ___lc_collate_cp_func | ||
| 82 | ___lc_locale_name_func | ||
| 83 | ___mb_cur_max_func | ||
| 84 | ___mb_cur_max_l_func | ||
| 85 | __acrt_iob_func | ||
| 86 | __conio_common_vcprintf | ||
| 87 | __conio_common_vcprintf_p | ||
| 88 | __conio_common_vcprintf_s | ||
| 89 | __conio_common_vcscanf | ||
| 90 | __conio_common_vcwprintf | ||
| 91 | __conio_common_vcwprintf_p | ||
| 92 | __conio_common_vcwprintf_s | ||
| 93 | __conio_common_vcwscanf | ||
| 94 | F_I386(__control87_2) | ||
| 95 | __current_exception | ||
| 96 | __current_exception_context | ||
| 97 | __daylight | ||
| 98 | __dcrt_get_wide_environment_from_os | ||
| 99 | __dcrt_initial_narrow_environment | ||
| 100 | __doserrno | ||
| 101 | __dstbias | ||
| 102 | __fpe_flt_rounds | ||
| 103 | __fpecode | ||
| 104 | __initialize_lconv_for_unsigned_char | ||
| 105 | __lconv_init == __initialize_lconv_for_unsigned_char | ||
| 106 | __intrinsic_abnormal_termination | ||
| 107 | __intrinsic_setjmp | ||
| 108 | F64(__intrinsic_setjmpex) | ||
| 109 | __isascii | ||
| 110 | __iscsym | ||
| 111 | __iscsymf | ||
| 112 | __iswcsym | ||
| 113 | __iswcsymf | ||
| 114 | #ifdef DEF_I386 | ||
| 115 | __libm_sse2_acos | ||
| 116 | __libm_sse2_acosf | ||
| 117 | __libm_sse2_asin | ||
| 118 | __libm_sse2_asinf | ||
| 119 | __libm_sse2_atan | ||
| 120 | __libm_sse2_atan2 | ||
| 121 | __libm_sse2_atanf | ||
| 122 | __libm_sse2_cos | ||
| 123 | __libm_sse2_cosf | ||
| 124 | __libm_sse2_exp | ||
| 125 | __libm_sse2_expf | ||
| 126 | __libm_sse2_log | ||
| 127 | __libm_sse2_log10 | ||
| 128 | __libm_sse2_log10f | ||
| 129 | __libm_sse2_logf | ||
| 130 | __libm_sse2_pow | ||
| 131 | __libm_sse2_powf | ||
| 132 | __libm_sse2_sin | ||
| 133 | __libm_sse2_sinf | ||
| 134 | __libm_sse2_tan | ||
| 135 | __libm_sse2_tanf | ||
| 136 | #endif | ||
| 137 | __p___argc | ||
| 138 | __p___argv | ||
| 139 | __p___wargv | ||
| 140 | __p__acmdln | ||
| 141 | __p__commode | ||
| 142 | __p__environ | ||
| 143 | __p__fmode | ||
| 144 | __p__mbcasemap | ||
| 145 | __p__mbctype | ||
| 146 | __p__pgmptr | ||
| 147 | __p__wcmdln | ||
| 148 | __p__wenviron | ||
| 149 | __p__wpgmptr | ||
| 150 | __pctype_func | ||
| 151 | __processing_throw | ||
| 152 | __pwctype_func | ||
| 153 | __pxcptinfoptrs | ||
| 154 | __report_gsfailure | ||
| 155 | __setusermatherr | ||
| 156 | __std_exception_copy | ||
| 157 | __std_exception_destroy | ||
| 158 | __std_type_info_compare | ||
| 159 | __std_type_info_destroy_list | ||
| 160 | __std_type_info_hash | ||
| 161 | __std_type_info_name | ||
| 162 | __stdio_common_vfprintf | ||
| 163 | __stdio_common_vfprintf_p | ||
| 164 | __stdio_common_vfprintf_s | ||
| 165 | __stdio_common_vfscanf | ||
| 166 | __stdio_common_vfwprintf | ||
| 167 | __stdio_common_vfwprintf_p | ||
| 168 | __stdio_common_vfwprintf_s | ||
| 169 | __stdio_common_vfwscanf | ||
| 170 | __stdio_common_vsnprintf_s | ||
| 171 | __stdio_common_vsnwprintf_s | ||
| 172 | __stdio_common_vsprintf | ||
| 173 | __stdio_common_vsprintf_p | ||
| 174 | __stdio_common_vsprintf_s | ||
| 175 | __stdio_common_vsscanf | ||
| 176 | __stdio_common_vswprintf | ||
| 177 | __stdio_common_vswprintf_p | ||
| 178 | __stdio_common_vswprintf_s | ||
| 179 | __stdio_common_vswscanf | ||
| 180 | __strncnt | ||
| 181 | __sys_errlist | ||
| 182 | __sys_nerr | ||
| 183 | __threadhandle | ||
| 184 | __threadid | ||
| 185 | __timezone | ||
| 186 | __toascii | ||
| 187 | __tzname | ||
| 188 | __unDName | ||
| 189 | __unDNameEx | ||
| 190 | __uncaught_exception | ||
| 191 | __wcserror | ||
| 192 | __wcserror_s | ||
| 193 | __wcsncnt | ||
| 194 | _abs64 | ||
| 195 | _access | ||
| 196 | _access_s | ||
| 197 | _aligned_free | ||
| 198 | _aligned_malloc | ||
| 199 | _aligned_msize | ||
| 200 | _aligned_offset_malloc | ||
| 201 | _aligned_offset_realloc | ||
| 202 | _aligned_offset_recalloc | ||
| 203 | _aligned_realloc | ||
| 204 | _aligned_recalloc | ||
| 205 | ; DATA set manually | ||
| 206 | _assert | ||
| 207 | _atodbl | ||
| 208 | _atodbl_l | ||
| 209 | _atof_l | ||
| 210 | _atoflt | ||
| 211 | _atoflt_l | ||
| 212 | _atoi64 | ||
| 213 | _atoi64_l | ||
| 214 | _atoi_l | ||
| 215 | _atol_l | ||
| 216 | _atoldbl | ||
| 217 | _atoldbl_l | ||
| 218 | _atoll_l | ||
| 219 | _beep | ||
| 220 | _beginthread | ||
| 221 | _beginthreadex | ||
| 222 | _byteswap_uint64 | ||
| 223 | _byteswap_ulong | ||
| 224 | _byteswap_ushort | ||
| 225 | _c_exit | ||
| 226 | ; DATA set manually | ||
| 227 | _cabs DATA | ||
| 228 | _callnewh | ||
| 229 | _calloc_base | ||
| 230 | _cexit | ||
| 231 | _cgets | ||
| 232 | _cgets_s | ||
| 233 | _cgetws | ||
| 234 | _cgetws_s | ||
| 235 | _chdir | ||
| 236 | _chdrive | ||
| 237 | _chgsign | ||
| 238 | _chgsignf | ||
| 239 | F_I386(_chkesp) | ||
| 240 | _chmod | ||
| 241 | _chsize | ||
| 242 | _chsize_s | ||
| 243 | _clearfp | ||
| 244 | _close | ||
| 245 | _commit | ||
| 246 | _configthreadlocale | ||
| 247 | _configure_narrow_argv | ||
| 248 | _configure_wide_argv | ||
| 249 | _control87 | ||
| 250 | _controlfp | ||
| 251 | _controlfp_s | ||
| 252 | _copysign | ||
| 253 | _copysignf | ||
| 254 | _cputs | ||
| 255 | _cputws | ||
| 256 | _creat | ||
| 257 | _create_locale | ||
| 258 | _crt_at_quick_exit | ||
| 259 | _crt_atexit | ||
| 260 | _crt_debugger_hook | ||
| 261 | _ctime32 | ||
| 262 | _ctime32_s | ||
| 263 | _ctime64 | ||
| 264 | _ctime64_s | ||
| 265 | _cwait | ||
| 266 | _d_int | ||
| 267 | _dclass | ||
| 268 | _dexp | ||
| 269 | _difftime32 | ||
| 270 | _difftime64 | ||
| 271 | _dlog | ||
| 272 | _dnorm | ||
| 273 | _dpcomp | ||
| 274 | _dpoly | ||
| 275 | _dscale | ||
| 276 | _dsign | ||
| 277 | _dsin | ||
| 278 | _dtest | ||
| 279 | _dunscale | ||
| 280 | _dup | ||
| 281 | _dup2 | ||
| 282 | _dupenv_s | ||
| 283 | _ecvt | ||
| 284 | _ecvt_s | ||
| 285 | _endthread | ||
| 286 | _endthreadex | ||
| 287 | _eof | ||
| 288 | _errno | ||
| 289 | _except1 | ||
| 290 | F_I386(_except_handler2) | ||
| 291 | F_I386(_except_handler3) | ||
| 292 | F_I386(_except_handler4_common) | ||
| 293 | _execl | ||
| 294 | _execle | ||
| 295 | _execlp | ||
| 296 | _execlpe | ||
| 297 | _execute_onexit_table | ||
| 298 | _execv | ||
| 299 | _execve | ||
| 300 | _execvp | ||
| 301 | _execvpe | ||
| 302 | _exit | ||
| 303 | _expand | ||
| 304 | _fclose_nolock | ||
| 305 | _fcloseall | ||
| 306 | _fcvt | ||
| 307 | _fcvt_s | ||
| 308 | _fd_int | ||
| 309 | _fdclass | ||
| 310 | _fdexp | ||
| 311 | _fdlog | ||
| 312 | _fdnorm | ||
| 313 | _fdopen | ||
| 314 | _fdpcomp | ||
| 315 | _fdpoly | ||
| 316 | _fdscale | ||
| 317 | _fdsign | ||
| 318 | _fdsin | ||
| 319 | _fdtest | ||
| 320 | _fdunscale | ||
| 321 | _fflush_nolock | ||
| 322 | _fgetc_nolock | ||
| 323 | _fgetchar | ||
| 324 | _fgetwc_nolock | ||
| 325 | _fgetwchar | ||
| 326 | _filelength | ||
| 327 | _filelengthi64 | ||
| 328 | _fileno | ||
| 329 | _findclose | ||
| 330 | _findfirst == _findfirst64 | ||
| 331 | _findfirst32 | ||
| 332 | _findfirst32i64 | ||
| 333 | _findfirst64 | ||
| 334 | _findfirst64i32 | ||
| 335 | _findnext == _findnext64 | ||
| 336 | _findnext32 | ||
| 337 | _findnext32i64 | ||
| 338 | _findnext64 | ||
| 339 | _findnext64i32 | ||
| 340 | _finite | ||
| 341 | F_NON_I386(_finitef) | ||
| 342 | _flushall | ||
| 343 | _fpclass | ||
| 344 | _fpclassf | ||
| 345 | F_NON_I386(_fpieee_flt) | ||
| 346 | ; DATA added manually | ||
| 347 | _fpreset DATA | ||
| 348 | _fputc_nolock | ||
| 349 | _fputchar | ||
| 350 | _fputwc_nolock | ||
| 351 | _fputwchar | ||
| 352 | _fread_nolock | ||
| 353 | _fread_nolock_s | ||
| 354 | _free_base | ||
| 355 | _free_locale | ||
| 356 | _fseek_nolock | ||
| 357 | _fseeki64 | ||
| 358 | _fseeki64_nolock | ||
| 359 | _fsopen | ||
| 360 | _fstat32 | ||
| 361 | _fstat32i64 | ||
| 362 | _fstat64 | ||
| 363 | _fstat64i32 | ||
| 364 | _ftell_nolock | ||
| 365 | _ftelli64 | ||
| 366 | _ftelli64_nolock | ||
| 367 | _ftime == _ftime64 | ||
| 368 | _ftime32 | ||
| 369 | _ftime32_s | ||
| 370 | _ftime64 | ||
| 371 | _ftime64_s | ||
| 372 | F_I386(_ftol) | ||
| 373 | _fullpath | ||
| 374 | _futime == _futime64 | ||
| 375 | _futime32 | ||
| 376 | _futime64 | ||
| 377 | _fwrite_nolock | ||
| 378 | _gcvt | ||
| 379 | _gcvt_s | ||
| 380 | _get_FMA3_enable | ||
| 381 | _get_current_locale | ||
| 382 | _get_daylight | ||
| 383 | _get_doserrno | ||
| 384 | _get_dstbias | ||
| 385 | _get_errno | ||
| 386 | _get_fmode | ||
| 387 | _get_heap_handle | ||
| 388 | _get_initial_narrow_environment | ||
| 389 | _get_initial_wide_environment | ||
| 390 | _get_invalid_parameter_handler | ||
| 391 | _get_narrow_winmain_command_line | ||
| 392 | _get_osfhandle | ||
| 393 | _get_pgmptr | ||
| 394 | _get_printf_count_output | ||
| 395 | _get_purecall_handler | ||
| 396 | _get_stream_buffer_pointers | ||
| 397 | _get_terminate | ||
| 398 | _get_thread_local_invalid_parameter_handler | ||
| 399 | _get_timezone | ||
| 400 | _get_tzname | ||
| 401 | _get_unexpected | ||
| 402 | _get_wide_winmain_command_line | ||
| 403 | _get_wpgmptr | ||
| 404 | _getc_nolock | ||
| 405 | _getch | ||
| 406 | _getch_nolock | ||
| 407 | _getche | ||
| 408 | _getche_nolock | ||
| 409 | _getcwd | ||
| 410 | _getdcwd | ||
| 411 | _getdiskfree | ||
| 412 | _getdllprocaddr | ||
| 413 | _getdrive | ||
| 414 | _getdrives | ||
| 415 | _getmaxstdio | ||
| 416 | _getmbcp | ||
| 417 | _getpid | ||
| 418 | _getsystime | ||
| 419 | _getw | ||
| 420 | _getwc_nolock | ||
| 421 | _getwch | ||
| 422 | _getwch_nolock | ||
| 423 | _getwche | ||
| 424 | _getwche_nolock | ||
| 425 | _getws | ||
| 426 | _getws_s | ||
| 427 | F_I386(_global_unwind2) | ||
| 428 | _gmtime32 | ||
| 429 | _gmtime32_s | ||
| 430 | _gmtime64 | ||
| 431 | _gmtime64_s | ||
| 432 | _heapchk | ||
| 433 | _heapmin | ||
| 434 | _heapwalk | ||
| 435 | _hypot | ||
| 436 | _hypotf | ||
| 437 | _i64toa | ||
| 438 | _i64toa_s | ||
| 439 | _i64tow | ||
| 440 | _i64tow_s | ||
| 441 | _initialize_narrow_environment | ||
| 442 | _initialize_onexit_table | ||
| 443 | _initialize_wide_environment | ||
| 444 | _initterm | ||
| 445 | _initterm_e | ||
| 446 | _invalid_parameter_noinfo | ||
| 447 | _invalid_parameter_noinfo_noreturn | ||
| 448 | _invoke_watson | ||
| 449 | _is_exception_typeof | ||
| 450 | _isalnum_l | ||
| 451 | _isalpha_l | ||
| 452 | _isatty | ||
| 453 | _isblank_l | ||
| 454 | _iscntrl_l | ||
| 455 | _isctype | ||
| 456 | _isctype_l | ||
| 457 | _isdigit_l | ||
| 458 | _isgraph_l | ||
| 459 | _isleadbyte_l | ||
| 460 | _islower_l | ||
| 461 | _ismbbalnum | ||
| 462 | _ismbbalnum_l | ||
| 463 | _ismbbalpha | ||
| 464 | _ismbbalpha_l | ||
| 465 | _ismbbblank | ||
| 466 | _ismbbblank_l | ||
| 467 | _ismbbgraph | ||
| 468 | _ismbbgraph_l | ||
| 469 | _ismbbkalnum | ||
| 470 | _ismbbkalnum_l | ||
| 471 | _ismbbkana | ||
| 472 | _ismbbkana_l | ||
| 473 | _ismbbkprint | ||
| 474 | _ismbbkprint_l | ||
| 475 | _ismbbkpunct | ||
| 476 | _ismbbkpunct_l | ||
| 477 | _ismbblead | ||
| 478 | _ismbblead_l | ||
| 479 | _ismbbprint | ||
| 480 | _ismbbprint_l | ||
| 481 | _ismbbpunct | ||
| 482 | _ismbbpunct_l | ||
| 483 | _ismbbtrail | ||
| 484 | _ismbbtrail_l | ||
| 485 | _ismbcalnum | ||
| 486 | _ismbcalnum_l | ||
| 487 | _ismbcalpha | ||
| 488 | _ismbcalpha_l | ||
| 489 | _ismbcblank | ||
| 490 | _ismbcblank_l | ||
| 491 | _ismbcdigit | ||
| 492 | _ismbcdigit_l | ||
| 493 | _ismbcgraph | ||
| 494 | _ismbcgraph_l | ||
| 495 | _ismbchira | ||
| 496 | _ismbchira_l | ||
| 497 | _ismbckata | ||
| 498 | _ismbckata_l | ||
| 499 | _ismbcl0 | ||
| 500 | _ismbcl0_l | ||
| 501 | _ismbcl1 | ||
| 502 | _ismbcl1_l | ||
| 503 | _ismbcl2 | ||
| 504 | _ismbcl2_l | ||
| 505 | _ismbclegal | ||
| 506 | _ismbclegal_l | ||
| 507 | _ismbclower | ||
| 508 | _ismbclower_l | ||
| 509 | _ismbcprint | ||
| 510 | _ismbcprint_l | ||
| 511 | _ismbcpunct | ||
| 512 | _ismbcpunct_l | ||
| 513 | _ismbcspace | ||
| 514 | _ismbcspace_l | ||
| 515 | _ismbcsymbol | ||
| 516 | _ismbcsymbol_l | ||
| 517 | _ismbcupper | ||
| 518 | _ismbcupper_l | ||
| 519 | _ismbslead | ||
| 520 | _ismbslead_l | ||
| 521 | _ismbstrail | ||
| 522 | _ismbstrail_l | ||
| 523 | _isnan | ||
| 524 | F_X64(_isnanf) | ||
| 525 | _isprint_l | ||
| 526 | _ispunct_l | ||
| 527 | _isspace_l | ||
| 528 | _isupper_l | ||
| 529 | _iswalnum_l | ||
| 530 | _iswalpha_l | ||
| 531 | _iswblank_l | ||
| 532 | _iswcntrl_l | ||
| 533 | _iswcsym_l | ||
| 534 | _iswcsymf_l | ||
| 535 | _iswctype_l | ||
| 536 | _iswdigit_l | ||
| 537 | _iswgraph_l | ||
| 538 | _iswlower_l | ||
| 539 | _iswprint_l | ||
| 540 | _iswpunct_l | ||
| 541 | _iswspace_l | ||
| 542 | _iswupper_l | ||
| 543 | _iswxdigit_l | ||
| 544 | _isxdigit_l | ||
| 545 | _itoa | ||
| 546 | _itoa_s | ||
| 547 | _itow | ||
| 548 | _itow_s | ||
| 549 | _j0 | ||
| 550 | _j1 | ||
| 551 | _jn | ||
| 552 | _kbhit | ||
| 553 | _ld_int | ||
| 554 | _ldclass | ||
| 555 | _ldexp | ||
| 556 | _ldlog | ||
| 557 | _ldpcomp | ||
| 558 | _ldpoly | ||
| 559 | _ldscale | ||
| 560 | _ldsign | ||
| 561 | _ldsin | ||
| 562 | _ldtest | ||
| 563 | _ldunscale | ||
| 564 | _lfind | ||
| 565 | _lfind_s | ||
| 566 | #ifdef DEF_I386 | ||
| 567 | _libm_sse2_acos_precise | ||
| 568 | _libm_sse2_asin_precise | ||
| 569 | _libm_sse2_atan_precise | ||
| 570 | _libm_sse2_cos_precise | ||
| 571 | _libm_sse2_exp_precise | ||
| 572 | _libm_sse2_log10_precise | ||
| 573 | _libm_sse2_log_precise | ||
| 574 | _libm_sse2_pow_precise | ||
| 575 | _libm_sse2_sin_precise | ||
| 576 | _libm_sse2_sqrt_precise | ||
| 577 | _libm_sse2_tan_precise | ||
| 578 | #endif | ||
| 579 | _loaddll | ||
| 580 | F_X64(_local_unwind) | ||
| 581 | F_I386(_local_unwind2) | ||
| 582 | F_I386(_local_unwind4) | ||
| 583 | _localtime32 | ||
| 584 | _localtime32_s | ||
| 585 | _localtime64 | ||
| 586 | _localtime64_s | ||
| 587 | _lock_file | ||
| 588 | _lock_locales | ||
| 589 | _locking | ||
| 590 | _logb | ||
| 591 | F_NON_I386(_logbf) | ||
| 592 | F_I386(_longjmpex) | ||
| 593 | _lrotl | ||
| 594 | _lrotr | ||
| 595 | _lsearch | ||
| 596 | _lsearch_s | ||
| 597 | _lseek | ||
| 598 | _lseeki64 | ||
| 599 | _ltoa | ||
| 600 | _ltoa_s | ||
| 601 | _ltow | ||
| 602 | _ltow_s | ||
| 603 | _makepath | ||
| 604 | _makepath_s | ||
| 605 | _malloc_base | ||
| 606 | _mbbtombc | ||
| 607 | _mbbtombc_l | ||
| 608 | _mbbtype | ||
| 609 | _mbbtype_l | ||
| 610 | ; DATA added manually | ||
| 611 | _mbcasemap DATA | ||
| 612 | _mbccpy | ||
| 613 | _mbccpy_l | ||
| 614 | _mbccpy_s | ||
| 615 | _mbccpy_s_l | ||
| 616 | _mbcjistojms | ||
| 617 | _mbcjistojms_l | ||
| 618 | _mbcjmstojis | ||
| 619 | _mbcjmstojis_l | ||
| 620 | _mbclen | ||
| 621 | _mbclen_l | ||
| 622 | _mbctohira | ||
| 623 | _mbctohira_l | ||
| 624 | _mbctokata | ||
| 625 | _mbctokata_l | ||
| 626 | _mbctolower | ||
| 627 | _mbctolower_l | ||
| 628 | _mbctombb | ||
| 629 | _mbctombb_l | ||
| 630 | _mbctoupper | ||
| 631 | _mbctoupper_l | ||
| 632 | _mblen_l | ||
| 633 | _mbsbtype | ||
| 634 | _mbsbtype_l | ||
| 635 | _mbscat_s | ||
| 636 | _mbscat_s_l | ||
| 637 | _mbschr | ||
| 638 | _mbschr_l | ||
| 639 | _mbscmp | ||
| 640 | _mbscmp_l | ||
| 641 | _mbscoll | ||
| 642 | _mbscoll_l | ||
| 643 | _mbscpy_s | ||
| 644 | _mbscpy_s_l | ||
| 645 | _mbscspn | ||
| 646 | _mbscspn_l | ||
| 647 | _mbsdec | ||
| 648 | _mbsdec_l | ||
| 649 | _mbsdup | ||
| 650 | _mbsicmp | ||
| 651 | _mbsicmp_l | ||
| 652 | _mbsicoll | ||
| 653 | _mbsicoll_l | ||
| 654 | _mbsinc | ||
| 655 | _mbsinc_l | ||
| 656 | _mbslen | ||
| 657 | _mbslen_l | ||
| 658 | _mbslwr | ||
| 659 | _mbslwr_l | ||
| 660 | _mbslwr_s | ||
| 661 | _mbslwr_s_l | ||
| 662 | _mbsnbcat | ||
| 663 | _mbsnbcat_l | ||
| 664 | _mbsnbcat_s | ||
| 665 | _mbsnbcat_s_l | ||
| 666 | _mbsnbcmp | ||
| 667 | _mbsnbcmp_l | ||
| 668 | _mbsnbcnt | ||
| 669 | _mbsnbcnt_l | ||
| 670 | _mbsnbcoll | ||
| 671 | _mbsnbcoll_l | ||
| 672 | _mbsnbcpy | ||
| 673 | _mbsnbcpy_l | ||
| 674 | _mbsnbcpy_s | ||
| 675 | _mbsnbcpy_s_l | ||
| 676 | _mbsnbicmp | ||
| 677 | _mbsnbicmp_l | ||
| 678 | _mbsnbicoll | ||
| 679 | _mbsnbicoll_l | ||
| 680 | _mbsnbset | ||
| 681 | _mbsnbset_l | ||
| 682 | _mbsnbset_s | ||
| 683 | _mbsnbset_s_l | ||
| 684 | _mbsncat | ||
| 685 | _mbsncat_l | ||
| 686 | _mbsncat_s | ||
| 687 | _mbsncat_s_l | ||
| 688 | _mbsnccnt | ||
| 689 | _mbsnccnt_l | ||
| 690 | _mbsncmp | ||
| 691 | _mbsncmp_l | ||
| 692 | _mbsncoll | ||
| 693 | _mbsncoll_l | ||
| 694 | _mbsncpy | ||
| 695 | _mbsncpy_l | ||
| 696 | _mbsncpy_s | ||
| 697 | _mbsncpy_s_l | ||
| 698 | _mbsnextc | ||
| 699 | _mbsnextc_l | ||
| 700 | _mbsnicmp | ||
| 701 | _mbsnicmp_l | ||
| 702 | _mbsnicoll | ||
| 703 | _mbsnicoll_l | ||
| 704 | _mbsninc | ||
| 705 | _mbsninc_l | ||
| 706 | _mbsnlen | ||
| 707 | _mbsnlen_l | ||
| 708 | _mbsnset | ||
| 709 | _mbsnset_l | ||
| 710 | _mbsnset_s | ||
| 711 | _mbsnset_s_l | ||
| 712 | _mbspbrk | ||
| 713 | _mbspbrk_l | ||
| 714 | _mbsrchr | ||
| 715 | _mbsrchr_l | ||
| 716 | _mbsrev | ||
| 717 | _mbsrev_l | ||
| 718 | _mbsset | ||
| 719 | _mbsset_l | ||
| 720 | _mbsset_s | ||
| 721 | _mbsset_s_l | ||
| 722 | _mbsspn | ||
| 723 | _mbsspn_l | ||
| 724 | _mbsspnp | ||
| 725 | _mbsspnp_l | ||
| 726 | _mbsstr | ||
| 727 | _mbsstr_l | ||
| 728 | _mbstok | ||
| 729 | _mbstok_l | ||
| 730 | _mbstok_s | ||
| 731 | _mbstok_s_l | ||
| 732 | _mbstowcs_l | ||
| 733 | _mbstowcs_s_l | ||
| 734 | _mbstrlen | ||
| 735 | _mbstrlen_l | ||
| 736 | _mbstrnlen | ||
| 737 | _mbstrnlen_l | ||
| 738 | _mbsupr | ||
| 739 | _mbsupr_l | ||
| 740 | _mbsupr_s | ||
| 741 | _mbsupr_s_l | ||
| 742 | _mbtowc_l | ||
| 743 | _memccpy | ||
| 744 | _memicmp | ||
| 745 | _memicmp_l | ||
| 746 | _mkdir | ||
| 747 | _mkgmtime32 | ||
| 748 | _mkgmtime64 | ||
| 749 | _mktemp | ||
| 750 | _mktemp_s | ||
| 751 | _mktime32 | ||
| 752 | _mktime64 | ||
| 753 | _msize | ||
| 754 | _nextafter | ||
| 755 | F_X64(_nextafterf) | ||
| 756 | _o__CIacos | ||
| 757 | _o__CIasin | ||
| 758 | _o__CIatan | ||
| 759 | _o__CIatan2 | ||
| 760 | _o__CIcos | ||
| 761 | _o__CIcosh | ||
| 762 | _o__CIexp | ||
| 763 | _o__CIfmod | ||
| 764 | _o__CIlog | ||
| 765 | _o__CIlog10 | ||
| 766 | _o__CIpow | ||
| 767 | _o__CIsin | ||
| 768 | _o__CIsinh | ||
| 769 | _o__CIsqrt | ||
| 770 | _o__CItan | ||
| 771 | _o__CItanh | ||
| 772 | _o__Getdays | ||
| 773 | _o__Getmonths | ||
| 774 | _o__Gettnames | ||
| 775 | _o__Strftime | ||
| 776 | _o__W_Getdays | ||
| 777 | _o__W_Getmonths | ||
| 778 | _o__W_Gettnames | ||
| 779 | _o__Wcsftime | ||
| 780 | _o____lc_codepage_func | ||
| 781 | _o____lc_collate_cp_func | ||
| 782 | _o____lc_locale_name_func | ||
| 783 | _o____mb_cur_max_func | ||
| 784 | _o___acrt_iob_func | ||
| 785 | _o___conio_common_vcprintf | ||
| 786 | _o___conio_common_vcprintf_p | ||
| 787 | _o___conio_common_vcprintf_s | ||
| 788 | _o___conio_common_vcscanf | ||
| 789 | _o___conio_common_vcwprintf | ||
| 790 | _o___conio_common_vcwprintf_p | ||
| 791 | _o___conio_common_vcwprintf_s | ||
| 792 | _o___conio_common_vcwscanf | ||
| 793 | _o___daylight | ||
| 794 | _o___dstbias | ||
| 795 | _o___fpe_flt_rounds | ||
| 796 | _o___libm_sse2_acos | ||
| 797 | _o___libm_sse2_acosf | ||
| 798 | _o___libm_sse2_asin | ||
| 799 | _o___libm_sse2_asinf | ||
| 800 | _o___libm_sse2_atan | ||
| 801 | _o___libm_sse2_atan2 | ||
| 802 | _o___libm_sse2_atanf | ||
| 803 | _o___libm_sse2_cos | ||
| 804 | _o___libm_sse2_cosf | ||
| 805 | _o___libm_sse2_exp | ||
| 806 | _o___libm_sse2_expf | ||
| 807 | _o___libm_sse2_log | ||
| 808 | _o___libm_sse2_log10 | ||
| 809 | _o___libm_sse2_log10f | ||
| 810 | _o___libm_sse2_logf | ||
| 811 | _o___libm_sse2_pow | ||
| 812 | _o___libm_sse2_powf | ||
| 813 | _o___libm_sse2_sin | ||
| 814 | _o___libm_sse2_sinf | ||
| 815 | _o___libm_sse2_tan | ||
| 816 | _o___libm_sse2_tanf | ||
| 817 | _o___p___argc | ||
| 818 | _o___p___argv | ||
| 819 | _o___p___wargv | ||
| 820 | _o___p__acmdln | ||
| 821 | _o___p__commode | ||
| 822 | _o___p__environ | ||
| 823 | _o___p__fmode | ||
| 824 | _o___p__mbcasemap | ||
| 825 | _o___p__mbctype | ||
| 826 | _o___p__pgmptr | ||
| 827 | _o___p__wcmdln | ||
| 828 | _o___p__wenviron | ||
| 829 | _o___p__wpgmptr | ||
| 830 | _o___pctype_func | ||
| 831 | _o___pwctype_func | ||
| 832 | _o___std_exception_copy | ||
| 833 | _o___std_exception_destroy | ||
| 834 | _o___std_type_info_destroy_list | ||
| 835 | _o___std_type_info_name | ||
| 836 | _o___stdio_common_vfprintf | ||
| 837 | _o___stdio_common_vfprintf_p | ||
| 838 | _o___stdio_common_vfprintf_s | ||
| 839 | _o___stdio_common_vfscanf | ||
| 840 | _o___stdio_common_vfwprintf | ||
| 841 | _o___stdio_common_vfwprintf_p | ||
| 842 | _o___stdio_common_vfwprintf_s | ||
| 843 | _o___stdio_common_vfwscanf | ||
| 844 | _o___stdio_common_vsnprintf_s | ||
| 845 | _o___stdio_common_vsnwprintf_s | ||
| 846 | _o___stdio_common_vsprintf | ||
| 847 | _o___stdio_common_vsprintf_p | ||
| 848 | _o___stdio_common_vsprintf_s | ||
| 849 | _o___stdio_common_vsscanf | ||
| 850 | _o___stdio_common_vswprintf | ||
| 851 | _o___stdio_common_vswprintf_p | ||
| 852 | _o___stdio_common_vswprintf_s | ||
| 853 | _o___stdio_common_vswscanf | ||
| 854 | _o___timezone | ||
| 855 | _o___tzname | ||
| 856 | _o___wcserror | ||
| 857 | _o__access | ||
| 858 | _o__access_s | ||
| 859 | _o__aligned_free | ||
| 860 | _o__aligned_malloc | ||
| 861 | _o__aligned_msize | ||
| 862 | _o__aligned_offset_malloc | ||
| 863 | _o__aligned_offset_realloc | ||
| 864 | _o__aligned_offset_recalloc | ||
| 865 | _o__aligned_realloc | ||
| 866 | _o__aligned_recalloc | ||
| 867 | _o__atodbl | ||
| 868 | _o__atodbl_l | ||
| 869 | _o__atof_l | ||
| 870 | _o__atoflt | ||
| 871 | _o__atoflt_l | ||
| 872 | _o__atoi64 | ||
| 873 | _o__atoi64_l | ||
| 874 | _o__atoi_l | ||
| 875 | _o__atol_l | ||
| 876 | _o__atoldbl | ||
| 877 | _o__atoldbl_l | ||
| 878 | _o__atoll_l | ||
| 879 | _o__beep | ||
| 880 | _o__beginthread | ||
| 881 | _o__beginthreadex | ||
| 882 | _o__cabs | ||
| 883 | _o__callnewh | ||
| 884 | _o__calloc_base | ||
| 885 | _o__cexit | ||
| 886 | _o__cgets | ||
| 887 | _o__cgets_s | ||
| 888 | _o__cgetws | ||
| 889 | _o__cgetws_s | ||
| 890 | _o__chdir | ||
| 891 | _o__chdrive | ||
| 892 | _o__chmod | ||
| 893 | _o__chsize | ||
| 894 | _o__chsize_s | ||
| 895 | _o__close | ||
| 896 | _o__commit | ||
| 897 | _o__configthreadlocale | ||
| 898 | _o__configure_narrow_argv | ||
| 899 | _o__configure_wide_argv | ||
| 900 | _o__controlfp_s | ||
| 901 | _o__cputs | ||
| 902 | _o__cputws | ||
| 903 | _o__creat | ||
| 904 | _o__create_locale | ||
| 905 | _o__crt_atexit | ||
| 906 | _o__ctime32_s | ||
| 907 | _o__ctime64_s | ||
| 908 | _o__cwait | ||
| 909 | _o__d_int | ||
| 910 | _o__dclass | ||
| 911 | _o__difftime32 | ||
| 912 | _o__difftime64 | ||
| 913 | _o__dlog | ||
| 914 | _o__dnorm | ||
| 915 | _o__dpcomp | ||
| 916 | _o__dpoly | ||
| 917 | _o__dscale | ||
| 918 | _o__dsign | ||
| 919 | _o__dsin | ||
| 920 | _o__dtest | ||
| 921 | _o__dunscale | ||
| 922 | _o__dup | ||
| 923 | _o__dup2 | ||
| 924 | _o__dupenv_s | ||
| 925 | _o__ecvt | ||
| 926 | _o__ecvt_s | ||
| 927 | _o__endthread | ||
| 928 | _o__endthreadex | ||
| 929 | _o__eof | ||
| 930 | _o__errno | ||
| 931 | _o__except1 | ||
| 932 | _o__execute_onexit_table | ||
| 933 | _o__execv | ||
| 934 | _o__execve | ||
| 935 | _o__execvp | ||
| 936 | _o__execvpe | ||
| 937 | _o__exit | ||
| 938 | _o__expand | ||
| 939 | _o__fclose_nolock | ||
| 940 | _o__fcloseall | ||
| 941 | _o__fcvt | ||
| 942 | _o__fcvt_s | ||
| 943 | _o__fd_int | ||
| 944 | _o__fdclass | ||
| 945 | _o__fdexp | ||
| 946 | _o__fdlog | ||
| 947 | _o__fdopen | ||
| 948 | _o__fdpcomp | ||
| 949 | _o__fdpoly | ||
| 950 | _o__fdscale | ||
| 951 | _o__fdsign | ||
| 952 | _o__fdsin | ||
| 953 | _o__fflush_nolock | ||
| 954 | _o__fgetc_nolock | ||
| 955 | _o__fgetchar | ||
| 956 | _o__fgetwc_nolock | ||
| 957 | _o__fgetwchar | ||
| 958 | _o__filelength | ||
| 959 | _o__filelengthi64 | ||
| 960 | _o__fileno | ||
| 961 | _o__findclose | ||
| 962 | _o__findfirst32 | ||
| 963 | _o__findfirst32i64 | ||
| 964 | _o__findfirst64 | ||
| 965 | _o__findfirst64i32 | ||
| 966 | _o__findnext32 | ||
| 967 | _o__findnext32i64 | ||
| 968 | _o__findnext64 | ||
| 969 | _o__findnext64i32 | ||
| 970 | _o__flushall | ||
| 971 | _o__fpclass | ||
| 972 | _o__fpclassf | ||
| 973 | _o__fputc_nolock | ||
| 974 | _o__fputchar | ||
| 975 | _o__fputwc_nolock | ||
| 976 | _o__fputwchar | ||
| 977 | _o__fread_nolock | ||
| 978 | _o__fread_nolock_s | ||
| 979 | _o__free_base | ||
| 980 | _o__free_locale | ||
| 981 | _o__fseek_nolock | ||
| 982 | _o__fseeki64 | ||
| 983 | _o__fseeki64_nolock | ||
| 984 | _o__fsopen | ||
| 985 | _o__fstat32 | ||
| 986 | _o__fstat32i64 | ||
| 987 | _o__fstat64 | ||
| 988 | _o__fstat64i32 | ||
| 989 | _o__ftell_nolock | ||
| 990 | _o__ftelli64 | ||
| 991 | _o__ftelli64_nolock | ||
| 992 | _o__ftime32 | ||
| 993 | _o__ftime32_s | ||
| 994 | _o__ftime64 | ||
| 995 | _o__ftime64_s | ||
| 996 | _o__fullpath | ||
| 997 | _o__futime32 | ||
| 998 | _o__futime64 | ||
| 999 | _o__fwrite_nolock | ||
| 1000 | _o__gcvt | ||
| 1001 | _o__gcvt_s | ||
| 1002 | _o__get_daylight | ||
| 1003 | _o__get_doserrno | ||
| 1004 | _o__get_dstbias | ||
| 1005 | _o__get_errno | ||
| 1006 | _o__get_fmode | ||
| 1007 | _o__get_heap_handle | ||
| 1008 | _o__get_initial_narrow_environment | ||
| 1009 | _o__get_initial_wide_environment | ||
| 1010 | _o__get_invalid_parameter_handler | ||
| 1011 | _o__get_narrow_winmain_command_line | ||
| 1012 | _o__get_osfhandle | ||
| 1013 | _o__get_pgmptr | ||
| 1014 | _o__get_stream_buffer_pointers | ||
| 1015 | _o__get_terminate | ||
| 1016 | _o__get_thread_local_invalid_parameter_handler | ||
| 1017 | _o__get_timezone | ||
| 1018 | _o__get_tzname | ||
| 1019 | _o__get_wide_winmain_command_line | ||
| 1020 | _o__get_wpgmptr | ||
| 1021 | _o__getc_nolock | ||
| 1022 | _o__getch | ||
| 1023 | _o__getch_nolock | ||
| 1024 | _o__getche | ||
| 1025 | _o__getche_nolock | ||
| 1026 | _o__getcwd | ||
| 1027 | _o__getdcwd | ||
| 1028 | _o__getdiskfree | ||
| 1029 | _o__getdllprocaddr | ||
| 1030 | _o__getdrive | ||
| 1031 | _o__getdrives | ||
| 1032 | _o__getmbcp | ||
| 1033 | _o__getsystime | ||
| 1034 | _o__getw | ||
| 1035 | _o__getwc_nolock | ||
| 1036 | _o__getwch | ||
| 1037 | _o__getwch_nolock | ||
| 1038 | _o__getwche | ||
| 1039 | _o__getwche_nolock | ||
| 1040 | _o__getws | ||
| 1041 | _o__getws_s | ||
| 1042 | _o__gmtime32 | ||
| 1043 | _o__gmtime32_s | ||
| 1044 | _o__gmtime64 | ||
| 1045 | _o__gmtime64_s | ||
| 1046 | _o__heapchk | ||
| 1047 | _o__heapmin | ||
| 1048 | _o__hypot | ||
| 1049 | _o__hypotf | ||
| 1050 | _o__i64toa | ||
| 1051 | _o__i64toa_s | ||
| 1052 | _o__i64tow | ||
| 1053 | _o__i64tow_s | ||
| 1054 | _o__initialize_narrow_environment | ||
| 1055 | _o__initialize_onexit_table | ||
| 1056 | _o__initialize_wide_environment | ||
| 1057 | _o__invalid_parameter_noinfo | ||
| 1058 | _o__invalid_parameter_noinfo_noreturn | ||
| 1059 | _o__isatty | ||
| 1060 | _o__isctype | ||
| 1061 | _o__isctype_l | ||
| 1062 | _o__isleadbyte_l | ||
| 1063 | _o__ismbbalnum | ||
| 1064 | _o__ismbbalnum_l | ||
| 1065 | _o__ismbbalpha | ||
| 1066 | _o__ismbbalpha_l | ||
| 1067 | _o__ismbbblank | ||
| 1068 | _o__ismbbblank_l | ||
| 1069 | _o__ismbbgraph | ||
| 1070 | _o__ismbbgraph_l | ||
| 1071 | _o__ismbbkalnum | ||
| 1072 | _o__ismbbkalnum_l | ||
| 1073 | _o__ismbbkana | ||
| 1074 | _o__ismbbkana_l | ||
| 1075 | _o__ismbbkprint | ||
| 1076 | _o__ismbbkprint_l | ||
| 1077 | _o__ismbbkpunct | ||
| 1078 | _o__ismbbkpunct_l | ||
| 1079 | _o__ismbblead | ||
| 1080 | _o__ismbblead_l | ||
| 1081 | _o__ismbbprint | ||
| 1082 | _o__ismbbprint_l | ||
| 1083 | _o__ismbbpunct | ||
| 1084 | _o__ismbbpunct_l | ||
| 1085 | _o__ismbbtrail | ||
| 1086 | _o__ismbbtrail_l | ||
| 1087 | _o__ismbcalnum | ||
| 1088 | _o__ismbcalnum_l | ||
| 1089 | _o__ismbcalpha | ||
| 1090 | _o__ismbcalpha_l | ||
| 1091 | _o__ismbcblank | ||
| 1092 | _o__ismbcblank_l | ||
| 1093 | _o__ismbcdigit | ||
| 1094 | _o__ismbcdigit_l | ||
| 1095 | _o__ismbcgraph | ||
| 1096 | _o__ismbcgraph_l | ||
| 1097 | _o__ismbchira | ||
| 1098 | _o__ismbchira_l | ||
| 1099 | _o__ismbckata | ||
| 1100 | _o__ismbckata_l | ||
| 1101 | _o__ismbcl0 | ||
| 1102 | _o__ismbcl0_l | ||
| 1103 | _o__ismbcl1 | ||
| 1104 | _o__ismbcl1_l | ||
| 1105 | _o__ismbcl2 | ||
| 1106 | _o__ismbcl2_l | ||
| 1107 | _o__ismbclegal | ||
| 1108 | _o__ismbclegal_l | ||
| 1109 | _o__ismbclower | ||
| 1110 | _o__ismbclower_l | ||
| 1111 | _o__ismbcprint | ||
| 1112 | _o__ismbcprint_l | ||
| 1113 | _o__ismbcpunct | ||
| 1114 | _o__ismbcpunct_l | ||
| 1115 | _o__ismbcspace | ||
| 1116 | _o__ismbcspace_l | ||
| 1117 | _o__ismbcsymbol | ||
| 1118 | _o__ismbcsymbol_l | ||
| 1119 | _o__ismbcupper | ||
| 1120 | _o__ismbcupper_l | ||
| 1121 | _o__ismbslead | ||
| 1122 | _o__ismbslead_l | ||
| 1123 | _o__ismbstrail | ||
| 1124 | _o__ismbstrail_l | ||
| 1125 | _o__iswctype_l | ||
| 1126 | _o__itoa | ||
| 1127 | _o__itoa_s | ||
| 1128 | _o__itow | ||
| 1129 | _o__itow_s | ||
| 1130 | _o__j0 | ||
| 1131 | _o__j1 | ||
| 1132 | _o__jn | ||
| 1133 | _o__kbhit | ||
| 1134 | _o__ld_int | ||
| 1135 | _o__ldclass | ||
| 1136 | _o__ldexp | ||
| 1137 | _o__ldlog | ||
| 1138 | _o__ldpcomp | ||
| 1139 | _o__ldpoly | ||
| 1140 | _o__ldscale | ||
| 1141 | _o__ldsign | ||
| 1142 | _o__ldsin | ||
| 1143 | _o__ldtest | ||
| 1144 | _o__ldunscale | ||
| 1145 | _o__lfind | ||
| 1146 | _o__lfind_s | ||
| 1147 | _o__libm_sse2_acos_precise | ||
| 1148 | _o__libm_sse2_asin_precise | ||
| 1149 | _o__libm_sse2_atan_precise | ||
| 1150 | _o__libm_sse2_cos_precise | ||
| 1151 | _o__libm_sse2_exp_precise | ||
| 1152 | _o__libm_sse2_log10_precise | ||
| 1153 | _o__libm_sse2_log_precise | ||
| 1154 | _o__libm_sse2_pow_precise | ||
| 1155 | _o__libm_sse2_sin_precise | ||
| 1156 | _o__libm_sse2_sqrt_precise | ||
| 1157 | _o__libm_sse2_tan_precise | ||
| 1158 | _o__loaddll | ||
| 1159 | _o__localtime32 | ||
| 1160 | _o__localtime32_s | ||
| 1161 | _o__localtime64 | ||
| 1162 | _o__localtime64_s | ||
| 1163 | _o__lock_file | ||
| 1164 | _o__locking | ||
| 1165 | _o__logb | ||
| 1166 | _o__logbf | ||
| 1167 | _o__lsearch | ||
| 1168 | _o__lsearch_s | ||
| 1169 | _o__lseek | ||
| 1170 | _o__lseeki64 | ||
| 1171 | _o__ltoa | ||
| 1172 | _o__ltoa_s | ||
| 1173 | _o__ltow | ||
| 1174 | _o__ltow_s | ||
| 1175 | _o__makepath | ||
| 1176 | _o__makepath_s | ||
| 1177 | _o__malloc_base | ||
| 1178 | _o__mbbtombc | ||
| 1179 | _o__mbbtombc_l | ||
| 1180 | _o__mbbtype | ||
| 1181 | _o__mbbtype_l | ||
| 1182 | _o__mbccpy | ||
| 1183 | _o__mbccpy_l | ||
| 1184 | _o__mbccpy_s | ||
| 1185 | _o__mbccpy_s_l | ||
| 1186 | _o__mbcjistojms | ||
| 1187 | _o__mbcjistojms_l | ||
| 1188 | _o__mbcjmstojis | ||
| 1189 | _o__mbcjmstojis_l | ||
| 1190 | _o__mbclen | ||
| 1191 | _o__mbclen_l | ||
| 1192 | _o__mbctohira | ||
| 1193 | _o__mbctohira_l | ||
| 1194 | _o__mbctokata | ||
| 1195 | _o__mbctokata_l | ||
| 1196 | _o__mbctolower | ||
| 1197 | _o__mbctolower_l | ||
| 1198 | _o__mbctombb | ||
| 1199 | _o__mbctombb_l | ||
| 1200 | _o__mbctoupper | ||
| 1201 | _o__mbctoupper_l | ||
| 1202 | _o__mblen_l | ||
| 1203 | _o__mbsbtype | ||
| 1204 | _o__mbsbtype_l | ||
| 1205 | _o__mbscat_s | ||
| 1206 | _o__mbscat_s_l | ||
| 1207 | _o__mbschr | ||
| 1208 | _o__mbschr_l | ||
| 1209 | _o__mbscmp | ||
| 1210 | _o__mbscmp_l | ||
| 1211 | _o__mbscoll | ||
| 1212 | _o__mbscoll_l | ||
| 1213 | _o__mbscpy_s | ||
| 1214 | _o__mbscpy_s_l | ||
| 1215 | _o__mbscspn | ||
| 1216 | _o__mbscspn_l | ||
| 1217 | _o__mbsdec | ||
| 1218 | _o__mbsdec_l | ||
| 1219 | _o__mbsicmp | ||
| 1220 | _o__mbsicmp_l | ||
| 1221 | _o__mbsicoll | ||
| 1222 | _o__mbsicoll_l | ||
| 1223 | _o__mbsinc | ||
| 1224 | _o__mbsinc_l | ||
| 1225 | _o__mbslen | ||
| 1226 | _o__mbslen_l | ||
| 1227 | _o__mbslwr | ||
| 1228 | _o__mbslwr_l | ||
| 1229 | _o__mbslwr_s | ||
| 1230 | _o__mbslwr_s_l | ||
| 1231 | _o__mbsnbcat | ||
| 1232 | _o__mbsnbcat_l | ||
| 1233 | _o__mbsnbcat_s | ||
| 1234 | _o__mbsnbcat_s_l | ||
| 1235 | _o__mbsnbcmp | ||
| 1236 | _o__mbsnbcmp_l | ||
| 1237 | _o__mbsnbcnt | ||
| 1238 | _o__mbsnbcnt_l | ||
| 1239 | _o__mbsnbcoll | ||
| 1240 | _o__mbsnbcoll_l | ||
| 1241 | _o__mbsnbcpy | ||
| 1242 | _o__mbsnbcpy_l | ||
| 1243 | _o__mbsnbcpy_s | ||
| 1244 | _o__mbsnbcpy_s_l | ||
| 1245 | _o__mbsnbicmp | ||
| 1246 | _o__mbsnbicmp_l | ||
| 1247 | _o__mbsnbicoll | ||
| 1248 | _o__mbsnbicoll_l | ||
| 1249 | _o__mbsnbset | ||
| 1250 | _o__mbsnbset_l | ||
| 1251 | _o__mbsnbset_s | ||
| 1252 | _o__mbsnbset_s_l | ||
| 1253 | _o__mbsncat | ||
| 1254 | _o__mbsncat_l | ||
| 1255 | _o__mbsncat_s | ||
| 1256 | _o__mbsncat_s_l | ||
| 1257 | _o__mbsnccnt | ||
| 1258 | _o__mbsnccnt_l | ||
| 1259 | _o__mbsncmp | ||
| 1260 | _o__mbsncmp_l | ||
| 1261 | _o__mbsncoll | ||
| 1262 | _o__mbsncoll_l | ||
| 1263 | _o__mbsncpy | ||
| 1264 | _o__mbsncpy_l | ||
| 1265 | _o__mbsncpy_s | ||
| 1266 | _o__mbsncpy_s_l | ||
| 1267 | _o__mbsnextc | ||
| 1268 | _o__mbsnextc_l | ||
| 1269 | _o__mbsnicmp | ||
| 1270 | _o__mbsnicmp_l | ||
| 1271 | _o__mbsnicoll | ||
| 1272 | _o__mbsnicoll_l | ||
| 1273 | _o__mbsninc | ||
| 1274 | _o__mbsninc_l | ||
| 1275 | _o__mbsnlen | ||
| 1276 | _o__mbsnlen_l | ||
| 1277 | _o__mbsnset | ||
| 1278 | _o__mbsnset_l | ||
| 1279 | _o__mbsnset_s | ||
| 1280 | _o__mbsnset_s_l | ||
| 1281 | _o__mbspbrk | ||
| 1282 | _o__mbspbrk_l | ||
| 1283 | _o__mbsrchr | ||
| 1284 | _o__mbsrchr_l | ||
| 1285 | _o__mbsrev | ||
| 1286 | _o__mbsrev_l | ||
| 1287 | _o__mbsset | ||
| 1288 | _o__mbsset_l | ||
| 1289 | _o__mbsset_s | ||
| 1290 | _o__mbsset_s_l | ||
| 1291 | _o__mbsspn | ||
| 1292 | _o__mbsspn_l | ||
| 1293 | _o__mbsspnp | ||
| 1294 | _o__mbsspnp_l | ||
| 1295 | _o__mbsstr | ||
| 1296 | _o__mbsstr_l | ||
| 1297 | _o__mbstok | ||
| 1298 | _o__mbstok_l | ||
| 1299 | _o__mbstok_s | ||
| 1300 | _o__mbstok_s_l | ||
| 1301 | _o__mbstowcs_l | ||
| 1302 | _o__mbstowcs_s_l | ||
| 1303 | _o__mbstrlen | ||
| 1304 | _o__mbstrlen_l | ||
| 1305 | _o__mbstrnlen | ||
| 1306 | _o__mbstrnlen_l | ||
| 1307 | _o__mbsupr | ||
| 1308 | _o__mbsupr_l | ||
| 1309 | _o__mbsupr_s | ||
| 1310 | _o__mbsupr_s_l | ||
| 1311 | _o__mbtowc_l | ||
| 1312 | _o__memicmp | ||
| 1313 | _o__memicmp_l | ||
| 1314 | _o__mkdir | ||
| 1315 | _o__mkgmtime32 | ||
| 1316 | _o__mkgmtime64 | ||
| 1317 | _o__mktemp | ||
| 1318 | _o__mktemp_s | ||
| 1319 | _o__mktime32 | ||
| 1320 | _o__mktime64 | ||
| 1321 | _o__msize | ||
| 1322 | _o__nextafter | ||
| 1323 | _o__nextafterf | ||
| 1324 | _o__open_osfhandle | ||
| 1325 | _o__pclose | ||
| 1326 | _o__pipe | ||
| 1327 | _o__popen | ||
| 1328 | _o__purecall | ||
| 1329 | _o__putc_nolock | ||
| 1330 | _o__putch | ||
| 1331 | _o__putch_nolock | ||
| 1332 | _o__putenv | ||
| 1333 | _o__putenv_s | ||
| 1334 | _o__putw | ||
| 1335 | _o__putwc_nolock | ||
| 1336 | _o__putwch | ||
| 1337 | _o__putwch_nolock | ||
| 1338 | _o__putws | ||
| 1339 | _o__read | ||
| 1340 | _o__realloc_base | ||
| 1341 | _o__recalloc | ||
| 1342 | _o__register_onexit_function | ||
| 1343 | _o__resetstkoflw | ||
| 1344 | _o__rmdir | ||
| 1345 | _o__rmtmp | ||
| 1346 | _o__scalb | ||
| 1347 | _o__scalbf | ||
| 1348 | _o__searchenv | ||
| 1349 | _o__searchenv_s | ||
| 1350 | _o__seh_filter_dll | ||
| 1351 | _o__seh_filter_exe | ||
| 1352 | _o__set_abort_behavior | ||
| 1353 | _o__set_app_type | ||
| 1354 | _o__set_doserrno | ||
| 1355 | _o__set_errno | ||
| 1356 | _o__set_fmode | ||
| 1357 | _o__set_invalid_parameter_handler | ||
| 1358 | _o__set_new_handler | ||
| 1359 | _o__set_new_mode | ||
| 1360 | _o__set_thread_local_invalid_parameter_handler | ||
| 1361 | _o__seterrormode | ||
| 1362 | _o__setmbcp | ||
| 1363 | _o__setmode | ||
| 1364 | _o__setsystime | ||
| 1365 | _o__sleep | ||
| 1366 | _o__sopen | ||
| 1367 | _o__sopen_dispatch | ||
| 1368 | _o__sopen_s | ||
| 1369 | _o__spawnv | ||
| 1370 | _o__spawnve | ||
| 1371 | _o__spawnvp | ||
| 1372 | _o__spawnvpe | ||
| 1373 | _o__splitpath | ||
| 1374 | _o__splitpath_s | ||
| 1375 | _o__stat32 | ||
| 1376 | _o__stat32i64 | ||
| 1377 | _o__stat64 | ||
| 1378 | _o__stat64i32 | ||
| 1379 | _o__strcoll_l | ||
| 1380 | _o__strdate | ||
| 1381 | _o__strdate_s | ||
| 1382 | _o__strdup | ||
| 1383 | _o__strerror | ||
| 1384 | _o__strerror_s | ||
| 1385 | _o__strftime_l | ||
| 1386 | _o__stricmp | ||
| 1387 | _o__stricmp_l | ||
| 1388 | _o__stricoll | ||
| 1389 | _o__stricoll_l | ||
| 1390 | _o__strlwr | ||
| 1391 | _o__strlwr_l | ||
| 1392 | _o__strlwr_s | ||
| 1393 | _o__strlwr_s_l | ||
| 1394 | _o__strncoll | ||
| 1395 | _o__strncoll_l | ||
| 1396 | _o__strnicmp | ||
| 1397 | _o__strnicmp_l | ||
| 1398 | _o__strnicoll | ||
| 1399 | _o__strnicoll_l | ||
| 1400 | _o__strnset_s | ||
| 1401 | _o__strset_s | ||
| 1402 | _o__strtime | ||
| 1403 | _o__strtime_s | ||
| 1404 | _o__strtod_l | ||
| 1405 | _o__strtof_l | ||
| 1406 | _o__strtoi64 | ||
| 1407 | _o__strtoi64_l | ||
| 1408 | _o__strtol_l | ||
| 1409 | _o__strtold_l | ||
| 1410 | _o__strtoll_l | ||
| 1411 | _o__strtoui64 | ||
| 1412 | _o__strtoui64_l | ||
| 1413 | _o__strtoul_l | ||
| 1414 | _o__strtoull_l | ||
| 1415 | _o__strupr | ||
| 1416 | _o__strupr_l | ||
| 1417 | _o__strupr_s | ||
| 1418 | _o__strupr_s_l | ||
| 1419 | _o__strxfrm_l | ||
| 1420 | _o__swab | ||
| 1421 | _o__tell | ||
| 1422 | _o__telli64 | ||
| 1423 | _o__timespec32_get | ||
| 1424 | _o__timespec64_get | ||
| 1425 | _o__tolower | ||
| 1426 | _o__tolower_l | ||
| 1427 | _o__toupper | ||
| 1428 | _o__toupper_l | ||
| 1429 | _o__towlower_l | ||
| 1430 | _o__towupper_l | ||
| 1431 | _o__tzset | ||
| 1432 | _o__ui64toa | ||
| 1433 | _o__ui64toa_s | ||
| 1434 | _o__ui64tow | ||
| 1435 | _o__ui64tow_s | ||
| 1436 | _o__ultoa | ||
| 1437 | _o__ultoa_s | ||
| 1438 | _o__ultow | ||
| 1439 | _o__ultow_s | ||
| 1440 | _o__umask | ||
| 1441 | _o__umask_s | ||
| 1442 | _o__ungetc_nolock | ||
| 1443 | _o__ungetch | ||
| 1444 | _o__ungetch_nolock | ||
| 1445 | _o__ungetwc_nolock | ||
| 1446 | _o__ungetwch | ||
| 1447 | _o__ungetwch_nolock | ||
| 1448 | _o__unlink | ||
| 1449 | _o__unloaddll | ||
| 1450 | _o__unlock_file | ||
| 1451 | _o__utime32 | ||
| 1452 | _o__utime64 | ||
| 1453 | _o__waccess | ||
| 1454 | _o__waccess_s | ||
| 1455 | _o__wasctime | ||
| 1456 | _o__wasctime_s | ||
| 1457 | _o__wchdir | ||
| 1458 | _o__wchmod | ||
| 1459 | _o__wcreat | ||
| 1460 | _o__wcreate_locale | ||
| 1461 | _o__wcscoll_l | ||
| 1462 | _o__wcsdup | ||
| 1463 | _o__wcserror | ||
| 1464 | _o__wcserror_s | ||
| 1465 | _o__wcsftime_l | ||
| 1466 | _o__wcsicmp | ||
| 1467 | _o__wcsicmp_l | ||
| 1468 | _o__wcsicoll | ||
| 1469 | _o__wcsicoll_l | ||
| 1470 | _o__wcslwr | ||
| 1471 | _o__wcslwr_l | ||
| 1472 | _o__wcslwr_s | ||
| 1473 | _o__wcslwr_s_l | ||
| 1474 | _o__wcsncoll | ||
| 1475 | _o__wcsncoll_l | ||
| 1476 | _o__wcsnicmp | ||
| 1477 | _o__wcsnicmp_l | ||
| 1478 | _o__wcsnicoll | ||
| 1479 | _o__wcsnicoll_l | ||
| 1480 | _o__wcsnset | ||
| 1481 | _o__wcsnset_s | ||
| 1482 | _o__wcsset | ||
| 1483 | _o__wcsset_s | ||
| 1484 | _o__wcstod_l | ||
| 1485 | _o__wcstof_l | ||
| 1486 | _o__wcstoi64 | ||
| 1487 | _o__wcstoi64_l | ||
| 1488 | _o__wcstol_l | ||
| 1489 | _o__wcstold_l | ||
| 1490 | _o__wcstoll_l | ||
| 1491 | _o__wcstombs_l | ||
| 1492 | _o__wcstombs_s_l | ||
| 1493 | _o__wcstoui64 | ||
| 1494 | _o__wcstoui64_l | ||
| 1495 | _o__wcstoul_l | ||
| 1496 | _o__wcstoull_l | ||
| 1497 | _o__wcsupr | ||
| 1498 | _o__wcsupr_l | ||
| 1499 | _o__wcsupr_s | ||
| 1500 | _o__wcsupr_s_l | ||
| 1501 | _o__wcsxfrm_l | ||
| 1502 | _o__wctime32 | ||
| 1503 | _o__wctime32_s | ||
| 1504 | _o__wctime64 | ||
| 1505 | _o__wctime64_s | ||
| 1506 | _o__wctomb_l | ||
| 1507 | _o__wctomb_s_l | ||
| 1508 | _o__wdupenv_s | ||
| 1509 | _o__wexecv | ||
| 1510 | _o__wexecve | ||
| 1511 | _o__wexecvp | ||
| 1512 | _o__wexecvpe | ||
| 1513 | _o__wfdopen | ||
| 1514 | _o__wfindfirst32 | ||
| 1515 | _o__wfindfirst32i64 | ||
| 1516 | _o__wfindfirst64 | ||
| 1517 | _o__wfindfirst64i32 | ||
| 1518 | _o__wfindnext32 | ||
| 1519 | _o__wfindnext32i64 | ||
| 1520 | _o__wfindnext64 | ||
| 1521 | _o__wfindnext64i32 | ||
| 1522 | _o__wfopen | ||
| 1523 | _o__wfopen_s | ||
| 1524 | _o__wfreopen | ||
| 1525 | _o__wfreopen_s | ||
| 1526 | _o__wfsopen | ||
| 1527 | _o__wfullpath | ||
| 1528 | _o__wgetcwd | ||
| 1529 | _o__wgetdcwd | ||
| 1530 | _o__wgetenv | ||
| 1531 | _o__wgetenv_s | ||
| 1532 | _o__wmakepath | ||
| 1533 | _o__wmakepath_s | ||
| 1534 | _o__wmkdir | ||
| 1535 | _o__wmktemp | ||
| 1536 | _o__wmktemp_s | ||
| 1537 | _o__wperror | ||
| 1538 | _o__wpopen | ||
| 1539 | _o__wputenv | ||
| 1540 | _o__wputenv_s | ||
| 1541 | _o__wremove | ||
| 1542 | _o__wrename | ||
| 1543 | _o__write | ||
| 1544 | _o__wrmdir | ||
| 1545 | _o__wsearchenv | ||
| 1546 | _o__wsearchenv_s | ||
| 1547 | _o__wsetlocale | ||
| 1548 | _o__wsopen_dispatch | ||
| 1549 | _o__wsopen_s | ||
| 1550 | _o__wspawnv | ||
| 1551 | _o__wspawnve | ||
| 1552 | _o__wspawnvp | ||
| 1553 | _o__wspawnvpe | ||
| 1554 | _o__wsplitpath | ||
| 1555 | _o__wsplitpath_s | ||
| 1556 | _o__wstat32 | ||
| 1557 | _o__wstat32i64 | ||
| 1558 | _o__wstat64 | ||
| 1559 | _o__wstat64i32 | ||
| 1560 | _o__wstrdate | ||
| 1561 | _o__wstrdate_s | ||
| 1562 | _o__wstrtime | ||
| 1563 | _o__wstrtime_s | ||
| 1564 | _o__wsystem | ||
| 1565 | _o__wtmpnam_s | ||
| 1566 | _o__wtof | ||
| 1567 | _o__wtof_l | ||
| 1568 | _o__wtoi | ||
| 1569 | _o__wtoi64 | ||
| 1570 | _o__wtoi64_l | ||
| 1571 | _o__wtoi_l | ||
| 1572 | _o__wtol | ||
| 1573 | _o__wtol_l | ||
| 1574 | _o__wtoll | ||
| 1575 | _o__wtoll_l | ||
| 1576 | _o__wunlink | ||
| 1577 | _o__wutime32 | ||
| 1578 | _o__wutime64 | ||
| 1579 | _o__y0 | ||
| 1580 | _o__y1 | ||
| 1581 | _o__yn | ||
| 1582 | _o_abort | ||
| 1583 | _o_acos | ||
| 1584 | _o_acosf | ||
| 1585 | _o_acosh | ||
| 1586 | _o_acoshf | ||
| 1587 | _o_acoshl | ||
| 1588 | _o_asctime | ||
| 1589 | _o_asctime_s | ||
| 1590 | _o_asin | ||
| 1591 | _o_asinf | ||
| 1592 | _o_asinh | ||
| 1593 | _o_asinhf | ||
| 1594 | _o_asinhl | ||
| 1595 | _o_atan | ||
| 1596 | _o_atan2 | ||
| 1597 | _o_atan2f | ||
| 1598 | _o_atanf | ||
| 1599 | _o_atanh | ||
| 1600 | _o_atanhf | ||
| 1601 | _o_atanhl | ||
| 1602 | _o_atof | ||
| 1603 | _o_atoi | ||
| 1604 | _o_atol | ||
| 1605 | _o_atoll | ||
| 1606 | _o_bsearch | ||
| 1607 | _o_bsearch_s | ||
| 1608 | _o_btowc | ||
| 1609 | _o_calloc | ||
| 1610 | _o_cbrt | ||
| 1611 | _o_cbrtf | ||
| 1612 | _o_ceil | ||
| 1613 | _o_ceilf | ||
| 1614 | _o_clearerr | ||
| 1615 | _o_clearerr_s | ||
| 1616 | _o_cos | ||
| 1617 | _o_cosf | ||
| 1618 | _o_cosh | ||
| 1619 | _o_coshf | ||
| 1620 | _o_erf | ||
| 1621 | _o_erfc | ||
| 1622 | _o_erfcf | ||
| 1623 | _o_erfcl | ||
| 1624 | _o_erff | ||
| 1625 | _o_erfl | ||
| 1626 | _o_exit | ||
| 1627 | _o_exp | ||
| 1628 | _o_exp2 | ||
| 1629 | _o_exp2f | ||
| 1630 | _o_exp2l | ||
| 1631 | _o_expf | ||
| 1632 | _o_fabs | ||
| 1633 | _o_fclose | ||
| 1634 | _o_feof | ||
| 1635 | _o_ferror | ||
| 1636 | _o_fflush | ||
| 1637 | _o_fgetc | ||
| 1638 | _o_fgetpos | ||
| 1639 | _o_fgets | ||
| 1640 | _o_fgetwc | ||
| 1641 | _o_fgetws | ||
| 1642 | _o_floor | ||
| 1643 | _o_floorf | ||
| 1644 | _o_fma | ||
| 1645 | _o_fmaf | ||
| 1646 | _o_fmal | ||
| 1647 | _o_fmod | ||
| 1648 | _o_fmodf | ||
| 1649 | _o_fopen | ||
| 1650 | _o_fopen_s | ||
| 1651 | _o_fputc | ||
| 1652 | _o_fputs | ||
| 1653 | _o_fputwc | ||
| 1654 | _o_fputws | ||
| 1655 | _o_fread | ||
| 1656 | _o_fread_s | ||
| 1657 | _o_free | ||
| 1658 | _o_freopen | ||
| 1659 | _o_freopen_s | ||
| 1660 | _o_frexp | ||
| 1661 | _o_fseek | ||
| 1662 | _o_fsetpos | ||
| 1663 | _o_ftell | ||
| 1664 | _o_fwrite | ||
| 1665 | _o_getc | ||
| 1666 | _o_getchar | ||
| 1667 | _o_getenv | ||
| 1668 | _o_getenv_s | ||
| 1669 | _o_gets | ||
| 1670 | _o_gets_s | ||
| 1671 | _o_getwc | ||
| 1672 | _o_getwchar | ||
| 1673 | _o_hypot | ||
| 1674 | _o_is_wctype | ||
| 1675 | _o_isalnum | ||
| 1676 | _o_isalpha | ||
| 1677 | _o_isblank | ||
| 1678 | _o_iscntrl | ||
| 1679 | _o_isdigit | ||
| 1680 | _o_isgraph | ||
| 1681 | _o_isleadbyte | ||
| 1682 | _o_islower | ||
| 1683 | _o_isprint | ||
| 1684 | _o_ispunct | ||
| 1685 | _o_isspace | ||
| 1686 | _o_isupper | ||
| 1687 | _o_iswalnum | ||
| 1688 | _o_iswalpha | ||
| 1689 | _o_iswascii | ||
| 1690 | _o_iswblank | ||
| 1691 | _o_iswcntrl | ||
| 1692 | _o_iswctype | ||
| 1693 | _o_iswdigit | ||
| 1694 | _o_iswgraph | ||
| 1695 | _o_iswlower | ||
| 1696 | _o_iswprint | ||
| 1697 | _o_iswpunct | ||
| 1698 | _o_iswspace | ||
| 1699 | _o_iswupper | ||
| 1700 | _o_iswxdigit | ||
| 1701 | _o_isxdigit | ||
| 1702 | _o_ldexp | ||
| 1703 | _o_lgamma | ||
| 1704 | _o_lgammaf | ||
| 1705 | _o_lgammal | ||
| 1706 | _o_llrint | ||
| 1707 | _o_llrintf | ||
| 1708 | _o_llrintl | ||
| 1709 | _o_llround | ||
| 1710 | _o_llroundf | ||
| 1711 | _o_llroundl | ||
| 1712 | _o_localeconv | ||
| 1713 | _o_log | ||
| 1714 | _o_log10 | ||
| 1715 | _o_log10f | ||
| 1716 | _o_log1p | ||
| 1717 | _o_log1pf | ||
| 1718 | _o_log1pl | ||
| 1719 | _o_log2 | ||
| 1720 | _o_log2f | ||
| 1721 | _o_log2l | ||
| 1722 | _o_logb | ||
| 1723 | _o_logbf | ||
| 1724 | _o_logbl | ||
| 1725 | _o_logf | ||
| 1726 | _o_lrint | ||
| 1727 | _o_lrintf | ||
| 1728 | _o_lrintl | ||
| 1729 | _o_lround | ||
| 1730 | _o_lroundf | ||
| 1731 | _o_lroundl | ||
| 1732 | _o_malloc | ||
| 1733 | _o_mblen | ||
| 1734 | _o_mbrlen | ||
| 1735 | _o_mbrtoc16 | ||
| 1736 | _o_mbrtoc32 | ||
| 1737 | _o_mbrtowc | ||
| 1738 | _o_mbsrtowcs | ||
| 1739 | _o_mbsrtowcs_s | ||
| 1740 | _o_mbstowcs | ||
| 1741 | _o_mbstowcs_s | ||
| 1742 | _o_mbtowc | ||
| 1743 | _o_memcpy_s | ||
| 1744 | _o_memset | ||
| 1745 | _o_modf | ||
| 1746 | _o_modff | ||
| 1747 | _o_nan | ||
| 1748 | _o_nanf | ||
| 1749 | _o_nanl | ||
| 1750 | _o_nearbyint | ||
| 1751 | _o_nearbyintf | ||
| 1752 | _o_nearbyintl | ||
| 1753 | _o_nextafter | ||
| 1754 | _o_nextafterf | ||
| 1755 | _o_nextafterl | ||
| 1756 | _o_nexttoward | ||
| 1757 | _o_nexttowardf | ||
| 1758 | _o_nexttowardl | ||
| 1759 | _o_pow | ||
| 1760 | _o_powf | ||
| 1761 | _o_putc | ||
| 1762 | _o_putchar | ||
| 1763 | _o_puts | ||
| 1764 | _o_putwc | ||
| 1765 | _o_putwchar | ||
| 1766 | _o_qsort | ||
| 1767 | _o_qsort_s | ||
| 1768 | _o_raise | ||
| 1769 | _o_rand | ||
| 1770 | _o_rand_s | ||
| 1771 | _o_realloc | ||
| 1772 | _o_remainder | ||
| 1773 | _o_remainderf | ||
| 1774 | _o_remainderl | ||
| 1775 | _o_remove | ||
| 1776 | _o_remquo | ||
| 1777 | _o_remquof | ||
| 1778 | _o_remquol | ||
| 1779 | _o_rename | ||
| 1780 | _o_rewind | ||
| 1781 | _o_rint | ||
| 1782 | _o_rintf | ||
| 1783 | _o_rintl | ||
| 1784 | _o_round | ||
| 1785 | _o_roundf | ||
| 1786 | _o_roundl | ||
| 1787 | _o_scalbln | ||
| 1788 | _o_scalblnf | ||
| 1789 | _o_scalblnl | ||
| 1790 | _o_scalbn | ||
| 1791 | _o_scalbnf | ||
| 1792 | _o_scalbnl | ||
| 1793 | _o_set_terminate | ||
| 1794 | _o_setbuf | ||
| 1795 | _o_setlocale | ||
| 1796 | _o_setvbuf | ||
| 1797 | _o_sin | ||
| 1798 | _o_sinf | ||
| 1799 | _o_sinh | ||
| 1800 | _o_sinhf | ||
| 1801 | _o_sqrt | ||
| 1802 | _o_sqrtf | ||
| 1803 | _o_srand | ||
| 1804 | _o_strcat_s | ||
| 1805 | _o_strcoll | ||
| 1806 | _o_strcpy_s | ||
| 1807 | _o_strerror | ||
| 1808 | _o_strerror_s | ||
| 1809 | _o_strftime | ||
| 1810 | _o_strncat_s | ||
| 1811 | _o_strncpy_s | ||
| 1812 | _o_strtod | ||
| 1813 | _o_strtof | ||
| 1814 | _o_strtok | ||
| 1815 | _o_strtok_s | ||
| 1816 | _o_strtol | ||
| 1817 | _o_strtold | ||
| 1818 | _o_strtoll | ||
| 1819 | _o_strtoul | ||
| 1820 | _o_strtoull | ||
| 1821 | _o_system | ||
| 1822 | _o_tan | ||
| 1823 | _o_tanf | ||
| 1824 | _o_tanh | ||
| 1825 | _o_tanhf | ||
| 1826 | _o_terminate | ||
| 1827 | _o_tgamma | ||
| 1828 | _o_tgammaf | ||
| 1829 | _o_tgammal | ||
| 1830 | _o_tmpfile_s | ||
| 1831 | _o_tmpnam_s | ||
| 1832 | _o_tolower | ||
| 1833 | _o_toupper | ||
| 1834 | _o_towlower | ||
| 1835 | _o_towupper | ||
| 1836 | _o_ungetc | ||
| 1837 | _o_ungetwc | ||
| 1838 | _o_wcrtomb | ||
| 1839 | _o_wcrtomb_s | ||
| 1840 | _o_wcscat_s | ||
| 1841 | _o_wcscoll | ||
| 1842 | _o_wcscpy | ||
| 1843 | _o_wcscpy_s | ||
| 1844 | _o_wcsftime | ||
| 1845 | _o_wcsncat_s | ||
| 1846 | _o_wcsncpy_s | ||
| 1847 | _o_wcsrtombs | ||
| 1848 | _o_wcsrtombs_s | ||
| 1849 | _o_wcstod | ||
| 1850 | _o_wcstof | ||
| 1851 | _o_wcstok | ||
| 1852 | _o_wcstok_s | ||
| 1853 | _o_wcstol | ||
| 1854 | _o_wcstold | ||
| 1855 | _o_wcstoll | ||
| 1856 | _o_wcstombs | ||
| 1857 | _o_wcstombs_s | ||
| 1858 | _o_wcstoul | ||
| 1859 | _o_wcstoull | ||
| 1860 | _o_wctob | ||
| 1861 | _o_wctomb | ||
| 1862 | _o_wctomb_s | ||
| 1863 | _o_wmemcpy_s | ||
| 1864 | _o_wmemmove_s | ||
| 1865 | _open | ||
| 1866 | _open_osfhandle | ||
| 1867 | _pclose | ||
| 1868 | _pipe | ||
| 1869 | _popen | ||
| 1870 | _purecall | ||
| 1871 | _putc_nolock | ||
| 1872 | _putch | ||
| 1873 | _putch_nolock | ||
| 1874 | _putenv | ||
| 1875 | _putenv_s | ||
| 1876 | _putw | ||
| 1877 | _putwc_nolock | ||
| 1878 | _putwch | ||
| 1879 | _putwch_nolock | ||
| 1880 | _putws | ||
| 1881 | _query_app_type | ||
| 1882 | _query_new_handler | ||
| 1883 | _query_new_mode | ||
| 1884 | _read | ||
| 1885 | _realloc_base | ||
| 1886 | _recalloc | ||
| 1887 | _register_onexit_function | ||
| 1888 | _register_thread_local_exe_atexit_callback | ||
| 1889 | _resetstkoflw | ||
| 1890 | _rmdir | ||
| 1891 | _rmtmp | ||
| 1892 | _rotl | ||
| 1893 | _rotl64 | ||
| 1894 | _rotr | ||
| 1895 | _rotr64 | ||
| 1896 | _scalb | ||
| 1897 | F_X64(_scalbf) | ||
| 1898 | _searchenv | ||
| 1899 | _searchenv_s | ||
| 1900 | _seh_filter_dll | ||
| 1901 | _seh_filter_exe | ||
| 1902 | F64(_set_FMA3_enable) | ||
| 1903 | F_I386(_seh_longjmp_unwind4@4) | ||
| 1904 | F_I386(_seh_longjmp_unwind@4) | ||
| 1905 | F_I386(_set_SSE2_enable) | ||
| 1906 | _set_abort_behavior | ||
| 1907 | _set_app_type | ||
| 1908 | __set_app_type == _set_app_type | ||
| 1909 | _set_controlfp | ||
| 1910 | _set_doserrno | ||
| 1911 | _set_errno | ||
| 1912 | _set_error_mode | ||
| 1913 | _set_fmode | ||
| 1914 | _set_invalid_parameter_handler | ||
| 1915 | _set_new_handler | ||
| 1916 | _set_new_mode | ||
| 1917 | _set_printf_count_output | ||
| 1918 | _set_purecall_handler | ||
| 1919 | _set_se_translator | ||
| 1920 | _set_thread_local_invalid_parameter_handler | ||
| 1921 | _seterrormode | ||
| 1922 | F_I386(_setjmp3) | ||
| 1923 | _setmaxstdio | ||
| 1924 | _setmbcp | ||
| 1925 | _setmode | ||
| 1926 | _setsystime | ||
| 1927 | _sleep | ||
| 1928 | _sopen | ||
| 1929 | _sopen_dispatch | ||
| 1930 | _sopen_s | ||
| 1931 | _spawnl | ||
| 1932 | _spawnle | ||
| 1933 | _spawnlp | ||
| 1934 | _spawnlpe | ||
| 1935 | _spawnv | ||
| 1936 | _spawnve | ||
| 1937 | _spawnvp | ||
| 1938 | _spawnvpe | ||
| 1939 | _splitpath | ||
| 1940 | _splitpath_s | ||
| 1941 | _stat32 | ||
| 1942 | _stat32i64 | ||
| 1943 | _stat64 | ||
| 1944 | _stat64i32 | ||
| 1945 | _statusfp | ||
| 1946 | F_I386(_statusfp2) | ||
| 1947 | _strcmpi == _stricmp | ||
| 1948 | _strcoll_l | ||
| 1949 | _strdate | ||
| 1950 | _strdate_s | ||
| 1951 | _strdup | ||
| 1952 | _strerror | ||
| 1953 | _strerror_s | ||
| 1954 | _strftime_l | ||
| 1955 | _stricmp | ||
| 1956 | _stricmp_l | ||
| 1957 | _stricoll | ||
| 1958 | _stricoll_l | ||
| 1959 | _strlwr | ||
| 1960 | _strlwr_l | ||
| 1961 | _strlwr_s | ||
| 1962 | _strlwr_s_l | ||
| 1963 | _strncoll | ||
| 1964 | _strncoll_l | ||
| 1965 | _strnicmp | ||
| 1966 | _strnicmp_l | ||
| 1967 | _strnicoll | ||
| 1968 | _strnicoll_l | ||
| 1969 | _strnset | ||
| 1970 | _strnset_s | ||
| 1971 | _strrev | ||
| 1972 | _strset | ||
| 1973 | _strset_s | ||
| 1974 | _strtime | ||
| 1975 | _strtime_s | ||
| 1976 | _strtod_l | ||
| 1977 | _strtof_l | ||
| 1978 | _strtoi64 | ||
| 1979 | _strtoi64_l | ||
| 1980 | _strtoimax_l | ||
| 1981 | _strtol_l | ||
| 1982 | _strtold_l | ||
| 1983 | _strtoll_l | ||
| 1984 | _strtoui64 | ||
| 1985 | _strtoui64_l | ||
| 1986 | _strtoul_l | ||
| 1987 | _strtoull_l | ||
| 1988 | _strtoumax_l | ||
| 1989 | _strupr | ||
| 1990 | _strupr_l | ||
| 1991 | _strupr_s | ||
| 1992 | _strupr_s_l | ||
| 1993 | _strxfrm_l | ||
| 1994 | _swab | ||
| 1995 | _tell | ||
| 1996 | _telli64 | ||
| 1997 | _tempnam | ||
| 1998 | _time32 | ||
| 1999 | _time64 | ||
| 2000 | _timespec32_get | ||
| 2001 | _timespec64_get | ||
| 2002 | _tolower | ||
| 2003 | _tolower_l | ||
| 2004 | _toupper | ||
| 2005 | _toupper_l | ||
| 2006 | _towlower_l | ||
| 2007 | _towupper_l | ||
| 2008 | ; This is wrapped in the compat code. | ||
| 2009 | _tzset DATA | ||
| 2010 | _ui64toa | ||
| 2011 | _ui64toa_s | ||
| 2012 | _ui64tow | ||
| 2013 | _ui64tow_s | ||
| 2014 | _ultoa | ||
| 2015 | _ultoa_s | ||
| 2016 | _ultow | ||
| 2017 | _ultow_s | ||
| 2018 | _umask | ||
| 2019 | _umask_s | ||
| 2020 | _ungetc_nolock | ||
| 2021 | _ungetch | ||
| 2022 | _ungetch_nolock | ||
| 2023 | _ungetwc_nolock | ||
| 2024 | _ungetwch | ||
| 2025 | _ungetwch_nolock | ||
| 2026 | _unlink | ||
| 2027 | _unloaddll | ||
| 2028 | _unlock_file | ||
| 2029 | _unlock_locales | ||
| 2030 | _utime == _utime64 | ||
| 2031 | _utime32 | ||
| 2032 | _utime64 | ||
| 2033 | _waccess | ||
| 2034 | _waccess_s | ||
| 2035 | _wasctime | ||
| 2036 | _wasctime_s | ||
| 2037 | _wassert | ||
| 2038 | _wchdir | ||
| 2039 | _wchmod | ||
| 2040 | _wcreat | ||
| 2041 | _wcreate_locale | ||
| 2042 | _wcscoll_l | ||
| 2043 | _wcsdup | ||
| 2044 | _wcserror | ||
| 2045 | _wcserror_s | ||
| 2046 | _wcsftime_l | ||
| 2047 | _wcsicmp | ||
| 2048 | _wcsicmp_l | ||
| 2049 | _wcsicoll | ||
| 2050 | _wcsicoll_l | ||
| 2051 | _wcslwr | ||
| 2052 | _wcslwr_l | ||
| 2053 | _wcslwr_s | ||
| 2054 | _wcslwr_s_l | ||
| 2055 | _wcsncoll | ||
| 2056 | _wcsncoll_l | ||
| 2057 | _wcsnicmp | ||
| 2058 | _wcsnicmp_l | ||
| 2059 | _wcsnicoll | ||
| 2060 | _wcsnicoll_l | ||
| 2061 | _wcsnset | ||
| 2062 | _wcsnset_s | ||
| 2063 | _wcsrev | ||
| 2064 | _wcsset | ||
| 2065 | _wcsset_s | ||
| 2066 | _wcstod_l | ||
| 2067 | _wcstof_l | ||
| 2068 | _wcstoi64 | ||
| 2069 | _wcstoi64_l | ||
| 2070 | _wcstoimax_l | ||
| 2071 | _wcstol_l | ||
| 2072 | _wcstold_l | ||
| 2073 | _wcstoll_l | ||
| 2074 | _wcstombs_l | ||
| 2075 | _wcstombs_s_l | ||
| 2076 | _wcstoui64 | ||
| 2077 | _wcstoui64_l | ||
| 2078 | _wcstoul_l | ||
| 2079 | _wcstoull_l | ||
| 2080 | _wcstoumax_l | ||
| 2081 | _wcsupr | ||
| 2082 | _wcsupr_l | ||
| 2083 | _wcsupr_s | ||
| 2084 | _wcsupr_s_l | ||
| 2085 | _wcsxfrm_l | ||
| 2086 | _wctime32 | ||
| 2087 | _wctime32_s | ||
| 2088 | _wctime64 | ||
| 2089 | _wctime64_s | ||
| 2090 | _wctomb_l | ||
| 2091 | _wctomb_s_l | ||
| 2092 | _wctype | ||
| 2093 | _wdupenv_s | ||
| 2094 | _wexecl | ||
| 2095 | _wexecle | ||
| 2096 | _wexeclp | ||
| 2097 | _wexeclpe | ||
| 2098 | _wexecv | ||
| 2099 | _wexecve | ||
| 2100 | _wexecvp | ||
| 2101 | _wexecvpe | ||
| 2102 | _wfdopen | ||
| 2103 | _wfindfirst32 | ||
| 2104 | _wfindfirst32i64 | ||
| 2105 | _wfindfirst64 | ||
| 2106 | _wfindfirst64i32 | ||
| 2107 | _wfindnext32 | ||
| 2108 | _wfindnext32i64 | ||
| 2109 | _wfindnext64 | ||
| 2110 | _wfindnext64i32 | ||
| 2111 | _wfopen | ||
| 2112 | _wfopen_s | ||
| 2113 | _wfreopen | ||
| 2114 | _wfreopen_s | ||
| 2115 | _wfsopen | ||
| 2116 | _wfullpath | ||
| 2117 | _wgetcwd | ||
| 2118 | _wgetdcwd | ||
| 2119 | _wgetenv | ||
| 2120 | _wgetenv_s | ||
| 2121 | _wmakepath | ||
| 2122 | _wmakepath_s | ||
| 2123 | _wmkdir | ||
| 2124 | _wmktemp | ||
| 2125 | _wmktemp_s | ||
| 2126 | _wopen | ||
| 2127 | _wperror | ||
| 2128 | _wpopen | ||
| 2129 | _wputenv | ||
| 2130 | _wputenv_s | ||
| 2131 | _wremove | ||
| 2132 | _wrename | ||
| 2133 | _write | ||
| 2134 | _wrmdir | ||
| 2135 | _wsearchenv | ||
| 2136 | _wsearchenv_s | ||
| 2137 | _wsetlocale | ||
| 2138 | _wsopen | ||
| 2139 | _wsopen_dispatch | ||
| 2140 | _wsopen_s | ||
| 2141 | _wspawnl | ||
| 2142 | _wspawnle | ||
| 2143 | _wspawnlp | ||
| 2144 | _wspawnlpe | ||
| 2145 | _wspawnv | ||
| 2146 | _wspawnve | ||
| 2147 | _wspawnvp | ||
| 2148 | _wspawnvpe | ||
| 2149 | _wsplitpath | ||
| 2150 | _wsplitpath_s | ||
| 2151 | _wstat32 | ||
| 2152 | _wstat32i64 | ||
| 2153 | _wstat64 | ||
| 2154 | _wstat64i32 | ||
| 2155 | _wstrdate | ||
| 2156 | _wstrdate_s | ||
| 2157 | _wstrtime | ||
| 2158 | _wstrtime_s | ||
| 2159 | _wsystem | ||
| 2160 | _wtempnam | ||
| 2161 | _wtmpnam | ||
| 2162 | _wtmpnam_s | ||
| 2163 | _wtof | ||
| 2164 | _wtof_l | ||
| 2165 | _wtoi | ||
| 2166 | _wtoi64 | ||
| 2167 | _wtoi64_l | ||
| 2168 | _wtoi_l | ||
| 2169 | _wtol | ||
| 2170 | _wtol_l | ||
| 2171 | _wtoll | ||
| 2172 | _wtoll_l | ||
| 2173 | _wunlink | ||
| 2174 | _wutime == _wutime64 | ||
| 2175 | _wutime32 | ||
| 2176 | _wutime64 | ||
| 2177 | _y0 | ||
| 2178 | _y1 | ||
| 2179 | _yn | ||
| 2180 | abort | ||
| 2181 | abs | ||
| 2182 | acos | ||
| 2183 | F_NON_I386(acosf) | ||
| 2184 | F_ARM_ANY(acosl == acos) | ||
| 2185 | acosh | ||
| 2186 | acoshf | ||
| 2187 | acoshl F_X86_ANY(DATA) | ||
| 2188 | asctime | ||
| 2189 | asctime_s | ||
| 2190 | asin | ||
| 2191 | F_NON_I386(asinf) | ||
| 2192 | F_ARM_ANY(asinl == asin) | ||
| 2193 | asinh | ||
| 2194 | asinhf | ||
| 2195 | asinhl F_X86_ANY(DATA) | ||
| 2196 | atan | ||
| 2197 | atan2 | ||
| 2198 | F_NON_I386(atan2f) | ||
| 2199 | F_ARM_ANY(atan2l == atan2) | ||
| 2200 | F_NON_I386(atanf) | ||
| 2201 | F_ARM_ANY(atanl == atan) | ||
| 2202 | atanh | ||
| 2203 | atanhf | ||
| 2204 | atanhl F_X86_ANY(DATA) | ||
| 2205 | atof | ||
| 2206 | atoi | ||
| 2207 | atol | ||
| 2208 | atoll | ||
| 2209 | bsearch | ||
| 2210 | bsearch_s | ||
| 2211 | btowc | ||
| 2212 | c16rtomb | ||
| 2213 | c32rtomb | ||
| 2214 | cabs | ||
| 2215 | cabsf | ||
| 2216 | cabsl | ||
| 2217 | cacos | ||
| 2218 | cacosf | ||
| 2219 | cacosh | ||
| 2220 | cacoshf | ||
| 2221 | cacoshl | ||
| 2222 | cacosl | ||
| 2223 | calloc | ||
| 2224 | carg | ||
| 2225 | cargf | ||
| 2226 | cargl | ||
| 2227 | casin | ||
| 2228 | casinf | ||
| 2229 | casinh | ||
| 2230 | casinhf | ||
| 2231 | casinhl | ||
| 2232 | casinl | ||
| 2233 | catan | ||
| 2234 | catanf | ||
| 2235 | catanh | ||
| 2236 | catanhf | ||
| 2237 | catanhl | ||
| 2238 | catanl | ||
| 2239 | cbrt | ||
| 2240 | cbrtf | ||
| 2241 | cbrtl F_X86_ANY(DATA) | ||
| 2242 | ccos | ||
| 2243 | ccosf | ||
| 2244 | ccosh | ||
| 2245 | ccoshf | ||
| 2246 | ccoshl | ||
| 2247 | ccosl | ||
| 2248 | ceil | ||
| 2249 | F_NON_I386(ceilf) | ||
| 2250 | F_ARM_ANY(ceill == ceil) | ||
| 2251 | cexp | ||
| 2252 | cexpf | ||
| 2253 | cexpl | ||
| 2254 | cimag | ||
| 2255 | cimagf | ||
| 2256 | cimagl | ||
| 2257 | clearerr | ||
| 2258 | clearerr_s | ||
| 2259 | clock | ||
| 2260 | clog | ||
| 2261 | clog10 | ||
| 2262 | clog10f | ||
| 2263 | clog10l | ||
| 2264 | clogf | ||
| 2265 | clogl | ||
| 2266 | conj | ||
| 2267 | conjf | ||
| 2268 | conjl | ||
| 2269 | copysign | ||
| 2270 | copysignf | ||
| 2271 | copysignl F_X86_ANY(DATA) | ||
| 2272 | cos | ||
| 2273 | F_NON_I386(cosf) | ||
| 2274 | F_ARM_ANY(cosl == cos) | ||
| 2275 | cosh | ||
| 2276 | F_NON_I386(coshf) | ||
| 2277 | cpow | ||
| 2278 | cpowf | ||
| 2279 | cpowl | ||
| 2280 | cproj | ||
| 2281 | cprojf | ||
| 2282 | cprojl | ||
| 2283 | creal | ||
| 2284 | crealf | ||
| 2285 | creall | ||
| 2286 | csin | ||
| 2287 | csinf | ||
| 2288 | csinh | ||
| 2289 | csinhf | ||
| 2290 | csinhl | ||
| 2291 | csinl | ||
| 2292 | csqrt | ||
| 2293 | csqrtf | ||
| 2294 | csqrtl | ||
| 2295 | ctan | ||
| 2296 | ctanf | ||
| 2297 | ctanh | ||
| 2298 | ctanhf | ||
| 2299 | ctanhl | ||
| 2300 | ctanl | ||
| 2301 | div | ||
| 2302 | erf | ||
| 2303 | erfc | ||
| 2304 | erfcf | ||
| 2305 | erfcl F_X86_ANY(DATA) | ||
| 2306 | erff | ||
| 2307 | erfl F_X86_ANY(DATA) | ||
| 2308 | exit | ||
| 2309 | exp | ||
| 2310 | exp2 | ||
| 2311 | exp2f | ||
| 2312 | exp2l F_X86_ANY(DATA) | ||
| 2313 | F_NON_I386(expf) | ||
| 2314 | F_ARM_ANY(expl == exp) | ||
| 2315 | expm1 | ||
| 2316 | expm1f | ||
| 2317 | expm1l F_X86_ANY(DATA) | ||
| 2318 | fabs | ||
| 2319 | F_ARM_ANY(fabsf) | ||
| 2320 | fclose | ||
| 2321 | fdim | ||
| 2322 | fdimf | ||
| 2323 | fdiml F_X86_ANY(DATA) | ||
| 2324 | ; Don't use the float env functions from UCRT; fesetround doesn't seem to have | ||
| 2325 | ; any effect on the FPU control word as required by other libmingwex math | ||
| 2326 | ; routines. | ||
| 2327 | feclearexcept DATA | ||
| 2328 | fegetenv DATA | ||
| 2329 | fegetexceptflag DATA | ||
| 2330 | fegetround DATA | ||
| 2331 | feholdexcept DATA | ||
| 2332 | feof | ||
| 2333 | ferror | ||
| 2334 | fesetenv DATA | ||
| 2335 | fesetexceptflag DATA | ||
| 2336 | fesetround DATA | ||
| 2337 | fetestexcept DATA | ||
| 2338 | fflush | ||
| 2339 | fgetc | ||
| 2340 | fgetpos | ||
| 2341 | fgets | ||
| 2342 | fgetwc | ||
| 2343 | fgetws | ||
| 2344 | floor | ||
| 2345 | F_NON_I386(floorf) | ||
| 2346 | F_ARM_ANY(floorl == floor) | ||
| 2347 | fma | ||
| 2348 | fmaf | ||
| 2349 | fmal F_X86_ANY(DATA) | ||
| 2350 | fmax | ||
| 2351 | fmaxf | ||
| 2352 | fmaxl F_X86_ANY(DATA) | ||
| 2353 | fmin | ||
| 2354 | fminf | ||
| 2355 | fminl F_X86_ANY(DATA) | ||
| 2356 | fmod | ||
| 2357 | F_NON_I386(fmodf) | ||
| 2358 | F_ARM_ANY(fmodl == fmod) | ||
| 2359 | fopen | ||
| 2360 | fopen_s | ||
| 2361 | fputc | ||
| 2362 | fputs | ||
| 2363 | fputwc | ||
| 2364 | fputws | ||
| 2365 | fread | ||
| 2366 | fread_s | ||
| 2367 | free | ||
| 2368 | freopen | ||
| 2369 | freopen_s | ||
| 2370 | frexp | ||
| 2371 | fseek | ||
| 2372 | fsetpos | ||
| 2373 | ftell | ||
| 2374 | fwrite | ||
| 2375 | getc | ||
| 2376 | getchar | ||
| 2377 | getenv | ||
| 2378 | getenv_s | ||
| 2379 | gets | ||
| 2380 | gets_s | ||
| 2381 | getwc | ||
| 2382 | getwchar | ||
| 2383 | hypot | ||
| 2384 | ilogb | ||
| 2385 | ilogbf | ||
| 2386 | ilogbl F_X86_ANY(DATA) | ||
| 2387 | imaxabs | ||
| 2388 | imaxdiv | ||
| 2389 | is_wctype | ||
| 2390 | isalnum | ||
| 2391 | isalpha | ||
| 2392 | isblank | ||
| 2393 | iscntrl | ||
| 2394 | isdigit | ||
| 2395 | isgraph | ||
| 2396 | isleadbyte | ||
| 2397 | islower | ||
| 2398 | isprint | ||
| 2399 | ispunct | ||
| 2400 | isspace | ||
| 2401 | isupper | ||
| 2402 | iswalnum | ||
| 2403 | iswalpha | ||
| 2404 | iswascii | ||
| 2405 | iswblank | ||
| 2406 | iswcntrl | ||
| 2407 | iswctype | ||
| 2408 | iswdigit | ||
| 2409 | iswgraph | ||
| 2410 | iswlower | ||
| 2411 | iswprint | ||
| 2412 | iswpunct | ||
| 2413 | iswspace | ||
| 2414 | iswupper | ||
| 2415 | iswxdigit | ||
| 2416 | isxdigit | ||
| 2417 | labs | ||
| 2418 | ldexp | ||
| 2419 | ldiv | ||
| 2420 | ; The UCRT lgamma functions don't set/provide the signgam variable like | ||
| 2421 | ; the mingw ones do. Therefore prefer the libmingwex version instead. | ||
| 2422 | lgamma DATA | ||
| 2423 | lgammaf DATA | ||
| 2424 | lgammal DATA | ||
| 2425 | llabs | ||
| 2426 | lldiv | ||
| 2427 | llrint | ||
| 2428 | llrintf | ||
| 2429 | llrintl F_X86_ANY(DATA) | ||
| 2430 | llround | ||
| 2431 | llroundf | ||
| 2432 | llroundl F_X86_ANY(DATA) | ||
| 2433 | localeconv | ||
| 2434 | log | ||
| 2435 | log10 | ||
| 2436 | F_NON_I386(log10f) | ||
| 2437 | F_ARM_ANY(log10l == log10) | ||
| 2438 | log1p | ||
| 2439 | log1pf | ||
| 2440 | log1pl F_X86_ANY(DATA) | ||
| 2441 | log2 | ||
| 2442 | log2f | ||
| 2443 | log2l F_X86_ANY(DATA) | ||
| 2444 | logb | ||
| 2445 | logbf | ||
| 2446 | logbl F_X86_ANY(DATA) | ||
| 2447 | F_NON_I386(logf) | ||
| 2448 | F_ARM_ANY(logl == log) | ||
| 2449 | longjmp | ||
| 2450 | lrint | ||
| 2451 | lrintf | ||
| 2452 | lrintl F_X86_ANY(DATA) | ||
| 2453 | lround | ||
| 2454 | lroundf | ||
| 2455 | lroundl F_X86_ANY(DATA) | ||
| 2456 | malloc | ||
| 2457 | mblen | ||
| 2458 | mbrlen | ||
| 2459 | mbrtoc16 | ||
| 2460 | mbrtoc32 | ||
| 2461 | mbrtowc | ||
| 2462 | mbsrtowcs | ||
| 2463 | mbsrtowcs_s | ||
| 2464 | mbstowcs | ||
| 2465 | mbstowcs_s | ||
| 2466 | mbtowc | ||
| 2467 | memchr | ||
| 2468 | memcmp | ||
| 2469 | memcpy | ||
| 2470 | memcpy_s | ||
| 2471 | memmove | ||
| 2472 | memmove_s | ||
| 2473 | memset | ||
| 2474 | modf | ||
| 2475 | F_NON_I386(modff) | ||
| 2476 | nan | ||
| 2477 | nanf | ||
| 2478 | nanl F_X86_ANY(DATA) | ||
| 2479 | nearbyint | ||
| 2480 | nearbyintf | ||
| 2481 | nearbyintl F_X86_ANY(DATA) | ||
| 2482 | nextafter | ||
| 2483 | nextafterf | ||
| 2484 | nextafterl F_X86_ANY(DATA) | ||
| 2485 | ; All of the nexttoward functions take the second parameter as long doubke, | ||
| 2486 | ; making them unusable for x86. | ||
| 2487 | nexttoward F_X86_ANY(DATA) | ||
| 2488 | nexttowardf F_X86_ANY(DATA) | ||
| 2489 | nexttowardl F_X86_ANY(DATA) | ||
| 2490 | norm | ||
| 2491 | normf | ||
| 2492 | norml | ||
| 2493 | perror | ||
| 2494 | pow | ||
| 2495 | F_NON_I386(powf) | ||
| 2496 | F_ARM_ANY(powl == pow) | ||
| 2497 | putc | ||
| 2498 | putchar | ||
| 2499 | puts | ||
| 2500 | putwc | ||
| 2501 | putwchar | ||
| 2502 | qsort | ||
| 2503 | qsort_s | ||
| 2504 | quick_exit | ||
| 2505 | raise | ||
| 2506 | rand | ||
| 2507 | rand_s | ||
| 2508 | realloc | ||
| 2509 | remainder | ||
| 2510 | remainderf | ||
| 2511 | remainderl F_X86_ANY(DATA) | ||
| 2512 | remove | ||
| 2513 | remquo | ||
| 2514 | remquof | ||
| 2515 | remquol F_X86_ANY(DATA) | ||
| 2516 | rename | ||
| 2517 | rewind | ||
| 2518 | rint | ||
| 2519 | rintf | ||
| 2520 | rintl F_X86_ANY(DATA) | ||
| 2521 | round | ||
| 2522 | roundf | ||
| 2523 | roundl F_X86_ANY(DATA) | ||
| 2524 | scalbln | ||
| 2525 | scalblnf | ||
| 2526 | scalblnl F_X86_ANY(DATA) | ||
| 2527 | scalbn | ||
| 2528 | scalbnf | ||
| 2529 | scalbnl F_X86_ANY(DATA) | ||
| 2530 | set_terminate | ||
| 2531 | set_unexpected | ||
| 2532 | setbuf | ||
| 2533 | F_X64(setjmp) | ||
| 2534 | setlocale | ||
| 2535 | setvbuf | ||
| 2536 | signal | ||
| 2537 | sin | ||
| 2538 | F_NON_I386(sinf) | ||
| 2539 | F_ARM_ANY(sinl == sin) | ||
| 2540 | ; if we implement sinh, we can set it DATA only. | ||
| 2541 | sinh | ||
| 2542 | F_NON_I386(sinhf) | ||
| 2543 | sqrt | ||
| 2544 | F_NON_I386(sqrtf) | ||
| 2545 | srand | ||
| 2546 | strcat | ||
| 2547 | strcat_s | ||
| 2548 | strchr | ||
| 2549 | strcmp | ||
| 2550 | strcmpi == _stricmp | ||
| 2551 | strcoll | ||
| 2552 | strcpy | ||
| 2553 | strcpy_s | ||
| 2554 | strcspn | ||
| 2555 | strerror | ||
| 2556 | strerror_s | ||
| 2557 | strftime | ||
| 2558 | strlen | ||
| 2559 | strncat | ||
| 2560 | strncat_s | ||
| 2561 | strncmp | ||
| 2562 | strncpy | ||
| 2563 | strncpy_s | ||
| 2564 | ; strnlen replaced by emu | ||
| 2565 | strpbrk | ||
| 2566 | strrchr | ||
| 2567 | strspn | ||
| 2568 | strstr | ||
| 2569 | strtod | ||
| 2570 | strtof | ||
| 2571 | strtoimax | ||
| 2572 | strtok | ||
| 2573 | strtok_s | ||
| 2574 | strtol | ||
| 2575 | ; Can't use long double functions from the CRT on x86 | ||
| 2576 | F_ARM_ANY(strtold) | ||
| 2577 | strtoll | ||
| 2578 | strtoul | ||
| 2579 | strtoull | ||
| 2580 | strtoumax | ||
| 2581 | strxfrm | ||
| 2582 | system | ||
| 2583 | tan | ||
| 2584 | F_NON_I386(tanf) | ||
| 2585 | F_ARM_ANY(tanl == tan) | ||
| 2586 | ; if we implement tanh, we can set it to DATA only. | ||
| 2587 | tanh | ||
| 2588 | F_NON_I386(tanhf) | ||
| 2589 | terminate | ||
| 2590 | tgamma | ||
| 2591 | tgammaf | ||
| 2592 | tgammal F_X86_ANY(DATA) | ||
| 2593 | tmpfile | ||
| 2594 | tmpfile_s | ||
| 2595 | tmpnam | ||
| 2596 | tmpnam_s | ||
| 2597 | tolower | ||
| 2598 | toupper | ||
| 2599 | towctrans | ||
| 2600 | towlower | ||
| 2601 | towupper | ||
| 2602 | trunc | ||
| 2603 | truncf | ||
| 2604 | truncl F_X86_ANY(DATA) | ||
| 2605 | unexpected | ||
| 2606 | ungetc | ||
| 2607 | ungetwc | ||
| 2608 | utime == _utime64 | ||
| 2609 | wcrtomb | ||
| 2610 | wcrtomb_s | ||
| 2611 | wcscat | ||
| 2612 | wcscat_s | ||
| 2613 | wcschr | ||
| 2614 | wcscmp | ||
| 2615 | wcscoll | ||
| 2616 | wcscpy | ||
| 2617 | wcscpy_s | ||
| 2618 | wcscspn | ||
| 2619 | wcsftime | ||
| 2620 | wcslen | ||
| 2621 | wcsncat | ||
| 2622 | wcsncat_s | ||
| 2623 | wcsncmp | ||
| 2624 | wcsncpy | ||
| 2625 | wcsncpy_s | ||
| 2626 | ; We provide replacement implementation in libmingwex | ||
| 2627 | wcsnlen DATA | ||
| 2628 | wcspbrk | ||
| 2629 | wcsrchr | ||
| 2630 | wcsrtombs | ||
| 2631 | wcsrtombs_s | ||
| 2632 | wcsspn | ||
| 2633 | wcsstr | ||
| 2634 | wcstod | ||
| 2635 | wcstof | ||
| 2636 | wcstoimax | ||
| 2637 | wcstok | ||
| 2638 | wcstok_s | ||
| 2639 | wcstol | ||
| 2640 | ; Can't use long double functions from the CRT on x86 | ||
| 2641 | F_ARM_ANY(wcstold) | ||
| 2642 | wcstoll | ||
| 2643 | wcstombs | ||
| 2644 | wcstombs_s | ||
| 2645 | wcstoul | ||
| 2646 | wcstoull | ||
| 2647 | wcstoumax | ||
| 2648 | wcsxfrm | ||
| 2649 | wctob | ||
| 2650 | wctomb | ||
| 2651 | wctomb_s | ||
| 2652 | wctrans | ||
| 2653 | wctype | ||
| 2654 | wmemcpy_s | ||
| 2655 | wmemmove_s | ||
| 2656 | ; These functions may satisfy configure scripts. | ||
| 2657 | ctime == _ctime64 | ||
| 2658 | gmtime == _gmtime64 | ||
| 2659 | localtime == _localtime64 | ||
| 2660 | mktime == _mktime64 | ||
| 2661 | time == _time64 | ||
| 2662 | timespec_get == _timespec64_get |
lib/libc/mingw/lib-common/ucrtbased.def.in created+12| ... | @@ -0,0 +1,12 @@ | ||
| 1 | LIBRARY "ucrtbased.dll" | ||
| 2 | EXPORTS | ||
| 3 | |||
| 4 | #include "func.def.in" | ||
| 5 | |||
| 6 | ; Include common ucrtbase symbols for debug build ucrtbased.dll | ||
| 7 | #define DEF_DEBUG | ||
| 8 | #include "ucrtbase-common.def.in" | ||
| 9 | |||
| 10 | ; Include symbol aliases for compatibility with msvcrt.dll | ||
| 11 | #define UCRTBASE | ||
| 12 | #include "crt-aliases.def.in" | ||
lib/libc/mingw/lib-common/user32.def.in+20| ... | @@ -115,6 +115,7 @@ CreateMDIWindowA | ... | @@ -115,6 +115,7 @@ CreateMDIWindowA |
| 115 | CreateMDIWindowW | 115 | CreateMDIWindowW |
| 116 | CreateMenu | 116 | CreateMenu |
| 117 | CreatePopupMenu | 117 | CreatePopupMenu |
| 118 | CreateSyntheticPointerDevice | ||
| 118 | CreateSystemThreads | 119 | CreateSystemThreads |
| 119 | CreateWindowExA | 120 | CreateWindowExA |
| 120 | CreateWindowExW | 121 | CreateWindowExW |
| ... | @@ -178,6 +179,7 @@ DestroyDCompositionHwndTarget | ... | @@ -178,6 +179,7 @@ DestroyDCompositionHwndTarget |
| 178 | DestroyIcon | 179 | DestroyIcon |
| 179 | DestroyMenu | 180 | DestroyMenu |
| 180 | DestroyReasons | 181 | DestroyReasons |
| 182 | DestroySyntheticPointerDevice | ||
| 181 | DestroyWindow | 183 | DestroyWindow |
| 182 | DeviceEventWorker | 184 | DeviceEventWorker |
| 183 | DialogBoxIndirectParamA | 185 | DialogBoxIndirectParamA |
| ... | @@ -325,6 +327,8 @@ GetDCEx | ... | @@ -325,6 +327,8 @@ GetDCEx |
| 325 | GetDesktopID | 327 | GetDesktopID |
| 326 | GetDesktopWindow | 328 | GetDesktopWindow |
| 327 | GetDialogBaseUnits | 329 | GetDialogBaseUnits |
| 330 | GetDialogControlDpiChangeBehavior | ||
| 331 | GetDialogDpiChangeBehavior | ||
| 328 | GetDisplayAutoRotationPreferences | 332 | GetDisplayAutoRotationPreferences |
| 329 | GetDisplayConfigBufferSizes | 333 | GetDisplayConfigBufferSizes |
| 330 | GetDlgCtrlID | 334 | GetDlgCtrlID |
| ... | @@ -333,9 +337,12 @@ GetDlgItemInt | ... | @@ -333,9 +337,12 @@ GetDlgItemInt |
| 333 | GetDlgItemTextA | 337 | GetDlgItemTextA |
| 334 | GetDlgItemTextW | 338 | GetDlgItemTextW |
| 335 | GetDoubleClickTime | 339 | GetDoubleClickTime |
| 340 | GetDpiAwarenessContextForProcess | ||
| 336 | GetDpiForMonitorInternal | 341 | GetDpiForMonitorInternal |
| 337 | GetDpiForSystem | 342 | GetDpiForSystem |
| 338 | GetDpiForWindow | 343 | GetDpiForWindow |
| 344 | GetDpiFromDpiAwarenessContext | ||
| 345 | GetExtendedPointerDeviceProperty | ||
| 339 | GetFocus | 346 | GetFocus |
| 340 | GetForegroundWindow | 347 | GetForegroundWindow |
| 341 | GetGestureConfig | 348 | GetGestureConfig |
| ... | @@ -440,6 +447,7 @@ GetShellWindow | ... | @@ -440,6 +447,7 @@ GetShellWindow |
| 440 | GetSubMenu | 447 | GetSubMenu |
| 441 | GetSysColor | 448 | GetSysColor |
| 442 | GetSysColorBrush | 449 | GetSysColorBrush |
| 450 | GetSystemDpiForProcess | ||
| 443 | GetSystemMenu | 451 | GetSystemMenu |
| 444 | GetSystemMetrics | 452 | GetSystemMetrics |
| 445 | GetSystemMetricsForDpi | 453 | GetSystemMetricsForDpi |
| ... | @@ -448,6 +456,7 @@ GetTabbedTextExtentW | ... | @@ -448,6 +456,7 @@ GetTabbedTextExtentW |
| 448 | GetTaskmanWindow | 456 | GetTaskmanWindow |
| 449 | GetThreadDesktop | 457 | GetThreadDesktop |
| 450 | GetThreadDpiAwarenessContext | 458 | GetThreadDpiAwarenessContext |
| 459 | GetThreadDpiHostingBehavior | ||
| 451 | GetTitleBarInfo | 460 | GetTitleBarInfo |
| 452 | GetTopLevelWindow | 461 | GetTopLevelWindow |
| 453 | GetTopWindow | 462 | GetTopWindow |
| ... | @@ -468,6 +477,7 @@ GetWindowContextHelpId | ... | @@ -468,6 +477,7 @@ GetWindowContextHelpId |
| 468 | GetWindowDC | 477 | GetWindowDC |
| 469 | GetWindowDisplayAffinity | 478 | GetWindowDisplayAffinity |
| 470 | GetWindowDpiAwarenessContext | 479 | GetWindowDpiAwarenessContext |
| 480 | GetWindowDpiHostingBehavior | ||
| 471 | GetWindowFeedbackSetting | 481 | GetWindowFeedbackSetting |
| 472 | GetWindowInfo | 482 | GetWindowInfo |
| 473 | GetWindowLongA | 483 | GetWindowLongA |
| ... | @@ -515,6 +525,7 @@ InjectDeviceInput | ... | @@ -515,6 +525,7 @@ InjectDeviceInput |
| 515 | InjectKeyboardInput | 525 | InjectKeyboardInput |
| 516 | InjectMouseInput | 526 | InjectMouseInput |
| 517 | InjectPointerInput | 527 | InjectPointerInput |
| 528 | InjectSyntheticPointerInput | ||
| 518 | InjectTouchInput | 529 | InjectTouchInput |
| 519 | InsertMenuA | 530 | InsertMenuA |
| 520 | InsertMenuItemA | 531 | InsertMenuItemA |
| ... | @@ -672,6 +683,7 @@ QuerySendMessage | ... | @@ -672,6 +683,7 @@ QuerySendMessage |
| 672 | RIMAddInputObserver | 683 | RIMAddInputObserver |
| 673 | RIMAreSiblingDevices | 684 | RIMAreSiblingDevices |
| 674 | RIMDeviceIoControl | 685 | RIMDeviceIoControl |
| 686 | RIMEnableMonitorMappingForDevice | ||
| 675 | RIMFreeInputBuffer | 687 | RIMFreeInputBuffer |
| 676 | RIMGetDevicePreparsedData | 688 | RIMGetDevicePreparsedData |
| 677 | RIMGetDevicePreparsedDataLockfree | 689 | RIMGetDevicePreparsedDataLockfree |
| ... | @@ -706,6 +718,7 @@ RegisterDManipHook | ... | @@ -706,6 +718,7 @@ RegisterDManipHook |
| 706 | RegisterDeviceNotificationA | 718 | RegisterDeviceNotificationA |
| 707 | RegisterDeviceNotificationW | 719 | RegisterDeviceNotificationW |
| 708 | RegisterErrorReportingDialog | 720 | RegisterErrorReportingDialog |
| 721 | RegisterForTooltipDismissNotification | ||
| 709 | RegisterFrostWindow | 722 | RegisterFrostWindow |
| 710 | RegisterGhostWindow | 723 | RegisterGhostWindow |
| 711 | RegisterHotKey | 724 | RegisterHotKey |
| ... | @@ -758,6 +771,7 @@ SendMessageW | ... | @@ -758,6 +771,7 @@ SendMessageW |
| 758 | SendNotifyMessageA | 771 | SendNotifyMessageA |
| 759 | SendNotifyMessageW | 772 | SendNotifyMessageW |
| 760 | SetActiveWindow | 773 | SetActiveWindow |
| 774 | SetAdditionalForegroundBoostProcesses | ||
| 761 | SetCapture | 775 | SetCapture |
| 762 | SetCaretBlinkTime | 776 | SetCaretBlinkTime |
| 763 | SetCaretPos | 777 | SetCaretPos |
| ... | @@ -775,6 +789,8 @@ SetCursorContents | ... | @@ -775,6 +789,8 @@ SetCursorContents |
| 775 | SetCursorPos | 789 | SetCursorPos |
| 776 | SetDebugErrorLevel | 790 | SetDebugErrorLevel |
| 777 | SetDeskWallpaper | 791 | SetDeskWallpaper |
| 792 | SetDialogControlDpiChangeBehavior | ||
| 793 | SetDialogDpiChangeBehavior | ||
| 778 | SetDisplayAutoRotationPreferences | 794 | SetDisplayAutoRotationPreferences |
| 779 | SetDisplayConfig | 795 | SetDisplayConfig |
| 780 | SetDlgItemInt | 796 | SetDlgItemInt |
| ... | @@ -811,6 +827,7 @@ SetProcessDPIAware | ... | @@ -811,6 +827,7 @@ SetProcessDPIAware |
| 811 | SetProcessDefaultLayout | 827 | SetProcessDefaultLayout |
| 812 | SetProcessDpiAwarenessContext | 828 | SetProcessDpiAwarenessContext |
| 813 | SetProcessDpiAwarenessInternal | 829 | SetProcessDpiAwarenessInternal |
| 830 | SetProcessLaunchForegroundPolicy | ||
| 814 | SetProcessRestrictionExemption | 831 | SetProcessRestrictionExemption |
| 815 | SetProcessWindowStation | 832 | SetProcessWindowStation |
| 816 | SetProgmanWindow | 833 | SetProgmanWindow |
| ... | @@ -831,6 +848,7 @@ SetSystemTimer | ... | @@ -831,6 +848,7 @@ SetSystemTimer |
| 831 | SetTaskmanWindow | 848 | SetTaskmanWindow |
| 832 | SetThreadDesktop | 849 | SetThreadDesktop |
| 833 | SetThreadDpiAwarenessContext | 850 | SetThreadDpiAwarenessContext |
| 851 | SetThreadDpiHostingBehavior | ||
| 834 | SetThreadInputBlocked | 852 | SetThreadInputBlocked |
| 835 | SetTimer | 853 | SetTimer |
| 836 | SetUserObjectInformationA | 854 | SetUserObjectInformationA |
| ... | @@ -859,6 +877,8 @@ SetWindowsHookA | ... | @@ -859,6 +877,8 @@ SetWindowsHookA |
| 859 | SetWindowsHookExA | 877 | SetWindowsHookExA |
| 860 | SetWindowsHookExW | 878 | SetWindowsHookExW |
| 861 | SetWindowsHookW | 879 | SetWindowsHookW |
| 880 | ShellMigrateWindow | ||
| 881 | ShellSetWindowPos | ||
| 862 | ShowCaret | 882 | ShowCaret |
| 863 | ShowCursor | 883 | ShowCursor |
| 864 | ShowOwnedPopups | 884 | ShowOwnedPopups |
lib/libc/mingw/lib-common/vcruntime140.def.in created+94| ... | @@ -0,0 +1,94 @@ | ||
| 1 | LIBRARY "VCRUNTIME140.dll" | ||
| 2 | EXPORTS | ||
| 3 | |||
| 4 | #include "func.def.in" | ||
| 5 | |||
| 6 | _CreateFrameInfo | ||
| 7 | F_I386(_CxxThrowException@8) | ||
| 8 | F_NON_I386(_CxxThrowException) | ||
| 9 | F_I386(_EH_prolog) | ||
| 10 | _FindAndUnlinkFrame | ||
| 11 | _IsExceptionObjectToBeDestroyed | ||
| 12 | F_I386(_NLG_Dispatch2@4) | ||
| 13 | F_I386(_NLG_Return@12) | ||
| 14 | F_I386(_NLG_Return2) | ||
| 15 | _SetWinRTOutOfMemoryExceptionCallback | ||
| 16 | __AdjustPointer | ||
| 17 | __BuildCatchObject | ||
| 18 | __BuildCatchObjectHelper | ||
| 19 | F_NON_I386(__C_specific_handler) | ||
| 20 | F_NON_I386(__C_specific_handler_noexcept) | ||
| 21 | __CxxDetectRethrow | ||
| 22 | __CxxExceptionFilter | ||
| 23 | __CxxFrameHandler | ||
| 24 | __CxxFrameHandler2 | ||
| 25 | __CxxFrameHandler3 | ||
| 26 | F_I386(__CxxLongjmpUnwind@4) | ||
| 27 | __CxxQueryExceptionSize | ||
| 28 | __CxxRegisterExceptionObject | ||
| 29 | __CxxUnregisterExceptionObject | ||
| 30 | __DestructExceptionObject | ||
| 31 | __FrameUnwindFilter | ||
| 32 | __GetPlatformExceptionInfo | ||
| 33 | F_NON_I386(__NLG_Dispatch2) | ||
| 34 | F_NON_I386(__NLG_Return2) | ||
| 35 | __RTCastToVoid | ||
| 36 | __RTDynamicCast | ||
| 37 | __RTtypeid | ||
| 38 | __TypeMatch | ||
| 39 | __current_exception | ||
| 40 | __current_exception_context | ||
| 41 | F_NON_ARM64(__intrinsic_setjmp) | ||
| 42 | F_NON_I386(__intrinsic_setjmpex) | ||
| 43 | F_ARM32(__jump_unwind) | ||
| 44 | __processing_throw | ||
| 45 | __report_gsfailure | ||
| 46 | __std_exception_copy | ||
| 47 | __std_exception_destroy | ||
| 48 | __std_terminate | ||
| 49 | __std_type_info_compare | ||
| 50 | __std_type_info_destroy_list | ||
| 51 | __std_type_info_hash | ||
| 52 | __std_type_info_name | ||
| 53 | __telemetry_main_invoke_trigger | ||
| 54 | __telemetry_main_return_trigger | ||
| 55 | __unDName | ||
| 56 | __unDNameEx | ||
| 57 | __uncaught_exception | ||
| 58 | __uncaught_exceptions | ||
| 59 | __vcrt_GetModuleFileNameW | ||
| 60 | __vcrt_GetModuleHandleW | ||
| 61 | __vcrt_InitializeCriticalSectionEx | ||
| 62 | __vcrt_LoadLibraryExW | ||
| 63 | F_I386(_chkesp) | ||
| 64 | F_I386(_except_handler2) | ||
| 65 | F_I386(_except_handler3) | ||
| 66 | F_I386(_except_handler4_common) | ||
| 67 | _get_purecall_handler | ||
| 68 | _get_unexpected | ||
| 69 | F_I386(_global_unwind2) | ||
| 70 | _is_exception_typeof | ||
| 71 | F64(_local_unwind) | ||
| 72 | F_I386(_local_unwind2) | ||
| 73 | F_I386(_local_unwind4) | ||
| 74 | F_I386(_longjmpex) | ||
| 75 | _purecall | ||
| 76 | F_I386(_seh_longjmp_unwind4@4) | ||
| 77 | F_I386(_seh_longjmp_unwind@4) | ||
| 78 | _set_purecall_handler | ||
| 79 | _set_se_translator | ||
| 80 | F_I386(_setjmp3) | ||
| 81 | longjmp | ||
| 82 | memchr | ||
| 83 | memcmp | ||
| 84 | memcpy | ||
| 85 | memmove | ||
| 86 | memset | ||
| 87 | set_unexpected | ||
| 88 | strchr | ||
| 89 | strrchr | ||
| 90 | strstr | ||
| 91 | unexpected | ||
| 92 | wcschr | ||
| 93 | wcsrchr | ||
| 94 | wcsstr | ||
lib/libc/mingw/lib-common/vcruntime140_app.def.in+1-2| ... | @@ -39,8 +39,7 @@ __RTtypeid | ... | @@ -39,8 +39,7 @@ __RTtypeid |
| 39 | __TypeMatch | 39 | __TypeMatch |
| 40 | __current_exception | 40 | __current_exception |
| 41 | __current_exception_context | 41 | __current_exception_context |
| 42 | F_X86_ANY(__intrinsic_setjmp) | 42 | F_NON_ARM64(__intrinsic_setjmp) |
| 43 | F_ARM32(__intrinsic_setjmp) | ||
| 44 | F_NON_I386(__intrinsic_setjmpex) | 43 | F_NON_I386(__intrinsic_setjmpex) |
| 45 | F_ARM32(__jump_unwind) | 44 | F_ARM32(__jump_unwind) |
| 46 | __processing_throw | 45 | __processing_throw |
lib/libc/mingw/lib-common/vcruntime140d.def.in created+94| ... | @@ -0,0 +1,94 @@ | ||
| 1 | LIBRARY "VCRUNTIME140D.dll" | ||
| 2 | EXPORTS | ||
| 3 | |||
| 4 | #include "func.def.in" | ||
| 5 | |||
| 6 | _CreateFrameInfo | ||
| 7 | F_I386(_CxxThrowException@8) | ||
| 8 | F_NON_I386(_CxxThrowException) | ||
| 9 | F_I386(_EH_prolog) | ||
| 10 | _FindAndUnlinkFrame | ||
| 11 | _IsExceptionObjectToBeDestroyed | ||
| 12 | F_I386(_NLG_Dispatch2@4) | ||
| 13 | F_I386(_NLG_Return@12) | ||
| 14 | F_I386(_NLG_Return2) | ||
| 15 | _SetWinRTOutOfMemoryExceptionCallback | ||
| 16 | __AdjustPointer | ||
| 17 | __BuildCatchObject | ||
| 18 | __BuildCatchObjectHelper | ||
| 19 | F_NON_I386(__C_specific_handler) | ||
| 20 | F_NON_I386(__C_specific_handler_noexcept) | ||
| 21 | __CxxDetectRethrow | ||
| 22 | __CxxExceptionFilter | ||
| 23 | __CxxFrameHandler | ||
| 24 | __CxxFrameHandler2 | ||
| 25 | __CxxFrameHandler3 | ||
| 26 | F_I386(__CxxLongjmpUnwind@4) | ||
| 27 | __CxxQueryExceptionSize | ||
| 28 | __CxxRegisterExceptionObject | ||
| 29 | __CxxUnregisterExceptionObject | ||
| 30 | __DestructExceptionObject | ||
| 31 | __FrameUnwindFilter | ||
| 32 | __GetPlatformExceptionInfo | ||
| 33 | F_NON_I386(__NLG_Dispatch2) | ||
| 34 | F_NON_I386(__NLG_Return2) | ||
| 35 | __RTCastToVoid | ||
| 36 | __RTDynamicCast | ||
| 37 | __RTtypeid | ||
| 38 | __TypeMatch | ||
| 39 | __current_exception | ||
| 40 | __current_exception_context | ||
| 41 | F_NON_ARM64(__intrinsic_setjmp) | ||
| 42 | F_NON_I386(__intrinsic_setjmpex) | ||
| 43 | F_ARM32(__jump_unwind) | ||
| 44 | __processing_throw | ||
| 45 | __report_gsfailure | ||
| 46 | __std_exception_copy | ||
| 47 | __std_exception_destroy | ||
| 48 | __std_terminate | ||
| 49 | __std_type_info_compare | ||
| 50 | __std_type_info_destroy_list | ||
| 51 | __std_type_info_hash | ||
| 52 | __std_type_info_name | ||
| 53 | __telemetry_main_invoke_trigger | ||
| 54 | __telemetry_main_return_trigger | ||
| 55 | __unDName | ||
| 56 | __unDNameEx | ||
| 57 | __uncaught_exception | ||
| 58 | __uncaught_exceptions | ||
| 59 | __vcrt_GetModuleFileNameW | ||
| 60 | __vcrt_GetModuleHandleW | ||
| 61 | __vcrt_InitializeCriticalSectionEx | ||
| 62 | __vcrt_LoadLibraryExW | ||
| 63 | F_I386(_chkesp) | ||
| 64 | F_I386(_except_handler2) | ||
| 65 | F_I386(_except_handler3) | ||
| 66 | F_I386(_except_handler4_common) | ||
| 67 | _get_purecall_handler | ||
| 68 | _get_unexpected | ||
| 69 | F_I386(_global_unwind2) | ||
| 70 | _is_exception_typeof | ||
| 71 | F64(_local_unwind) | ||
| 72 | F_I386(_local_unwind2) | ||
| 73 | F_I386(_local_unwind4) | ||
| 74 | F_I386(_longjmpex) | ||
| 75 | _purecall | ||
| 76 | F_I386(_seh_longjmp_unwind4@4) | ||
| 77 | F_I386(_seh_longjmp_unwind@4) | ||
| 78 | _set_purecall_handler | ||
| 79 | _set_se_translator | ||
| 80 | F_I386(_setjmp3) | ||
| 81 | longjmp | ||
| 82 | memchr | ||
| 83 | memcmp | ||
| 84 | memcpy | ||
| 85 | memmove | ||
| 86 | memset | ||
| 87 | set_unexpected | ||
| 88 | strchr | ||
| 89 | strrchr | ||
| 90 | strstr | ||
| 91 | unexpected | ||
| 92 | wcschr | ||
| 93 | wcsrchr | ||
| 94 | wcsstr | ||
lib/libc/mingw/lib-common/winbrand.def created+23| ... | @@ -0,0 +1,23 @@ | ||
| 1 | ; | ||
| 2 | ; Definition file of WINBRAND.dll | ||
| 3 | ; Automatic generated by gendef | ||
| 4 | ; written by Kai Tietz 2008-2014 | ||
| 5 | ; | ||
| 6 | LIBRARY "WINBRAND.dll" | ||
| 7 | EXPORTS | ||
| 8 | BrandingFormatString | ||
| 9 | BrandingFormatStringForEdition | ||
| 10 | BrandingLoadBitmap | ||
| 11 | BrandingLoadCursor | ||
| 12 | BrandingLoadIcon | ||
| 13 | BrandingLoadImage | ||
| 14 | BrandingLoadNeutralStringForEdition | ||
| 15 | BrandingLoadString | ||
| 16 | BrandingLoadStringForEdition | ||
| 17 | EulaFreeBuffer | ||
| 18 | GetEULAFile | ||
| 19 | GetEULAFileEx | ||
| 20 | GetEULAInCurrentUILanguage | ||
| 21 | GetHinstanceByNameSpace | ||
| 22 | GetInstalledEULAPath | ||
| 23 | InstallEULA | ||
lib/libc/mingw/lib-common/winhvplatform.def.in created+70| ... | @@ -0,0 +1,70 @@ | ||
| 1 | #include "func.def.in" | ||
| 2 | |||
| 3 | LIBRARY "winhvplatform.dll" | ||
| 4 | EXPORTS | ||
| 5 | WHvAcceptPartitionMigration | ||
| 6 | WHvAdviseGpaRange | ||
| 7 | WHvAllocateVpciResource | ||
| 8 | WHvCancelPartitionMigration | ||
| 9 | WHvCancelRunVirtualProcessor | ||
| 10 | WHvCompletePartitionMigration | ||
| 11 | WHvCreateNotificationPort | ||
| 12 | WHvCreatePartition | ||
| 13 | WHvCreateTrigger | ||
| 14 | WHvCreateVirtualProcessor | ||
| 15 | WHvCreateVirtualProcessor2 | ||
| 16 | WHvCreateVpciDevice | ||
| 17 | WHvDeleteNotificationPort | ||
| 18 | WHvDeletePartition | ||
| 19 | WHvDeleteTrigger | ||
| 20 | WHvDeleteVirtualProcessor | ||
| 21 | WHvDeleteVpciDevice | ||
| 22 | WHvGetCapability | ||
| 23 | F_X64(WHvGetInterruptTargetVpSet) | ||
| 24 | WHvGetPartitionCounters | ||
| 25 | WHvGetPartitionProperty | ||
| 26 | WHvGetVirtualProcessorCounters | ||
| 27 | F_X64(WHvGetVirtualProcessorCpuidOutput) | ||
| 28 | F_X64(WHvGetVirtualProcessorInterruptControllerState) | ||
| 29 | F_X64(WHvGetVirtualProcessorInterruptControllerState2) | ||
| 30 | WHvGetVirtualProcessorRegisters | ||
| 31 | WHvGetVirtualProcessorState | ||
| 32 | F_X64(WHvGetVirtualProcessorXsaveState) | ||
| 33 | WHvGetVpciDeviceInterruptTarget | ||
| 34 | WHvGetVpciDeviceNotification | ||
| 35 | WHvGetVpciDeviceProperty | ||
| 36 | WHvMapGpaRange | ||
| 37 | WHvMapGpaRange2 | ||
| 38 | WHvMapVpciDeviceInterrupt | ||
| 39 | WHvMapVpciDeviceMmioRanges | ||
| 40 | WHvPostVirtualProcessorSynicMessage | ||
| 41 | WHvQueryGpaRangeDirtyBitmap | ||
| 42 | WHvReadGpaRange | ||
| 43 | WHvReadVpciDeviceRegister | ||
| 44 | WHvRegisterPartitionDoorbellEvent | ||
| 45 | WHvRequestInterrupt | ||
| 46 | WHvRequestVpciDeviceInterrupt | ||
| 47 | WHvResetPartition | ||
| 48 | WHvResumePartitionTime | ||
| 49 | WHvRetargetVpciDeviceInterrupt | ||
| 50 | WHvRunVirtualProcessor | ||
| 51 | WHvSetNotificationPortProperty | ||
| 52 | WHvSetPartitionProperty | ||
| 53 | F_X64(WHvSetVirtualProcessorInterruptControllerState) | ||
| 54 | F_X64(WHvSetVirtualProcessorInterruptControllerState2) | ||
| 55 | WHvSetVirtualProcessorRegisters | ||
| 56 | WHvSetVirtualProcessorState | ||
| 57 | F_X64(WHvSetVirtualProcessorXsaveState) | ||
| 58 | WHvSetVpciDevicePowerState | ||
| 59 | WHvSetupPartition | ||
| 60 | WHvSignalVirtualProcessorSynicEvent | ||
| 61 | WHvStartPartitionMigration | ||
| 62 | WHvSuspendPartitionTime | ||
| 63 | WHvTranslateGva | ||
| 64 | WHvUnmapGpaRange | ||
| 65 | WHvUnmapVpciDeviceInterrupt | ||
| 66 | WHvUnmapVpciDeviceMmioRanges | ||
| 67 | WHvUnregisterPartitionDoorbellEvent | ||
| 68 | WHvUpdateTriggerParameters | ||
| 69 | WHvWriteGpaRange | ||
| 70 | WHvWriteVpciDeviceRegister | ||
lib/libc/mingw/lib-common/wintrust.def created+167| ... | @@ -0,0 +1,167 @@ | ||
| 1 | ; | ||
| 2 | ; Definition file of WINTRUST.dll | ||
| 3 | ; Automatic generated by gendef | ||
| 4 | ; written by Kai Tietz 2008-2014 | ||
| 5 | ; | ||
| 6 | LIBRARY "WINTRUST.dll" | ||
| 7 | EXPORTS | ||
| 8 | ComputeFirstPageHash | ||
| 9 | CryptCATVerifyMember | ||
| 10 | CryptSIPGetInfo | ||
| 11 | CryptSIPGetRegWorkingFlags | ||
| 12 | GenericChainCertificateTrust | ||
| 13 | GenericChainFinalProv | ||
| 14 | HTTPSCertificateTrust | ||
| 15 | SetMessageDigestInfo | ||
| 16 | SoftpubDefCertInit | ||
| 17 | SoftpubFreeDefUsageCallData | ||
| 18 | SoftpubLoadDefUsageCallData | ||
| 19 | WTHelperCertFindIssuerCertificate | ||
| 20 | AddPersonalTrustDBPages | ||
| 21 | CatalogCompactHashDatabase | ||
| 22 | ConfigCiFinalPolicy | ||
| 23 | ConfigCiPackageFamilyNameCheck | ||
| 24 | CryptCATAdminAcquireContext | ||
| 25 | CryptCATAdminAcquireContext2 | ||
| 26 | CryptCATAdminAddCatalog | ||
| 27 | CryptCATAdminCalcHashFromFileHandle | ||
| 28 | CryptCATAdminCalcHashFromFileHandle2 | ||
| 29 | CryptCATAdminCalcHashFromFileHandle3 | ||
| 30 | CryptCATAdminEnumCatalogFromHash | ||
| 31 | CryptCATAdminPauseServiceForBackup | ||
| 32 | CryptCATAdminReleaseCatalogContext | ||
| 33 | CryptCATAdminReleaseContext | ||
| 34 | CryptCATAdminRemoveCatalog | ||
| 35 | CryptCATAdminResolveCatalogPath | ||
| 36 | CryptCATAllocSortedMemberInfo | ||
| 37 | CryptCATCDFClose | ||
| 38 | CryptCATCDFEnumAttributes | ||
| 39 | CryptCATCDFEnumAttributesWithCDFTag | ||
| 40 | CryptCATCDFEnumCatAttributes | ||
| 41 | CryptCATCDFEnumMembers | ||
| 42 | CryptCATCDFEnumMembersByCDFTag | ||
| 43 | CryptCATCDFEnumMembersByCDFTagEx | ||
| 44 | CryptCATCDFOpen | ||
| 45 | CryptCATCatalogInfoFromContext | ||
| 46 | CryptCATClose | ||
| 47 | CryptCATEnumerateAttr | ||
| 48 | CryptCATEnumerateCatAttr | ||
| 49 | CryptCATEnumerateMember | ||
| 50 | CryptCATFreeSortedMemberInfo | ||
| 51 | CryptCATGetAttrInfo | ||
| 52 | CryptCATGetCatAttrInfo | ||
| 53 | CryptCATGetMemberInfo | ||
| 54 | CryptCATHandleFromStore | ||
| 55 | CryptCATOpen | ||
| 56 | CryptCATPersistStore | ||
| 57 | CryptCATPutAttrInfo | ||
| 58 | CryptCATPutCatAttrInfo | ||
| 59 | CryptCATPutMemberInfo | ||
| 60 | CryptCATStoreFromHandle | ||
| 61 | CryptSIPCreateIndirectData | ||
| 62 | CryptSIPGetCaps | ||
| 63 | CryptSIPGetSealedDigest | ||
| 64 | CryptSIPGetSignedDataMsg | ||
| 65 | CryptSIPPutSignedDataMsg | ||
| 66 | CryptSIPRemoveSignedDataMsg | ||
| 67 | CryptSIPVerifyIndirectData | ||
| 68 | ; DllRegisterServer | ||
| 69 | ; DllUnregisterServer | ||
| 70 | DriverCleanupPolicy | ||
| 71 | DriverFinalPolicy | ||
| 72 | DriverInitializePolicy | ||
| 73 | FindCertsByIssuer | ||
| 74 | GetAuthenticodeSha256Hash | ||
| 75 | HTTPSFinalProv | ||
| 76 | IsCatalogFile | ||
| 77 | MsCatConstructHashTag | ||
| 78 | MsCatFreeHashTag | ||
| 79 | OfficeCleanupPolicy | ||
| 80 | OfficeInitializePolicy | ||
| 81 | OpenPersonalTrustDBDialog | ||
| 82 | OpenPersonalTrustDBDialogEx | ||
| 83 | SoftpubAuthenticode | ||
| 84 | SoftpubCheckCert | ||
| 85 | SoftpubCleanup | ||
| 86 | SoftpubDllRegisterServer | ||
| 87 | SoftpubDllUnregisterServer | ||
| 88 | SoftpubDumpStructure | ||
| 89 | SoftpubInitialize | ||
| 90 | SoftpubLoadMessage | ||
| 91 | SoftpubLoadSignature | ||
| 92 | SrpCheckSmartlockerEAandProcessToken | ||
| 93 | TrustDecode | ||
| 94 | TrustFindIssuerCertificate | ||
| 95 | TrustFreeDecode | ||
| 96 | TrustIsCertificateSelfSigned | ||
| 97 | TrustOpenStores | ||
| 98 | WTConvertCertCtxToChainInfo | ||
| 99 | WTGetBioSignatureInfo | ||
| 100 | WTGetPluginSignatureInfo | ||
| 101 | WTGetSignatureInfo | ||
| 102 | WTHelperCertCheckValidSignature | ||
| 103 | WTHelperCertIsSelfSigned | ||
| 104 | WTHelperCheckCertUsage | ||
| 105 | WTHelperGetAgencyInfo | ||
| 106 | WTHelperGetFileHandle | ||
| 107 | WTHelperGetFileHash | ||
| 108 | WTHelperGetFileName | ||
| 109 | WTHelperGetKnownUsages | ||
| 110 | WTHelperGetProvCertFromChain | ||
| 111 | WTHelperGetProvPrivateDataFromChain | ||
| 112 | WTHelperGetProvSignerFromChain | ||
| 113 | WTHelperIsChainedToMicrosoft | ||
| 114 | WTHelperIsChainedToMicrosoftFromStateData | ||
| 115 | WTHelperIsInRootStore | ||
| 116 | WTHelperOpenKnownStores | ||
| 117 | WTHelperProvDataFromStateData | ||
| 118 | WTIsFirstConfigCiResultPreferred | ||
| 119 | WTLogConfigCiScriptEvent | ||
| 120 | WTLogConfigCiSignerEvent | ||
| 121 | WTValidateBioSignaturePolicy | ||
| 122 | WVTAsn1CatMemberInfo2Decode | ||
| 123 | WVTAsn1CatMemberInfo2Encode | ||
| 124 | WVTAsn1CatMemberInfoDecode | ||
| 125 | WVTAsn1CatMemberInfoEncode | ||
| 126 | WVTAsn1CatNameValueDecode | ||
| 127 | WVTAsn1CatNameValueEncode | ||
| 128 | WVTAsn1IntentToSealAttributeDecode | ||
| 129 | WVTAsn1IntentToSealAttributeEncode | ||
| 130 | WVTAsn1SealingSignatureAttributeDecode | ||
| 131 | WVTAsn1SealingSignatureAttributeEncode | ||
| 132 | WVTAsn1SealingTimestampAttributeDecode | ||
| 133 | WVTAsn1SealingTimestampAttributeEncode | ||
| 134 | WVTAsn1SpcFinancialCriteriaInfoDecode | ||
| 135 | WVTAsn1SpcFinancialCriteriaInfoEncode | ||
| 136 | WVTAsn1SpcIndirectDataContentDecode | ||
| 137 | WVTAsn1SpcIndirectDataContentEncode | ||
| 138 | WVTAsn1SpcLinkDecode | ||
| 139 | WVTAsn1SpcLinkEncode | ||
| 140 | WVTAsn1SpcMinimalCriteriaInfoDecode | ||
| 141 | WVTAsn1SpcMinimalCriteriaInfoEncode | ||
| 142 | WVTAsn1SpcPeImageDataDecode | ||
| 143 | WVTAsn1SpcPeImageDataEncode | ||
| 144 | WVTAsn1SpcSigInfoDecode | ||
| 145 | WVTAsn1SpcSigInfoEncode | ||
| 146 | WVTAsn1SpcSpAgencyInfoDecode | ||
| 147 | WVTAsn1SpcSpAgencyInfoEncode | ||
| 148 | WVTAsn1SpcSpOpusInfoDecode | ||
| 149 | WVTAsn1SpcSpOpusInfoEncode | ||
| 150 | WVTAsn1SpcStatementTypeDecode | ||
| 151 | WVTAsn1SpcStatementTypeEncode | ||
| 152 | WinVerifyTrust | ||
| 153 | WinVerifyTrustEx | ||
| 154 | WintrustAddActionID | ||
| 155 | WintrustAddDefaultForUsage | ||
| 156 | WintrustCertificateTrust | ||
| 157 | WintrustGetDefaultForUsage | ||
| 158 | WintrustGetRegPolicyFlags | ||
| 159 | WintrustLoadFunctionPointers | ||
| 160 | WintrustRemoveActionID | ||
| 161 | WintrustSetDefaultIncludePEPageHashes | ||
| 162 | WintrustSetRegPolicyFlags | ||
| 163 | WintrustUserWriteabilityCheck | ||
| 164 | mscat32DllRegisterServer | ||
| 165 | mscat32DllUnregisterServer | ||
| 166 | mssip32DllRegisterServer | ||
| 167 | mssip32DllUnregisterServer | ||
lib/libc/mingw/lib-common/wscapi.def+14-4| ... | @@ -5,11 +5,16 @@ | ... | @@ -5,11 +5,16 @@ |
| 5 | ; | 5 | ; |
| 6 | LIBRARY "WSCAPI.dll" | 6 | LIBRARY "WSCAPI.dll" |
| 7 | EXPORTS | 7 | EXPORTS |
| 8 | wscLaunchAdminMakeDefaultUI | ||
| 8 | wscShowAMSCN | 9 | wscShowAMSCN |
| 9 | CLSID_WSCProductList | 10 | CLSID_WSCDefaultProduct DATA |
| 10 | IID_IWSCProductList | 11 | CLSID_WSCProductList DATA |
| 11 | IID_IWscProduct | 12 | ; DllCanUnloadNow |
| 12 | LIBID_wscAPILib | 13 | ; DllGetClassObject |
| 14 | IID_IWSCDefaultProduct DATA | ||
| 15 | IID_IWSCProductList DATA | ||
| 16 | IID_IWscProduct DATA | ||
| 17 | LIBID_wscAPILib DATA | ||
| 13 | WscGetAntiMalwareUri | 18 | WscGetAntiMalwareUri |
| 14 | WscGetSecurityProviderHealth | 19 | WscGetSecurityProviderHealth |
| 15 | WscQueryAntiMalwareUri | 20 | WscQueryAntiMalwareUri |
| ... | @@ -26,13 +31,18 @@ wscGeneralSecurityGetStatus | ... | @@ -26,13 +31,18 @@ wscGeneralSecurityGetStatus |
| 26 | wscGetAlertStatus | 31 | wscGetAlertStatus |
| 27 | wscIcfEnable | 32 | wscIcfEnable |
| 28 | wscIeSettingsFix | 33 | wscIeSettingsFix |
| 34 | wscInitiateOfflineCleaning | ||
| 29 | wscIsDefenderAntivirusSupported | 35 | wscIsDefenderAntivirusSupported |
| 30 | wscLuaSettingsFix | 36 | wscLuaSettingsFix |
| 37 | wscMakeDefaultProductRequest | ||
| 38 | wscNotifyUserForNearExpiration | ||
| 31 | wscOverrideComponentStatus | 39 | wscOverrideComponentStatus |
| 32 | wscPing | 40 | wscPing |
| 33 | wscProductInfoFree | 41 | wscProductInfoFree |
| 34 | wscRegisterChangeNotification | 42 | wscRegisterChangeNotification |
| 35 | wscRegisterSecurityProduct | 43 | wscRegisterSecurityProduct |
| 44 | wscSetDefaultProduct | ||
| 36 | wscUnRegisterChangeNotification | 45 | wscUnRegisterChangeNotification |
| 37 | wscUnregisterSecurityProduct | 46 | wscUnregisterSecurityProduct |
| 38 | wscUpdateProductStatus | 47 | wscUpdateProductStatus |
| 48 | wscUpdateProductSubStatus |
lib/libc/mingw/lib32/bcryptprimitives.def created+18| ... | @@ -0,0 +1,18 @@ | ||
| 1 | ; | ||
| 2 | ; Definition file of bcryptPrimitives.dll | ||
| 3 | ; Automatic generated by gendef 1.1 | ||
| 4 | ; written by Kai Tietz 2008 | ||
| 5 | ; The def file has to be processed by --kill-at (-k) option of dlltool or ld | ||
| 6 | ; | ||
| 7 | LIBRARY "bcryptPrimitives.dll" | ||
| 8 | EXPORTS | ||
| 9 | GetAsymmetricEncryptionInterface@16 | ||
| 10 | GetCipherInterface@16 | ||
| 11 | GetHashInterface@16 | ||
| 12 | GetKeyDerivationInterface@16 | ||
| 13 | GetRngInterface@12 | ||
| 14 | GetSecretAgreementInterface@16 | ||
| 15 | GetSignatureInterface@16 | ||
| 16 | MSCryptConvertRsaPrivateBlobToFullRsaBlob@20 | ||
| 17 | ProcessPrng@8 | ||
| 18 | ProcessPrngGuid@4 | ||
lib/libc/mingw/lib32/cfgmgr32.def+32-2| ... | @@ -7,10 +7,12 @@ LIBRARY "CFGMGR32.dll" | ... | @@ -7,10 +7,12 @@ LIBRARY "CFGMGR32.dll" |
| 7 | EXPORTS | 7 | EXPORTS |
| 8 | CMP_GetBlockedDriverInfo@16 | 8 | CMP_GetBlockedDriverInfo@16 |
| 9 | CMP_GetServerSideDeviceInstallFlags@12 | 9 | CMP_GetServerSideDeviceInstallFlags@12 |
| 10 | CMP_Get_Device_ID_List@16 | ||
| 11 | CMP_Get_Device_ID_List_Size@12 | ||
| 10 | CMP_Init_Detection@4 | 12 | CMP_Init_Detection@4 |
| 11 | CMP_RegisterNotification@24 | 13 | CMP_RegisterServiceNotification@16 |
| 14 | CMP_Register_Notification@20 | ||
| 12 | CMP_Report_LogOn@8 | 15 | CMP_Report_LogOn@8 |
| 13 | CMP_UnregisterNotification@4 | ||
| 14 | CMP_WaitNoPendingInstallEvents@4 | 16 | CMP_WaitNoPendingInstallEvents@4 |
| 15 | CMP_WaitServicesAvailable@4 | 17 | CMP_WaitServicesAvailable@4 |
| 16 | CM_Add_Driver_PackageW@40 | 18 | CM_Add_Driver_PackageW@40 |
| ... | @@ -165,6 +167,7 @@ CM_Get_Version_Ex@4 | ... | @@ -165,6 +167,7 @@ CM_Get_Version_Ex@4 |
| 165 | CM_Import_PowerScheme@12 | 167 | CM_Import_PowerScheme@12 |
| 166 | CM_Install_DevNodeW@32 | 168 | CM_Install_DevNodeW@32 |
| 167 | CM_Install_DevNode_ExW@36 | 169 | CM_Install_DevNode_ExW@36 |
| 170 | CM_Install_DriverW@28 | ||
| 168 | CM_Intersect_Range_List@16 | 171 | CM_Intersect_Range_List@16 |
| 169 | CM_Invert_Range_List@20 | 172 | CM_Invert_Range_List@20 |
| 170 | CM_Is_Dock_Station_Present@4 | 173 | CM_Is_Dock_Station_Present@4 |
| ... | @@ -212,6 +215,7 @@ CM_Register_Device_InterfaceA@24 | ... | @@ -212,6 +215,7 @@ CM_Register_Device_InterfaceA@24 |
| 212 | CM_Register_Device_InterfaceW@24 | 215 | CM_Register_Device_InterfaceW@24 |
| 213 | CM_Register_Device_Interface_ExA@28 | 216 | CM_Register_Device_Interface_ExA@28 |
| 214 | CM_Register_Device_Interface_ExW@28 | 217 | CM_Register_Device_Interface_ExW@28 |
| 218 | CM_Register_Notification@16 | ||
| 215 | CM_Remove_SubTree@8 | 219 | CM_Remove_SubTree@8 |
| 216 | CM_Remove_SubTree_Ex@12 | 220 | CM_Remove_SubTree_Ex@12 |
| 217 | CM_Request_Device_EjectA@20 | 221 | CM_Request_Device_EjectA@20 |
| ... | @@ -250,8 +254,34 @@ CM_Setup_DevNode_Ex@12 | ... | @@ -250,8 +254,34 @@ CM_Setup_DevNode_Ex@12 |
| 250 | CM_Test_Range_Available@24 | 254 | CM_Test_Range_Available@24 |
| 251 | CM_Uninstall_DevNode@8 | 255 | CM_Uninstall_DevNode@8 |
| 252 | CM_Uninstall_DevNode_Ex@12 | 256 | CM_Uninstall_DevNode_Ex@12 |
| 257 | CM_Uninstall_DriverW@28 | ||
| 253 | CM_Unregister_Device_InterfaceA@8 | 258 | CM_Unregister_Device_InterfaceA@8 |
| 254 | CM_Unregister_Device_InterfaceW@8 | 259 | CM_Unregister_Device_InterfaceW@8 |
| 255 | CM_Unregister_Device_Interface_ExA@12 | 260 | CM_Unregister_Device_Interface_ExA@12 |
| 256 | CM_Unregister_Device_Interface_ExW@12 | 261 | CM_Unregister_Device_Interface_ExW@12 |
| 262 | CM_Unregister_Notification@4 | ||
| 257 | CM_Write_UserPowerKey@32 | 263 | CM_Write_UserPowerKey@32 |
| 264 | DevCloseObjectQuery@4 | ||
| 265 | DevCreateObjectQuery@36 | ||
| 266 | DevCreateObjectQueryEx@44 | ||
| 267 | DevCreateObjectQueryFromId@40 | ||
| 268 | DevCreateObjectQueryFromIdEx@48 | ||
| 269 | DevCreateObjectQueryFromIds@40 | ||
| 270 | DevCreateObjectQueryFromIdsEx@48 | ||
| 271 | DevFindProperty@20 | ||
| 272 | DevFreeObjectProperties@8 | ||
| 273 | DevFreeObjects@8 | ||
| 274 | DevGetObjectProperties@28 | ||
| 275 | DevGetObjectPropertiesEx@36 | ||
| 276 | DevGetObjects@32 | ||
| 277 | DevGetObjectsEx@40 | ||
| 278 | DevSetObjectProperties@16 | ||
| 279 | SwDeviceClose@4 | ||
| 280 | SwDeviceCreate@32 | ||
| 281 | SwDeviceGetLifetime@8 | ||
| 282 | SwDeviceInterfacePropertySet@16 | ||
| 283 | SwDeviceInterfaceRegister@28 | ||
| 284 | SwDeviceInterfaceSetState@12 | ||
| 285 | SwDevicePropertySet@12 | ||
| 286 | SwDeviceSetLifetime@8 | ||
| 287 | SwMemFree@4 |
lib/libc/mingw/lib32/kernel32.def+2| ... | @@ -121,9 +121,11 @@ BuildCommDCBW@8 | ... | @@ -121,9 +121,11 @@ BuildCommDCBW@8 |
| 121 | BuildIoRingCancelRequest@20 | 121 | BuildIoRingCancelRequest@20 |
| 122 | BuildIoRingFlushFile@24 | 122 | BuildIoRingFlushFile@24 |
| 123 | BuildIoRingReadFile@44 | 123 | BuildIoRingReadFile@44 |
| 124 | BuildIoRingReadFileScatter@40 | ||
| 124 | BuildIoRingRegisterBuffers@16 | 125 | BuildIoRingRegisterBuffers@16 |
| 125 | BuildIoRingRegisterFileHandles@16 | 126 | BuildIoRingRegisterFileHandles@16 |
| 126 | BuildIoRingWriteFile@48 | 127 | BuildIoRingWriteFile@48 |
| 128 | BuildIoRingWriteFileGather@44 | ||
| 127 | CallNamedPipeA@28 | 129 | CallNamedPipeA@28 |
| 128 | CallNamedPipeW@28 | 130 | CallNamedPipeW@28 |
| 129 | CallbackMayRunLong@4 | 131 | CallbackMayRunLong@4 |
lib/libc/mingw/lib32/mstask.def-13| ... | @@ -18,16 +18,3 @@ SAGetNSAccountInformation@12 | ... | @@ -18,16 +18,3 @@ SAGetNSAccountInformation@12 |
| 18 | SASetAccountInformation@20 | 18 | SASetAccountInformation@20 |
| 19 | SASetNSAccountInformation@12 | 19 | SASetNSAccountInformation@12 |
| 20 | SetNetScheduleAccountInformation@12 | 20 | SetNetScheduleAccountInformation@12 |
| 21 | _ConvertAtJobsToTasks@0@0 | ||
| 22 | _DllCanUnloadNow@0@0 | ||
| 23 | _DllGetClassObject@12@12 | ||
| 24 | _GetNetScheduleAccountInformation@12@12 | ||
| 25 | _NetrJobAdd@12@12 | ||
| 26 | _NetrJobDel@12@12 | ||
| 27 | _NetrJobEnum@20@20 | ||
| 28 | _NetrJobGetInfo@12@12 | ||
| 29 | _SAGetAccountInformation@16@16 | ||
| 30 | _SAGetNSAccountInformation@12@12 | ||
| 31 | _SASetAccountInformation@20@20 | ||
| 32 | _SASetNSAccountInformation@12@12 | ||
| 33 | _SetNetScheduleAccountInformation@12@12 |
lib/libc/mingw/lib32/ninput.def created+37| ... | @@ -0,0 +1,37 @@ | ||
| 1 | ; | ||
| 2 | ; Definition file of ninput.dll | ||
| 3 | ; Automatic generated by gendef | ||
| 4 | ; written by Kai Tietz 2008-2014 | ||
| 5 | ; | ||
| 6 | LIBRARY "ninput.dll" | ||
| 7 | EXPORTS | ||
| 8 | AddPointerInteractionContext@8 | ||
| 9 | BufferPointerPacketsInteractionContext@12 | ||
| 10 | CreateInteractionContext@4 | ||
| 11 | DestroyInteractionContext@4 | ||
| 12 | GetCrossSlideParameterInteractionContext@12 | ||
| 13 | GetHoldParameterInteractionContext@12 | ||
| 14 | GetInertiaParameterInteractionContext@12 | ||
| 15 | GetInteractionConfigurationInteractionContext@12 | ||
| 16 | GetMouseWheelParameterInteractionContext@12 | ||
| 17 | GetPropertyInteractionContext@12 | ||
| 18 | GetStateInteractionContext@12 | ||
| 19 | GetTapParameterInteractionContext@12 | ||
| 20 | GetTranslationParameterInteractionContext@12 | ||
| 21 | ProcessBufferedPacketsInteractionContext@4 | ||
| 22 | ProcessInertiaInteractionContext@4 | ||
| 23 | ProcessPointerFramesInteractionContext@16 | ||
| 24 | RegisterOutputCallbackInteractionContext2@12 | ||
| 25 | RegisterOutputCallbackInteractionContext@12 | ||
| 26 | RemovePointerInteractionContext@8 | ||
| 27 | ResetInteractionContext@4 | ||
| 28 | SetCrossSlideParametersInteractionContext@12 | ||
| 29 | SetHoldParameterInteractionContext@12 | ||
| 30 | SetInertiaParameterInteractionContext@12 | ||
| 31 | SetInteractionConfigurationInteractionContext@12 | ||
| 32 | SetMouseWheelParameterInteractionContext@12 | ||
| 33 | SetPivotInteractionContext@16 | ||
| 34 | SetPropertyInteractionContext@12 | ||
| 35 | SetTapParameterInteractionContext@12 | ||
| 36 | SetTranslationParameterInteractionContext@12 | ||
| 37 | StopInteractionContext@4 | ||
lib/libc/mingw/lib32/t2embed.def-11| ... | @@ -11,17 +11,6 @@ TTIsEmbeddingEnabled@8 | ... | @@ -11,17 +11,6 @@ TTIsEmbeddingEnabled@8 |
| 11 | TTIsEmbeddingEnabledForFacename@8 | 11 | TTIsEmbeddingEnabledForFacename@8 |
| 12 | TTLoadEmbeddedFont@40 | 12 | TTLoadEmbeddedFont@40 |
| 13 | TTRunValidationTests@8 | 13 | TTRunValidationTests@8 |
| 14 | _TTCharToUnicode@24@24 | ||
| 15 | _TTDeleteEmbeddedFont@12@12 | ||
| 16 | _TTEmbedFont@44@44 | ||
| 17 | _TTEmbedFontFromFileA@52@52 | ||
| 18 | _TTEnableEmbeddingForFacename@8@8 | ||
| 19 | _TTGetEmbeddedFontInfo@28@28 | ||
| 20 | _TTGetEmbeddingType@8@8 | ||
| 21 | _TTIsEmbeddingEnabled@8@8 | ||
| 22 | _TTIsEmbeddingEnabledForFacename@8@8 | ||
| 23 | _TTLoadEmbeddedFont@40@40 | ||
| 24 | _TTRunValidationTests@8@8 | ||
| 25 | TTEmbedFontEx@44 | 14 | TTEmbedFontEx@44 |
| 26 | TTRunValidationTestsEx@8 | 15 | TTRunValidationTestsEx@8 |
| 27 | TTGetNewFontName@20 | 16 | TTGetNewFontName@20 |
lib/libc/mingw/lib32/tbs.def+1| ... | @@ -17,6 +17,7 @@ Tbsi_GetDeviceInfo@8 | ... | @@ -17,6 +17,7 @@ Tbsi_GetDeviceInfo@8 |
| 17 | Tbsi_Get_OwnerAuth@16 | 17 | Tbsi_Get_OwnerAuth@16 |
| 18 | Tbsi_Get_TCG_Log@12 | 18 | Tbsi_Get_TCG_Log@12 |
| 19 | Tbsi_Get_TCG_Log_Ex@12 | 19 | Tbsi_Get_TCG_Log_Ex@12 |
| 20 | Tbsi_Is_Tpm_Present@0 | ||
| 20 | Tbsi_Physical_Presence_Command@20 | 21 | Tbsi_Physical_Presence_Command@20 |
| 21 | Tbsi_Revoke_Attestation@0 | 22 | Tbsi_Revoke_Attestation@0 |
| 22 | Tbsi_ShaHash@32 | 23 | Tbsi_ShaHash@32 |
lib/libc/mingw/lib32/usbd.def+3-9| ... | @@ -5,16 +5,15 @@ | ... | @@ -5,16 +5,15 @@ |
| 5 | ; | 5 | ; |
| 6 | LIBRARY "USBD.SYS" | 6 | LIBRARY "USBD.SYS" |
| 7 | EXPORTS | 7 | EXPORTS |
| 8 | ; USBD_CreateConfigurationRequestEx@8 | 8 | USBD_CreateConfigurationRequestEx@8 |
| 9 | ; USBD_ParseConfigurationDescriptorEx@28 | 9 | USBD_ParseConfigurationDescriptorEx@28 |
| 10 | ; USBD_ParseDescriptors@16 | 10 | USBD_ParseDescriptors@16 |
| 11 | DllInitialize@4 | 11 | DllInitialize@4 |
| 12 | DllUnload@0 | 12 | DllUnload@0 |
| 13 | USBD_AllocateDeviceName@4 | 13 | USBD_AllocateDeviceName@4 |
| 14 | USBD_CalculateUsbBandwidth@12 | 14 | USBD_CalculateUsbBandwidth@12 |
| 15 | USBD_CompleteRequest@8 | 15 | USBD_CompleteRequest@8 |
| 16 | USBD_CreateConfigurationRequest@8 | 16 | USBD_CreateConfigurationRequest@8 |
| 17 | ; _USBD_CreateConfigurationRequestEx@8@8 | ||
| 18 | USBD_CreateDevice@20 | 17 | USBD_CreateDevice@20 |
| 19 | USBD_Debug_GetHeap@16 | 18 | USBD_Debug_GetHeap@16 |
| 20 | USBD_Debug_LogEntry@16 | 19 | USBD_Debug_LogEntry@16 |
| ... | @@ -30,8 +29,6 @@ USBD_GetUSBDIVersion@4 | ... | @@ -30,8 +29,6 @@ USBD_GetUSBDIVersion@4 |
| 30 | USBD_InitializeDevice@24 | 29 | USBD_InitializeDevice@24 |
| 31 | USBD_MakePdoName@8 | 30 | USBD_MakePdoName@8 |
| 32 | USBD_ParseConfigurationDescriptor@12 | 31 | USBD_ParseConfigurationDescriptor@12 |
| 33 | ; _USBD_ParseConfigurationDescriptorEx@28@28 | ||
| 34 | ; _USBD_ParseDescriptors@16@16 | ||
| 35 | USBD_QueryBusTime@8 | 32 | USBD_QueryBusTime@8 |
| 36 | USBD_RegisterHcDeviceCapabilities@12 | 33 | USBD_RegisterHcDeviceCapabilities@12 |
| 37 | USBD_RegisterHcFilter@8 | 34 | USBD_RegisterHcFilter@8 |
| ... | @@ -40,6 +37,3 @@ USBD_RemoveDevice@12 | ... | @@ -40,6 +37,3 @@ USBD_RemoveDevice@12 |
| 40 | USBD_RestoreDevice@12 | 37 | USBD_RestoreDevice@12 |
| 41 | USBD_SetSuspendPowerState@8 | 38 | USBD_SetSuspendPowerState@8 |
| 42 | USBD_WaitDeviceMutex@4 | 39 | USBD_WaitDeviceMutex@4 |
| 43 | USBD_CreateConfigurationRequestEx@8==_USBD_CreateConfigurationRequestEx@8 | ||
| 44 | USBD_ParseConfigurationDescriptorEx@28==_USBD_ParseConfigurationDescriptorEx@28 | ||
| 45 | USBD_ParseDescriptors@16==_USBD_ParseDescriptors@16 |
lib/libc/mingw/lib32/user32.def+5| ... | @@ -747,6 +747,7 @@ RegisterDeviceNotificationA@12 | ... | @@ -747,6 +747,7 @@ RegisterDeviceNotificationA@12 |
| 747 | RegisterDeviceNotificationW@12 | 747 | RegisterDeviceNotificationW@12 |
| 748 | RegisterErrorReportingDialog@8 | 748 | RegisterErrorReportingDialog@8 |
| 749 | RegisterFrostWindow@8 | 749 | RegisterFrostWindow@8 |
| 750 | RegisterForTooltipDismissNotification@8 | ||
| 750 | RegisterGhostWindow@8 | 751 | RegisterGhostWindow@8 |
| 751 | RegisterHotKey@16 | 752 | RegisterHotKey@16 |
| 752 | RegisterLogonProcess@8 | 753 | RegisterLogonProcess@8 |
| ... | @@ -799,6 +800,7 @@ SendMessageW@16 | ... | @@ -799,6 +800,7 @@ SendMessageW@16 |
| 799 | SendNotifyMessageA@16 | 800 | SendNotifyMessageA@16 |
| 800 | SendNotifyMessageW@16 | 801 | SendNotifyMessageW@16 |
| 801 | SetActiveWindow@4 | 802 | SetActiveWindow@4 |
| 803 | SetAdditionalForegroundBoostProcesses@12 | ||
| 802 | SetCapture@4 | 804 | SetCapture@4 |
| 803 | SetCaretBlinkTime@4 | 805 | SetCaretBlinkTime@4 |
| 804 | SetCaretPos@8 | 806 | SetCaretPos@8 |
| ... | @@ -856,6 +858,7 @@ SetProcessDPIAware@0 | ... | @@ -856,6 +858,7 @@ SetProcessDPIAware@0 |
| 856 | SetProcessDefaultLayout@4 | 858 | SetProcessDefaultLayout@4 |
| 857 | SetProcessDpiAwarenessContext@4 | 859 | SetProcessDpiAwarenessContext@4 |
| 858 | SetProcessDpiAwarenessInternal@4 | 860 | SetProcessDpiAwarenessInternal@4 |
| 861 | SetProcessLaunchForegroundPolicy@8 | ||
| 859 | SetProcessRestrictionExemption@4 | 862 | SetProcessRestrictionExemption@4 |
| 860 | SetProcessWindowStation@4 | 863 | SetProcessWindowStation@4 |
| 861 | SetProgmanWindow@4 | 864 | SetProgmanWindow@4 |
| ... | @@ -913,6 +916,8 @@ SfmDxReleaseSwapChain@8 | ... | @@ -913,6 +916,8 @@ SfmDxReleaseSwapChain@8 |
| 913 | SfmDxReportPendingBindingsToDwm@0 | 916 | SfmDxReportPendingBindingsToDwm@0 |
| 914 | SfmDxSetSwapChainBindingStatus@8 | 917 | SfmDxSetSwapChainBindingStatus@8 |
| 915 | SfmDxSetSwapChainStats@8 | 918 | SfmDxSetSwapChainStats@8 |
| 919 | ShellMigrateWindow@12 | ||
| 920 | ShellSetWindowPos@24 | ||
| 916 | ShowCaret@4 | 921 | ShowCaret@4 |
| 917 | ShowCursor@4 | 922 | ShowCursor@4 |
| 918 | ShowOwnedPopups@8 | 923 | ShowOwnedPopups@8 |
lib/libc/mingw/lib32/winbrand.def created+23| ... | @@ -0,0 +1,23 @@ | ||
| 1 | ; | ||
| 2 | ; Definition file of WINBRAND.dll | ||
| 3 | ; Automatic generated by gendef | ||
| 4 | ; written by Kai Tietz 2008-2014 | ||
| 5 | ; | ||
| 6 | LIBRARY "WINBRAND.dll" | ||
| 7 | EXPORTS | ||
| 8 | BrandingFormatString@4 | ||
| 9 | BrandingFormatStringForEdition@12 | ||
| 10 | BrandingLoadBitmap@8 | ||
| 11 | BrandingLoadCursor@8 | ||
| 12 | BrandingLoadIcon@8 | ||
| 13 | BrandingLoadImage@24 | ||
| 14 | BrandingLoadNeutralStringForEdition@20 | ||
| 15 | BrandingLoadString@16 | ||
| 16 | BrandingLoadStringForEdition@24 | ||
| 17 | EulaFreeBuffer@4 | ||
| 18 | GetEULAFile@20 | ||
| 19 | GetEULAFileEx@24 | ||
| 20 | GetEULAInCurrentUILanguage@4 | ||
| 21 | GetHinstanceByNameSpace@4 | ||
| 22 | GetInstalledEULAPath@4 | ||
| 23 | InstallEULA@16 | ||
lib/libc/mingw/lib32/wintrust.def+37-8| ... | @@ -5,6 +5,7 @@ | ... | @@ -5,6 +5,7 @@ |
| 5 | ; | 5 | ; |
| 6 | LIBRARY "WINTRUST.dll" | 6 | LIBRARY "WINTRUST.dll" |
| 7 | EXPORTS | 7 | EXPORTS |
| 8 | ComputeFirstPageHash@16 | ||
| 8 | CryptCATVerifyMember@12 | 9 | CryptCATVerifyMember@12 |
| 9 | CryptSIPGetInfo@4 | 10 | CryptSIPGetInfo@4 |
| 10 | CryptSIPGetRegWorkingFlags@4 | 11 | CryptSIPGetRegWorkingFlags@4 |
| ... | @@ -17,8 +18,13 @@ SoftpubLoadDefUsageCallData@8 | ... | @@ -17,8 +18,13 @@ SoftpubLoadDefUsageCallData@8 |
| 17 | WTHelperCertFindIssuerCertificate@28 | 18 | WTHelperCertFindIssuerCertificate@28 |
| 18 | AddPersonalTrustDBPages@12 | 19 | AddPersonalTrustDBPages@12 |
| 19 | CatalogCompactHashDatabase@16 | 20 | CatalogCompactHashDatabase@16 |
| 21 | ConfigCiFinalPolicy@4 | ||
| 22 | ConfigCiPackageFamilyNameCheck@12 | ||
| 23 | CryptCATAdminAcquireContext2@20 | ||
| 20 | CryptCATAdminAcquireContext@12 | 24 | CryptCATAdminAcquireContext@12 |
| 21 | CryptCATAdminAddCatalog@16 | 25 | CryptCATAdminAddCatalog@16 |
| 26 | CryptCATAdminCalcHashFromFileHandle2@20 | ||
| 27 | CryptCATAdminCalcHashFromFileHandle3@20 | ||
| 22 | CryptCATAdminCalcHashFromFileHandle@16 | 28 | CryptCATAdminCalcHashFromFileHandle@16 |
| 23 | CryptCATAdminEnumCatalogFromHash@20 | 29 | CryptCATAdminEnumCatalogFromHash@20 |
| 24 | CryptCATAdminPauseServiceForBackup@8 | 30 | CryptCATAdminPauseServiceForBackup@8 |
| ... | @@ -52,16 +58,19 @@ CryptCATPutCatAttrInfo@20 | ... | @@ -52,16 +58,19 @@ CryptCATPutCatAttrInfo@20 |
| 52 | CryptCATPutMemberInfo@28 | 58 | CryptCATPutMemberInfo@28 |
| 53 | CryptCATStoreFromHandle@4 | 59 | CryptCATStoreFromHandle@4 |
| 54 | CryptSIPCreateIndirectData@12 | 60 | CryptSIPCreateIndirectData@12 |
| 61 | CryptSIPGetCaps@8 | ||
| 62 | CryptSIPGetSealedDigest@20 | ||
| 55 | CryptSIPGetSignedDataMsg@20 | 63 | CryptSIPGetSignedDataMsg@20 |
| 56 | CryptSIPPutSignedDataMsg@20 | 64 | CryptSIPPutSignedDataMsg@20 |
| 57 | CryptSIPRemoveSignedDataMsg@8 | 65 | CryptSIPRemoveSignedDataMsg@8 |
| 58 | CryptSIPVerifyIndirectData@8 | 66 | CryptSIPVerifyIndirectData@8 |
| 59 | DllRegisterServer | 67 | ; DllRegisterServer |
| 60 | DllUnregisterServer | 68 | ; DllUnregisterServer |
| 61 | DriverCleanupPolicy@4 | 69 | DriverCleanupPolicy@4 |
| 62 | DriverFinalPolicy@4 | 70 | DriverFinalPolicy@4 |
| 63 | DriverInitializePolicy@4 | 71 | DriverInitializePolicy@4 |
| 64 | FindCertsByIssuer@28 | 72 | FindCertsByIssuer@28 |
| 73 | GetAuthenticodeSha256Hash@12 | ||
| 65 | HTTPSFinalProv@4 | 74 | HTTPSFinalProv@4 |
| 66 | IsCatalogFile@8 | 75 | IsCatalogFile@8 |
| 67 | MsCatConstructHashTag@12 | 76 | MsCatConstructHashTag@12 |
| ... | @@ -73,17 +82,22 @@ OpenPersonalTrustDBDialogEx@12 | ... | @@ -73,17 +82,22 @@ OpenPersonalTrustDBDialogEx@12 |
| 73 | SoftpubAuthenticode@4 | 82 | SoftpubAuthenticode@4 |
| 74 | SoftpubCheckCert@16 | 83 | SoftpubCheckCert@16 |
| 75 | SoftpubCleanup@4 | 84 | SoftpubCleanup@4 |
| 76 | SoftpubDllRegisterServer | 85 | SoftpubDllRegisterServer@0 |
| 77 | SoftpubDllUnregisterServer | 86 | SoftpubDllUnregisterServer@0 |
| 78 | SoftpubDumpStructure@4 | 87 | SoftpubDumpStructure@4 |
| 79 | SoftpubInitialize@4 | 88 | SoftpubInitialize@4 |
| 80 | SoftpubLoadMessage@4 | 89 | SoftpubLoadMessage@4 |
| 81 | SoftpubLoadSignature@4 | 90 | SoftpubLoadSignature@4 |
| 91 | SrpCheckSmartlockerEAandProcessToken@12 | ||
| 82 | TrustDecode@36 | 92 | TrustDecode@36 |
| 83 | TrustFindIssuerCertificate@32 | 93 | TrustFindIssuerCertificate@32 |
| 84 | TrustFreeDecode@8 | 94 | TrustFreeDecode@8 |
| 85 | TrustIsCertificateSelfSigned@12 | 95 | TrustIsCertificateSelfSigned@12 |
| 86 | TrustOpenStores@16 | 96 | TrustOpenStores@16 |
| 97 | WTConvertCertCtxToChainInfo@12 | ||
| 98 | WTGetBioSignatureInfo@24 | ||
| 99 | WTGetPluginSignatureInfo@24 | ||
| 100 | WTGetSignatureInfo@24 | ||
| 87 | WTHelperCertCheckValidSignature@4 | 101 | WTHelperCertCheckValidSignature@4 |
| 88 | WTHelperCertIsSelfSigned@8 | 102 | WTHelperCertIsSelfSigned@8 |
| 89 | WTHelperCheckCertUsage@8 | 103 | WTHelperCheckCertUsage@8 |
| ... | @@ -95,13 +109,27 @@ WTHelperGetKnownUsages@8 | ... | @@ -95,13 +109,27 @@ WTHelperGetKnownUsages@8 |
| 95 | WTHelperGetProvCertFromChain@8 | 109 | WTHelperGetProvCertFromChain@8 |
| 96 | WTHelperGetProvPrivateDataFromChain@8 | 110 | WTHelperGetProvPrivateDataFromChain@8 |
| 97 | WTHelperGetProvSignerFromChain@16 | 111 | WTHelperGetProvSignerFromChain@16 |
| 112 | WTHelperIsChainedToMicrosoft@12 | ||
| 113 | WTHelperIsChainedToMicrosoftFromStateData@8 | ||
| 98 | WTHelperIsInRootStore@8 | 114 | WTHelperIsInRootStore@8 |
| 99 | WTHelperOpenKnownStores@4 | 115 | WTHelperOpenKnownStores@4 |
| 100 | WTHelperProvDataFromStateData@4 | 116 | WTHelperProvDataFromStateData@4 |
| 117 | WTIsFirstConfigCiResultPreferred@12 | ||
| 118 | WTLogConfigCiScriptEvent@20 | ||
| 119 | WTLogConfigCiSignerEvent@16 | ||
| 120 | WTValidateBioSignaturePolicy@8 | ||
| 121 | WVTAsn1CatMemberInfo2Decode@28 | ||
| 122 | WVTAsn1CatMemberInfo2Encode@20 | ||
| 101 | WVTAsn1CatMemberInfoDecode@28 | 123 | WVTAsn1CatMemberInfoDecode@28 |
| 102 | WVTAsn1CatMemberInfoEncode@20 | 124 | WVTAsn1CatMemberInfoEncode@20 |
| 103 | WVTAsn1CatNameValueDecode@28 | 125 | WVTAsn1CatNameValueDecode@28 |
| 104 | WVTAsn1CatNameValueEncode@20 | 126 | WVTAsn1CatNameValueEncode@20 |
| 127 | WVTAsn1IntentToSealAttributeDecode@28 | ||
| 128 | WVTAsn1IntentToSealAttributeEncode@20 | ||
| 129 | WVTAsn1SealingSignatureAttributeDecode@28 | ||
| 130 | WVTAsn1SealingSignatureAttributeEncode@20 | ||
| 131 | WVTAsn1SealingTimestampAttributeDecode@28 | ||
| 132 | WVTAsn1SealingTimestampAttributeEncode@20 | ||
| 105 | WVTAsn1SpcFinancialCriteriaInfoDecode@28 | 133 | WVTAsn1SpcFinancialCriteriaInfoDecode@28 |
| 106 | WVTAsn1SpcFinancialCriteriaInfoEncode@20 | 134 | WVTAsn1SpcFinancialCriteriaInfoEncode@20 |
| 107 | WVTAsn1SpcIndirectDataContentDecode@28 | 135 | WVTAsn1SpcIndirectDataContentDecode@28 |
| ... | @@ -131,7 +159,8 @@ WintrustLoadFunctionPointers@8 | ... | @@ -131,7 +159,8 @@ WintrustLoadFunctionPointers@8 |
| 131 | WintrustRemoveActionID@4 | 159 | WintrustRemoveActionID@4 |
| 132 | WintrustSetDefaultIncludePEPageHashes@4 | 160 | WintrustSetDefaultIncludePEPageHashes@4 |
| 133 | WintrustSetRegPolicyFlags@4 | 161 | WintrustSetRegPolicyFlags@4 |
| 134 | mscat32DllRegisterServer | 162 | WintrustUserWriteabilityCheck@4 |
| 135 | mscat32DllUnregisterServer | 163 | mscat32DllRegisterServer@0 |
| 136 | mssip32DllRegisterServer | 164 | mscat32DllUnregisterServer@0 |
| 137 | mssip32DllUnregisterServer | 165 | mssip32DllRegisterServer@0 |
| 166 | mssip32DllUnregisterServer@0 |
lib/libc/mingw/lib32/wscapi.def created+48| ... | @@ -0,0 +1,48 @@ | ||
| 1 | ; | ||
| 2 | ; Definition file of WSCAPI.dll | ||
| 3 | ; Automatic generated by gendef | ||
| 4 | ; written by Kai Tietz 2008-2014 | ||
| 5 | ; | ||
| 6 | LIBRARY "WSCAPI.dll" | ||
| 7 | EXPORTS | ||
| 8 | wscLaunchAdminMakeDefaultUI@4 | ||
| 9 | wscShowAMSCN@8 | ||
| 10 | CLSID_WSCDefaultProduct DATA | ||
| 11 | CLSID_WSCProductList DATA | ||
| 12 | ; DllCanUnloadNow@0 | ||
| 13 | ; DllGetClassObject@12 | ||
| 14 | IID_IWSCDefaultProduct DATA | ||
| 15 | IID_IWSCProductList DATA | ||
| 16 | IID_IWscProduct DATA | ||
| 17 | LIBID_wscAPILib DATA | ||
| 18 | WscGetAntiMalwareUri@4 | ||
| 19 | WscGetSecurityProviderHealth@8 | ||
| 20 | WscQueryAntiMalwareUri@0 | ||
| 21 | WscRegisterForChanges@16 | ||
| 22 | WscRegisterForUserNotifications@0 | ||
| 23 | WscUnRegisterChanges@4 | ||
| 24 | wscAntiSpywareGetStatus@8 | ||
| 25 | wscAntiVirusExpiredBeyondThreshold@12 | ||
| 26 | wscAntiVirusGetStatus@8 | ||
| 27 | wscAutoUpdatesEnableScheduledMode@0 | ||
| 28 | wscAutoUpdatesGetStatus@4 | ||
| 29 | wscFirewallGetStatus@8 | ||
| 30 | wscGeneralSecurityGetStatus@8 | ||
| 31 | wscGetAlertStatus@8 | ||
| 32 | wscIcfEnable@0 | ||
| 33 | wscIeSettingsFix@0 | ||
| 34 | wscInitiateOfflineCleaning@8 | ||
| 35 | wscIsDefenderAntivirusSupported@4 | ||
| 36 | wscLuaSettingsFix@4 | ||
| 37 | wscMakeDefaultProductRequest@4 | ||
| 38 | wscNotifyUserForNearExpiration@4 | ||
| 39 | wscOverrideComponentStatus@8 | ||
| 40 | wscPing@0 | ||
| 41 | wscProductInfoFree@8 | ||
| 42 | wscRegisterChangeNotification@8 | ||
| 43 | wscRegisterSecurityProduct@20 | ||
| 44 | wscSetDefaultProduct@8 | ||
| 45 | wscUnRegisterChangeNotification@4 | ||
| 46 | wscUnregisterSecurityProduct@4 | ||
| 47 | wscUpdateProductStatus@12 | ||
| 48 | wscUpdateProductSubStatus@8 | ||
lib/libc/mingw/lib32/x3daudio1_2.def+2-4| ... | @@ -5,7 +5,5 @@ | ... | @@ -5,7 +5,5 @@ |
| 5 | ; | 5 | ; |
| 6 | LIBRARY "X3DAudio1_2.dll" | 6 | LIBRARY "X3DAudio1_2.dll" |
| 7 | EXPORTS | 7 | EXPORTS |
| 8 | ;_X3DAudioCalculate@20@20 | 8 | X3DAudioCalculate@20 == _X3DAudioCalculate@20 |
| 9 | ;_X3DAudioInitialize@12@12 | 9 | X3DAudioInitialize@12 == _X3DAudioInitialize@12 |
| 10 | _X3DAudioCalculate@20 == _X3DAudioCalculate@20 | ||
| 11 | _X3DAudioInitialize@12 == _X3DAudioInitialize@12 |
lib/libc/mingw/lib32/xaudio2_9.def+2-2| ... | @@ -9,8 +9,8 @@ XAudio2Create@12 | ... | @@ -9,8 +9,8 @@ XAudio2Create@12 |
| 9 | CreateAudioReverb@4 | 9 | CreateAudioReverb@4 |
| 10 | CreateAudioVolumeMeter@4 | 10 | CreateAudioVolumeMeter@4 |
| 11 | CreateFX@0 | 11 | CreateFX@0 |
| 12 | X3DAudioCalculate@0 | 12 | X3DAudioCalculate |
| 13 | X3DAudioInitialize@0 | 13 | X3DAudioInitialize |
| 14 | CreateAudioReverbV2_8@4 | 14 | CreateAudioReverbV2_8@4 |
| 15 | XAudio2CreateV2_9@12 | 15 | XAudio2CreateV2_9@12 |
| 16 | XAudio2CreateWithVersionInfo@16 | 16 | XAudio2CreateWithVersionInfo@16 |
lib/libc/mingw/lib64/kernel32.def created+1740| ... | @@ -0,0 +1,1740 @@ | ||
| 1 | |||
| 2 | LIBRARY "KERNEL32.dll" | ||
| 3 | EXPORTS | ||
| 4 | AcquireSRWLockExclusive | ||
| 5 | AcquireSRWLockShared | ||
| 6 | ActivateActCtx | ||
| 7 | ActivateActCtxWorker | ||
| 8 | ActivatePackageVirtualizationContext | ||
| 9 | AddAtomA | ||
| 10 | AddAtomW | ||
| 11 | AddConsoleAliasA | ||
| 12 | AddConsoleAliasW | ||
| 13 | AddDllDirectory | ||
| 14 | AddIntegrityLabelToBoundaryDescriptor | ||
| 15 | AddLocalAlternateComputerNameA | ||
| 16 | AddLocalAlternateComputerNameW | ||
| 17 | AddRefActCtx | ||
| 18 | AddRefActCtxWorker | ||
| 19 | AddResourceAttributeAce | ||
| 20 | AddSIDToBoundaryDescriptor | ||
| 21 | AddScopedPolicyIDAce | ||
| 22 | AddSecureMemoryCacheCallback | ||
| 23 | AddVectoredContinueHandler | ||
| 24 | AddVectoredExceptionHandler | ||
| 25 | AdjustCalendarDate | ||
| 26 | AllocConsole | ||
| 27 | AllocateUserPhysicalPages | ||
| 28 | AllocateUserPhysicalPagesNuma | ||
| 29 | AppPolicyGetClrCompat | ||
| 30 | AppPolicyGetCreateFileAccess | ||
| 31 | AppPolicyGetLifecycleManagement | ||
| 32 | AppPolicyGetMediaFoundationCodecLoading | ||
| 33 | AppPolicyGetProcessTerminationMethod | ||
| 34 | AppPolicyGetShowDeveloperDiagnostic | ||
| 35 | AppPolicyGetThreadInitializationType | ||
| 36 | AppPolicyGetWindowingModel | ||
| 37 | AppXGetOSMaxVersionTested | ||
| 38 | ApplicationRecoveryFinished | ||
| 39 | ApplicationRecoveryInProgress | ||
| 40 | AreFileApisANSI | ||
| 41 | AreShortNamesEnabled | ||
| 42 | AssignProcessToJobObject | ||
| 43 | AttachConsole | ||
| 44 | BackupRead | ||
| 45 | BackupSeek | ||
| 46 | BackupWrite | ||
| 47 | BaseCheckAppcompatCache | ||
| 48 | BaseCheckAppcompatCacheEx | ||
| 49 | BaseCheckAppcompatCacheExWorker | ||
| 50 | BaseCheckAppcompatCacheWorker | ||
| 51 | BaseCheckElevation | ||
| 52 | BaseCheckRunApp | ||
| 53 | BaseCleanupAppcompatCacheSupport | ||
| 54 | BaseCleanupAppcompatCacheSupportWorker | ||
| 55 | BaseDestroyVDMEnvironment | ||
| 56 | BaseDllReadWriteIniFile | ||
| 57 | BaseDumpAppcompatCache | ||
| 58 | BaseDumpAppcompatCacheWorker | ||
| 59 | BaseElevationPostProcessing | ||
| 60 | BaseFlushAppcompatCache | ||
| 61 | BaseFlushAppcompatCacheWorker | ||
| 62 | BaseFormatObjectAttributes | ||
| 63 | BaseFormatTimeOut | ||
| 64 | BaseFreeAppCompatDataForProcessWorker | ||
| 65 | BaseGenerateAppCompatData | ||
| 66 | BaseGetNamedObjectDirectory | ||
| 67 | BaseInitAppcompatCacheSupport | ||
| 68 | BaseInitAppcompatCacheSupportWorker | ||
| 69 | BaseIsAppcompatInfrastructureDisabled | ||
| 70 | BaseIsAppcompatInfrastructureDisabledWorker | ||
| 71 | BaseIsDosApplication | ||
| 72 | BaseProcessInitPostImport | ||
| 73 | BaseProcessStart | ||
| 74 | BaseQueryModuleData | ||
| 75 | BaseReadAppCompatDataForProcessWorker | ||
| 76 | BaseThreadStart | ||
| 77 | BaseSetLastNTError | ||
| 78 | BaseThreadInitThunk | ||
| 79 | BaseUpdateAppcompatCache | ||
| 80 | BaseUpdateAppcompatCacheWorker | ||
| 81 | BaseUpdateVDMEntry | ||
| 82 | BaseVerifyUnicodeString | ||
| 83 | BaseWriteErrorElevationRequiredEvent | ||
| 84 | Basep8BitStringToDynamicUnicodeString | ||
| 85 | BasepAllocateActivationContextActivationBlock | ||
| 86 | BasepAnsiStringToDynamicUnicodeString | ||
| 87 | BasepAppContainerEnvironmentExtension | ||
| 88 | BasepAppXExtension | ||
| 89 | BasepCheckAppCompat | ||
| 90 | BasepCheckBadapp | ||
| 91 | BasepCheckWebBladeHashes | ||
| 92 | BasepCheckWinSaferRestrictions | ||
| 93 | BasepConstructSxsCreateProcessMessage | ||
| 94 | BasepCopyEncryption | ||
| 95 | BasepFreeActivationContextActivationBlock | ||
| 96 | BasepFreeAppCompatData | ||
| 97 | BasepGetAppCompatData | ||
| 98 | BasepGetComputerNameFromNtPath | ||
| 99 | BasepGetExeArchType | ||
| 100 | BasepInitAppCompatData | ||
| 101 | BasepIsProcessAllowed | ||
| 102 | BasepMapModuleHandle | ||
| 103 | BasepNotifyLoadStringResource | ||
| 104 | BasepPostSuccessAppXExtension | ||
| 105 | BasepProcessInvalidImage | ||
| 106 | BasepQueryAppCompat | ||
| 107 | BasepQueryModuleChpeSettings | ||
| 108 | BasepReleaseAppXContext | ||
| 109 | BasepReleaseSxsCreateProcessUtilityStruct | ||
| 110 | BasepReportFault | ||
| 111 | BasepSetFileEncryptionCompression | ||
| 112 | Beep | ||
| 113 | BeginUpdateResourceA | ||
| 114 | BeginUpdateResourceW | ||
| 115 | BindIoCompletionCallback | ||
| 116 | BuildCommDCBA | ||
| 117 | BuildCommDCBAndTimeoutsA | ||
| 118 | BuildCommDCBAndTimeoutsW | ||
| 119 | BuildCommDCBW | ||
| 120 | BuildIoRingCancelRequest | ||
| 121 | BuildIoRingFlushFile | ||
| 122 | BuildIoRingReadFile | ||
| 123 | BuildIoRingReadFileScatter | ||
| 124 | BuildIoRingRegisterBuffers | ||
| 125 | BuildIoRingRegisterFileHandles | ||
| 126 | BuildIoRingWriteFile | ||
| 127 | BuildIoRingWriteFileGather | ||
| 128 | CallNamedPipeA | ||
| 129 | CallNamedPipeW | ||
| 130 | CallbackMayRunLong | ||
| 131 | CalloutOnFiberStack | ||
| 132 | CancelDeviceWakeupRequest | ||
| 133 | CancelIo | ||
| 134 | CancelIoEx | ||
| 135 | CancelSynchronousIo | ||
| 136 | CancelThreadpoolIo | ||
| 137 | CancelTimerQueueTimer | ||
| 138 | CancelWaitableTimer | ||
| 139 | CeipIsOptedIn | ||
| 140 | ChangeTimerQueueTimer | ||
| 141 | CheckAllowDecryptedRemoteDestinationPolicy | ||
| 142 | CheckElevation | ||
| 143 | CheckElevationEnabled | ||
| 144 | CheckForReadOnlyResource | ||
| 145 | CheckForReadOnlyResourceFilter | ||
| 146 | CheckNameLegalDOS8Dot3A | ||
| 147 | CheckNameLegalDOS8Dot3W | ||
| 148 | CheckRemoteDebuggerPresent | ||
| 149 | CheckTokenCapability | ||
| 150 | CheckTokenMembershipEx | ||
| 151 | ClearCommBreak | ||
| 152 | ClearCommError | ||
| 153 | CloseConsoleHandle | ||
| 154 | CloseHandle | ||
| 155 | CloseIoRing | ||
| 156 | ClosePackageInfo | ||
| 157 | ClosePrivateNamespace | ||
| 158 | CloseProfileUserMapping | ||
| 159 | ClosePseudoConsole | ||
| 160 | CloseState | ||
| 161 | CloseThreadpool | ||
| 162 | CloseThreadpoolCleanupGroup | ||
| 163 | CloseThreadpoolCleanupGroupMembers | ||
| 164 | CloseThreadpoolIo | ||
| 165 | CloseThreadpoolTimer | ||
| 166 | CloseThreadpoolWait | ||
| 167 | CloseThreadpoolWork | ||
| 168 | CmdBatNotification | ||
| 169 | CommConfigDialogA | ||
| 170 | CommConfigDialogW | ||
| 171 | CompareCalendarDates | ||
| 172 | CompareFileTime | ||
| 173 | CompareStringA | ||
| 174 | CompareStringEx | ||
| 175 | CompareStringOrdinal | ||
| 176 | CompareStringW | ||
| 177 | ConnectNamedPipe | ||
| 178 | ConsoleIMERoutine | ||
| 179 | ConsoleMenuControl | ||
| 180 | ContinueDebugEvent | ||
| 181 | ConvertCalDateTimeToSystemTime | ||
| 182 | ConvertDefaultLocale | ||
| 183 | ConvertFiberToThread | ||
| 184 | ConvertNLSDayOfWeekToWin32DayOfWeek | ||
| 185 | ConvertSystemTimeToCalDateTime | ||
| 186 | ConvertThreadToFiber | ||
| 187 | ConvertThreadToFiberEx | ||
| 188 | CopyContext | ||
| 189 | CopyExtendedContext | ||
| 190 | CopyFile2 | ||
| 191 | CopyFileA | ||
| 192 | CopyFileExA | ||
| 193 | CopyFileExW | ||
| 194 | CopyFileTransactedA | ||
| 195 | CopyFileTransactedW | ||
| 196 | CopyFileW | ||
| 197 | CopyLZFile | ||
| 198 | CreateActCtxA | ||
| 199 | CreateActCtxW | ||
| 200 | CreateActCtxWWorker | ||
| 201 | CreateBoundaryDescriptorA | ||
| 202 | CreateBoundaryDescriptorW | ||
| 203 | CreateConsoleScreenBuffer | ||
| 204 | CreateDirectoryA | ||
| 205 | CreateDirectoryExA | ||
| 206 | CreateDirectoryExW | ||
| 207 | CreateDirectoryTransactedA | ||
| 208 | CreateDirectoryTransactedW | ||
| 209 | CreateDirectoryW | ||
| 210 | CreateEnclave | ||
| 211 | CreateEventA | ||
| 212 | CreateEventExA | ||
| 213 | CreateEventExW | ||
| 214 | CreateEventW | ||
| 215 | CreateFiber | ||
| 216 | CreateFiberEx | ||
| 217 | CreateFile2 | ||
| 218 | CreateFileA | ||
| 219 | CreateFileMappingA | ||
| 220 | CreateFileMappingFromApp | ||
| 221 | CreateFileMappingNumaA | ||
| 222 | CreateFileMappingNumaW | ||
| 223 | CreateFileMappingW | ||
| 224 | CreateFileTransactedA | ||
| 225 | CreateFileTransactedW | ||
| 226 | CreateFileW | ||
| 227 | CreateHardLinkA | ||
| 228 | CreateHardLinkTransactedA | ||
| 229 | CreateHardLinkTransactedW | ||
| 230 | CreateHardLinkW | ||
| 231 | CreateIoCompletionPort | ||
| 232 | CreateIoRing | ||
| 233 | CreateJobObjectA | ||
| 234 | CreateJobObjectW | ||
| 235 | CreateJobSet | ||
| 236 | CreateMailslotA | ||
| 237 | CreateMailslotW | ||
| 238 | CreateMemoryResourceNotification | ||
| 239 | CreateMutexA | ||
| 240 | CreateMutexExA | ||
| 241 | CreateMutexExW | ||
| 242 | CreateMutexW | ||
| 243 | CreateNamedPipeA | ||
| 244 | CreateNamedPipeW | ||
| 245 | CreateNlsSecurityDescriptor | ||
| 246 | CreatePackageVirtualizationContext | ||
| 247 | CreatePipe | ||
| 248 | CreatePrivateNamespaceA | ||
| 249 | CreatePrivateNamespaceW | ||
| 250 | CreateProcessA | ||
| 251 | ; MSDN says these are exported from ADVAPI32.DLL. | ||
| 252 | ; CreateProcessAsUserA | ||
| 253 | ; CreateProcessAsUserW | ||
| 254 | CreateProcessInternalA | ||
| 255 | CreateProcessInternalW | ||
| 256 | CreateProcessW | ||
| 257 | CreatePseudoConsole | ||
| 258 | CreateRemoteThread | ||
| 259 | CreateRemoteThreadEx | ||
| 260 | CreateSemaphoreA | ||
| 261 | CreateSemaphoreExA | ||
| 262 | CreateSemaphoreExW | ||
| 263 | CreateSemaphoreW | ||
| 264 | CreateSymbolicLinkA | ||
| 265 | CreateSymbolicLinkTransactedA | ||
| 266 | CreateSymbolicLinkTransactedW | ||
| 267 | CreateSymbolicLinkW | ||
| 268 | CreateTapePartition | ||
| 269 | CreateThread | ||
| 270 | CreateThreadpool | ||
| 271 | CreateThreadpoolCleanupGroup | ||
| 272 | CreateThreadpoolIo | ||
| 273 | CreateThreadpoolTimer | ||
| 274 | CreateThreadpoolWait | ||
| 275 | CreateThreadpoolWork | ||
| 276 | CreateTimerQueue | ||
| 277 | CreateTimerQueueTimer | ||
| 278 | CreateToolhelp32Snapshot | ||
| 279 | CreateUmsCompletionList | ||
| 280 | CreateUmsThreadContext | ||
| 281 | CreateWaitableTimerA | ||
| 282 | CreateWaitableTimerExA | ||
| 283 | CreateWaitableTimerExW | ||
| 284 | CreateWaitableTimerW | ||
| 285 | CtrlRoutine | ||
| 286 | DeactivateActCtx | ||
| 287 | DeactivateActCtxWorker | ||
| 288 | DeactivatePackageVirtualizationContext | ||
| 289 | DebugActiveProcess | ||
| 290 | DebugActiveProcessStop | ||
| 291 | DebugBreak | ||
| 292 | DebugBreakProcess | ||
| 293 | DebugSetProcessKillOnExit | ||
| 294 | DecodePointer | ||
| 295 | DecodeSystemPointer | ||
| 296 | DefineDosDeviceA | ||
| 297 | DefineDosDeviceW | ||
| 298 | DelayLoadFailureHook | ||
| 299 | DeleteAtom | ||
| 300 | DeleteBoundaryDescriptor | ||
| 301 | DeleteCriticalSection | ||
| 302 | DeleteFiber | ||
| 303 | DeleteFileA | ||
| 304 | DeleteFileTransactedA | ||
| 305 | DeleteFileTransactedW | ||
| 306 | DeleteFileW | ||
| 307 | DeleteProcThreadAttributeList | ||
| 308 | DeleteSynchronizationBarrier | ||
| 309 | DeleteTimerQueue | ||
| 310 | DeleteTimerQueueEx | ||
| 311 | DeleteTimerQueueTimer | ||
| 312 | DeleteUmsCompletionList | ||
| 313 | DeleteUmsThreadContext | ||
| 314 | DeleteVolumeMountPointA | ||
| 315 | DeleteVolumeMountPointW | ||
| 316 | DequeueUmsCompletionListItems | ||
| 317 | DeviceIoControl | ||
| 318 | DisableThreadLibraryCalls | ||
| 319 | DisableThreadProfiling | ||
| 320 | DisassociateCurrentThreadFromCallback | ||
| 321 | DiscardVirtualMemory | ||
| 322 | DisconnectNamedPipe | ||
| 323 | DnsHostnameToComputerNameA | ||
| 324 | DnsHostnameToComputerNameExW | ||
| 325 | DnsHostnameToComputerNameW | ||
| 326 | DosDateTimeToFileTime | ||
| 327 | DosPathToSessionPathA | ||
| 328 | DosPathToSessionPathW | ||
| 329 | DuplicateConsoleHandle | ||
| 330 | DuplicateEncryptionInfoFileExt | ||
| 331 | DuplicateHandle | ||
| 332 | DuplicatePackageVirtualizationContext | ||
| 333 | EnableProcessOptionalXStateFeatures | ||
| 334 | EnableThreadProfiling | ||
| 335 | EncodePointer | ||
| 336 | EncodeSystemPointer | ||
| 337 | EndUpdateResourceA | ||
| 338 | EndUpdateResourceW | ||
| 339 | EnterCriticalSection | ||
| 340 | EnterUmsSchedulingMode | ||
| 341 | EnterSynchronizationBarrier | ||
| 342 | EnumCalendarInfoA | ||
| 343 | EnumCalendarInfoExA | ||
| 344 | EnumCalendarInfoExEx | ||
| 345 | EnumCalendarInfoExW | ||
| 346 | EnumCalendarInfoW | ||
| 347 | EnumDateFormatsA | ||
| 348 | EnumDateFormatsExA | ||
| 349 | EnumDateFormatsExEx | ||
| 350 | EnumDateFormatsExW | ||
| 351 | EnumDateFormatsW | ||
| 352 | EnumLanguageGroupLocalesA | ||
| 353 | EnumLanguageGroupLocalesW | ||
| 354 | EnumResourceLanguagesA | ||
| 355 | EnumResourceLanguagesExA | ||
| 356 | EnumResourceLanguagesExW | ||
| 357 | EnumResourceLanguagesW | ||
| 358 | EnumResourceNamesA | ||
| 359 | EnumResourceNamesExA | ||
| 360 | EnumResourceNamesExW | ||
| 361 | EnumResourceNamesW | ||
| 362 | EnumResourceTypesA | ||
| 363 | EnumResourceTypesExA | ||
| 364 | EnumResourceTypesExW | ||
| 365 | EnumResourceTypesW | ||
| 366 | EnumSystemCodePagesA | ||
| 367 | EnumSystemCodePagesW | ||
| 368 | EnumSystemFirmwareTables | ||
| 369 | EnumSystemGeoID | ||
| 370 | EnumSystemGeoNames | ||
| 371 | EnumSystemLanguageGroupsA | ||
| 372 | EnumSystemLanguageGroupsW | ||
| 373 | EnumSystemLocalesA | ||
| 374 | EnumSystemLocalesEx | ||
| 375 | EnumSystemLocalesW | ||
| 376 | EnumTimeFormatsA | ||
| 377 | EnumTimeFormatsEx | ||
| 378 | EnumTimeFormatsW | ||
| 379 | EnumUILanguagesA | ||
| 380 | EnumUILanguagesW | ||
| 381 | EnumerateLocalComputerNamesA | ||
| 382 | EnumerateLocalComputerNamesW | ||
| 383 | EraseTape | ||
| 384 | EscapeCommFunction | ||
| 385 | ExecuteUmsThread | ||
| 386 | ExitProcess | ||
| 387 | ExitThread | ||
| 388 | ExitVDM | ||
| 389 | ExpandEnvironmentStringsA | ||
| 390 | ExpandEnvironmentStringsW | ||
| 391 | ExpungeConsoleCommandHistoryA | ||
| 392 | ExpungeConsoleCommandHistoryW | ||
| 393 | FatalAppExitA | ||
| 394 | FatalAppExitW | ||
| 395 | FatalExit | ||
| 396 | FileTimeToDosDateTime | ||
| 397 | FileTimeToLocalFileTime | ||
| 398 | FileTimeToSystemTime | ||
| 399 | FillConsoleOutputAttribute | ||
| 400 | FillConsoleOutputCharacterA | ||
| 401 | FillConsoleOutputCharacterW | ||
| 402 | FindActCtxSectionGuid | ||
| 403 | FindActCtxSectionGuidWorker | ||
| 404 | FindActCtxSectionStringA | ||
| 405 | FindActCtxSectionStringW | ||
| 406 | FindActCtxSectionStringWWorker | ||
| 407 | FindAtomA | ||
| 408 | FindAtomW | ||
| 409 | FindClose | ||
| 410 | FindCloseChangeNotification | ||
| 411 | FindFirstChangeNotificationA | ||
| 412 | FindFirstChangeNotificationW | ||
| 413 | FindFirstFileA | ||
| 414 | FindFirstFileExA | ||
| 415 | FindFirstFileExW | ||
| 416 | FindFirstFileNameTransactedW | ||
| 417 | FindFirstFileNameW | ||
| 418 | FindFirstFileTransactedA | ||
| 419 | FindFirstFileTransactedW | ||
| 420 | FindFirstFileW | ||
| 421 | FindFirstStreamTransactedW | ||
| 422 | FindFirstStreamW | ||
| 423 | FindFirstVolumeA | ||
| 424 | FindFirstVolumeMountPointA | ||
| 425 | FindFirstVolumeMountPointW | ||
| 426 | FindFirstVolumeW | ||
| 427 | FindNLSString | ||
| 428 | FindNLSStringEx | ||
| 429 | FindNextChangeNotification | ||
| 430 | FindNextFileA | ||
| 431 | FindNextFileNameW | ||
| 432 | FindNextFileW | ||
| 433 | FindNextStreamW | ||
| 434 | FindNextVolumeA | ||
| 435 | FindNextVolumeMountPointA | ||
| 436 | FindNextVolumeMountPointW | ||
| 437 | FindNextVolumeW | ||
| 438 | FindPackagesByPackageFamily | ||
| 439 | FindResourceA | ||
| 440 | FindResourceExA | ||
| 441 | FindResourceExW | ||
| 442 | FindResourceW | ||
| 443 | FindStringOrdinal | ||
| 444 | FindVolumeClose | ||
| 445 | FindVolumeMountPointClose | ||
| 446 | FlsAlloc | ||
| 447 | FlsFree | ||
| 448 | FlsGetValue | ||
| 449 | FlsSetValue | ||
| 450 | FlushConsoleInputBuffer | ||
| 451 | FlushFileBuffers | ||
| 452 | FlushInstructionCache | ||
| 453 | FlushProcessWriteBuffers | ||
| 454 | FlushViewOfFile | ||
| 455 | FoldStringA | ||
| 456 | FoldStringW | ||
| 457 | FormatApplicationUserModelId | ||
| 458 | FormatMessageA | ||
| 459 | FormatMessageW | ||
| 460 | FreeConsole | ||
| 461 | FreeEnvironmentStringsA | ||
| 462 | FreeEnvironmentStringsW | ||
| 463 | FreeLibrary | ||
| 464 | FreeLibraryAndExitThread | ||
| 465 | FreeLibraryWhenCallbackReturns | ||
| 466 | FreeMemoryJobObject | ||
| 467 | FreeResource | ||
| 468 | FreeUserPhysicalPages | ||
| 469 | GenerateConsoleCtrlEvent | ||
| 470 | GetACP | ||
| 471 | GetActiveProcessorCount | ||
| 472 | GetActiveProcessorGroupCount | ||
| 473 | GetAppContainerAce | ||
| 474 | GetAppContainerNamedObjectPath | ||
| 475 | GetApplicationRecoveryCallback | ||
| 476 | GetApplicationRecoveryCallbackWorker | ||
| 477 | GetApplicationRestartSettings | ||
| 478 | GetApplicationRestartSettingsWorker | ||
| 479 | GetApplicationUserModelId | ||
| 480 | GetAtomNameA | ||
| 481 | GetAtomNameW | ||
| 482 | GetBinaryType | ||
| 483 | GetBinaryTypeA | ||
| 484 | GetBinaryTypeW | ||
| 485 | GetCPFileNameFromRegistry | ||
| 486 | GetCPInfo | ||
| 487 | GetCPInfoExA | ||
| 488 | GetCPInfoExW | ||
| 489 | GetCachedSigningLevel | ||
| 490 | GetCalendarDateFormat | ||
| 491 | GetCalendarDateFormatEx | ||
| 492 | GetCalendarDaysInMonth | ||
| 493 | GetCalendarDifferenceInDays | ||
| 494 | GetCalendarInfoA | ||
| 495 | GetCalendarInfoEx | ||
| 496 | GetCalendarInfoW | ||
| 497 | GetCalendarMonthsInYear | ||
| 498 | GetCalendarSupportedDateRange | ||
| 499 | GetCalendarWeekNumber | ||
| 500 | GetComPlusPackageInstallStatus | ||
| 501 | GetCommConfig | ||
| 502 | GetCommMask | ||
| 503 | GetCommModemStatus | ||
| 504 | GetCommProperties | ||
| 505 | GetCommState | ||
| 506 | GetCommTimeouts | ||
| 507 | GetCommandLineA | ||
| 508 | GetCommandLineW | ||
| 509 | GetCompressedFileSizeA | ||
| 510 | GetCompressedFileSizeTransactedA | ||
| 511 | GetCompressedFileSizeTransactedW | ||
| 512 | GetCompressedFileSizeW | ||
| 513 | GetComputerNameA | ||
| 514 | GetComputerNameExA | ||
| 515 | GetComputerNameExW | ||
| 516 | GetComputerNameW | ||
| 517 | GetConsoleAliasA | ||
| 518 | GetConsoleAliasExesA | ||
| 519 | GetConsoleAliasExesLengthA | ||
| 520 | GetConsoleAliasExesLengthW | ||
| 521 | GetConsoleAliasExesW | ||
| 522 | GetConsoleAliasW | ||
| 523 | GetConsoleAliasesA | ||
| 524 | GetConsoleAliasesLengthA | ||
| 525 | GetConsoleAliasesLengthW | ||
| 526 | GetConsoleAliasesW | ||
| 527 | GetConsoleCP | ||
| 528 | GetConsoleCharType | ||
| 529 | GetConsoleCommandHistoryA | ||
| 530 | GetConsoleCommandHistoryLengthA | ||
| 531 | GetConsoleCommandHistoryLengthW | ||
| 532 | GetConsoleCommandHistoryW | ||
| 533 | GetConsoleCursorInfo | ||
| 534 | GetConsoleCursorMode | ||
| 535 | GetConsoleDisplayMode | ||
| 536 | GetConsoleFontInfo | ||
| 537 | GetConsoleFontSize | ||
| 538 | GetConsoleHardwareState | ||
| 539 | GetConsoleHistoryInfo | ||
| 540 | GetConsoleInputExeNameA | ||
| 541 | GetConsoleInputExeNameW | ||
| 542 | GetConsoleInputWaitHandle | ||
| 543 | GetConsoleKeyboardLayoutNameA | ||
| 544 | GetConsoleKeyboardLayoutNameW | ||
| 545 | GetConsoleMode | ||
| 546 | GetConsoleNlsMode | ||
| 547 | GetConsoleOriginalTitleA | ||
| 548 | GetConsoleOriginalTitleW | ||
| 549 | GetConsoleOutputCP | ||
| 550 | GetConsoleProcessList | ||
| 551 | GetConsoleScreenBufferInfo | ||
| 552 | GetConsoleScreenBufferInfoEx | ||
| 553 | GetConsoleSelectionInfo | ||
| 554 | GetConsoleTitleA | ||
| 555 | GetConsoleTitleW | ||
| 556 | GetConsoleWindow | ||
| 557 | GetCurrencyFormatA | ||
| 558 | GetCurrencyFormatEx | ||
| 559 | GetCurrencyFormatW | ||
| 560 | GetCurrentActCtx | ||
| 561 | GetCurrentActCtxWorker | ||
| 562 | GetCurrentApplicationUserModelId | ||
| 563 | GetCurrentConsoleFont | ||
| 564 | GetCurrentConsoleFontEx | ||
| 565 | GetCurrentDirectoryA | ||
| 566 | GetCurrentDirectoryW | ||
| 567 | GetCurrentPackageFamilyName | ||
| 568 | GetCurrentPackageFullName | ||
| 569 | GetCurrentPackageId | ||
| 570 | GetCurrentPackageInfo | ||
| 571 | GetCurrentPackagePath | ||
| 572 | GetCurrentPackageVirtualizationContext | ||
| 573 | GetCurrentProcess | ||
| 574 | GetCurrentProcessId | ||
| 575 | GetCurrentProcessorNumber | ||
| 576 | GetCurrentProcessorNumberEx | ||
| 577 | GetCurrentThread | ||
| 578 | GetCurrentThreadId | ||
| 579 | GetCurrentThreadStackLimits | ||
| 580 | GetCurrentUmsThread | ||
| 581 | GetDateFormatA | ||
| 582 | GetDateFormatAWorker | ||
| 583 | GetDateFormatEx | ||
| 584 | GetDateFormatW | ||
| 585 | GetDateFormatWWorker | ||
| 586 | GetDefaultCommConfigA | ||
| 587 | GetDefaultCommConfigW | ||
| 588 | GetDefaultSortkeySize | ||
| 589 | GetDevicePowerState | ||
| 590 | GetDiskFreeSpaceA | ||
| 591 | GetDiskFreeSpaceExA | ||
| 592 | GetDiskFreeSpaceExW | ||
| 593 | GetDiskFreeSpaceW | ||
| 594 | GetDiskSpaceInformationA | ||
| 595 | GetDiskSpaceInformationW | ||
| 596 | GetDllDirectoryA | ||
| 597 | GetDllDirectoryW | ||
| 598 | GetDriveTypeA | ||
| 599 | GetDriveTypeW | ||
| 600 | GetDurationFormat | ||
| 601 | GetDurationFormatEx | ||
| 602 | GetDynamicTimeZoneInformation | ||
| 603 | GetEnabledExtendedFeatures | ||
| 604 | GetEnabledXStateFeatures | ||
| 605 | GetEncryptedFileVersionExt | ||
| 606 | GetEnvironmentStrings | ||
| 607 | GetEnvironmentStringsA | ||
| 608 | GetEnvironmentStringsW | ||
| 609 | GetEnvironmentVariableA | ||
| 610 | GetEnvironmentVariableW | ||
| 611 | GetEraNameCountedString | ||
| 612 | GetErrorMode | ||
| 613 | GetExitCodeProcess | ||
| 614 | GetExitCodeThread | ||
| 615 | GetExpandedNameA | ||
| 616 | GetExpandedNameW | ||
| 617 | GetExtendedContextLength | ||
| 618 | GetExtendedFeaturesMask | ||
| 619 | GetFileAttributesA | ||
| 620 | GetFileAttributesExA | ||
| 621 | GetFileAttributesExW | ||
| 622 | GetFileAttributesTransactedA | ||
| 623 | GetFileAttributesTransactedW | ||
| 624 | GetFileAttributesW | ||
| 625 | GetFileBandwidthReservation | ||
| 626 | GetFileInformationByHandle | ||
| 627 | GetFileInformationByHandleEx | ||
| 628 | GetFileMUIInfo | ||
| 629 | GetFileMUIPath | ||
| 630 | GetFileSize | ||
| 631 | GetFileSizeEx | ||
| 632 | GetFileTime | ||
| 633 | GetFileType | ||
| 634 | GetFinalPathNameByHandleA | ||
| 635 | GetFinalPathNameByHandleW | ||
| 636 | GetFirmwareEnvironmentVariableA | ||
| 637 | GetFirmwareEnvironmentVariableExA | ||
| 638 | GetFirmwareEnvironmentVariableExW | ||
| 639 | GetFirmwareEnvironmentVariableW | ||
| 640 | GetFirmwareType | ||
| 641 | GetFullPathNameA | ||
| 642 | GetFullPathNameTransactedA | ||
| 643 | GetFullPathNameTransactedW | ||
| 644 | GetFullPathNameW | ||
| 645 | GetGeoInfoA | ||
| 646 | GetGeoInfoW | ||
| 647 | GetGeoInfoEx | ||
| 648 | GetHandleInformation | ||
| 649 | GetIoRingInfo | ||
| 650 | GetLargePageMinimum | ||
| 651 | GetLargestConsoleWindowSize | ||
| 652 | GetLastError | ||
| 653 | GetLinguistLangSize | ||
| 654 | GetLocalTime | ||
| 655 | GetLocaleInfoA | ||
| 656 | GetLocaleInfoEx | ||
| 657 | GetLocaleInfoW | ||
| 658 | GetLogicalDriveStringsA | ||
| 659 | GetLogicalDriveStringsW | ||
| 660 | GetLogicalDrives | ||
| 661 | GetLogicalProcessorInformation | ||
| 662 | GetLogicalProcessorInformationEx | ||
| 663 | GetLongPathNameA | ||
| 664 | GetLongPathNameTransactedA | ||
| 665 | GetLongPathNameTransactedW | ||
| 666 | GetLongPathNameW | ||
| 667 | GetMachineTypeAttributes | ||
| 668 | GetMailslotInfo | ||
| 669 | GetMaximumProcessorCount | ||
| 670 | GetMaximumProcessorGroupCount | ||
| 671 | GetMemoryErrorHandlingCapabilities | ||
| 672 | GetModuleFileNameA | ||
| 673 | GetModuleFileNameW | ||
| 674 | GetModuleHandleA | ||
| 675 | GetModuleHandleExA | ||
| 676 | GetModuleHandleExW | ||
| 677 | GetModuleHandleW | ||
| 678 | GetNLSVersion | ||
| 679 | GetNLSVersionEx | ||
| 680 | GetNamedPipeAttribute | ||
| 681 | GetNamedPipeClientComputerNameA | ||
| 682 | GetNamedPipeClientComputerNameW | ||
| 683 | GetNamedPipeClientProcessId | ||
| 684 | GetNamedPipeClientSessionId | ||
| 685 | GetNamedPipeHandleStateA | ||
| 686 | GetNamedPipeHandleStateW | ||
| 687 | GetNamedPipeInfo | ||
| 688 | GetNamedPipeServerProcessId | ||
| 689 | GetNamedPipeServerSessionId | ||
| 690 | GetNativeSystemInfo | ||
| 691 | GetNextUmsListItem | ||
| 692 | GetNextVDMCommand | ||
| 693 | GetNlsSectionName | ||
| 694 | GetNumaAvailableMemoryNode | ||
| 695 | GetNumaAvailableMemoryNodeEx | ||
| 696 | GetNumaHighestNodeNumber | ||
| 697 | GetNumaNodeNumberFromHandle | ||
| 698 | GetNumaNodeProcessorMask | ||
| 699 | GetNumaNodeProcessorMask2 | ||
| 700 | GetNumaNodeProcessorMaskEx | ||
| 701 | GetNumaProcessorNode | ||
| 702 | GetNumaProcessorNodeEx | ||
| 703 | GetNumaProximityNode | ||
| 704 | GetNumaProximityNodeEx | ||
| 705 | GetNumberFormatA | ||
| 706 | GetNumberFormatEx | ||
| 707 | GetNumberFormatW | ||
| 708 | GetNumberOfConsoleFonts | ||
| 709 | GetNumberOfConsoleInputEvents | ||
| 710 | GetNumberOfConsoleMouseButtons | ||
| 711 | GetOEMCP | ||
| 712 | GetOverlappedResult | ||
| 713 | GetOverlappedResultEx | ||
| 714 | GetPackageApplicationIds | ||
| 715 | GetPackageFamilyName | ||
| 716 | GetPackageFullName | ||
| 717 | GetPackageId | ||
| 718 | GetPackageInfo | ||
| 719 | GetPackagePath | ||
| 720 | GetPackagePathByFullName | ||
| 721 | GetPackagesByPackageFamily | ||
| 722 | GetPhysicallyInstalledSystemMemory | ||
| 723 | GetPriorityClass | ||
| 724 | GetPrivateProfileIntA | ||
| 725 | GetPrivateProfileIntW | ||
| 726 | GetPrivateProfileSectionA | ||
| 727 | GetPrivateProfileSectionNamesA | ||
| 728 | GetPrivateProfileSectionNamesW | ||
| 729 | GetPrivateProfileSectionW | ||
| 730 | GetPrivateProfileStringA | ||
| 731 | GetPrivateProfileStringW | ||
| 732 | GetPrivateProfileStructA | ||
| 733 | GetPrivateProfileStructW | ||
| 734 | GetProcAddress | ||
| 735 | GetProcessAffinityMask | ||
| 736 | GetProcessDefaultCpuSetMasks | ||
| 737 | GetProcessDefaultCpuSets | ||
| 738 | GetProcessDEPPolicy | ||
| 739 | GetProcessGroupAffinity | ||
| 740 | GetProcessHandleCount | ||
| 741 | GetProcessHeap | ||
| 742 | GetProcessHeaps | ||
| 743 | GetProcessId | ||
| 744 | GetProcessIdOfThread | ||
| 745 | GetProcessInformation | ||
| 746 | GetProcessIoCounters | ||
| 747 | GetProcessMitigationPolicy | ||
| 748 | GetProcessPreferredUILanguages | ||
| 749 | GetProcessPriorityBoost | ||
| 750 | GetProcessShutdownParameters | ||
| 751 | GetProcessTimes | ||
| 752 | GetProcessVersion | ||
| 753 | GetProcessWorkingSetSize | ||
| 754 | GetProcessWorkingSetSizeEx | ||
| 755 | GetProcessesInVirtualizationContext | ||
| 756 | GetProcessorSystemCycleTime | ||
| 757 | GetProductInfo | ||
| 758 | GetProfileIntA | ||
| 759 | GetProfileIntW | ||
| 760 | GetProfileSectionA | ||
| 761 | GetProfileSectionW | ||
| 762 | GetProfileStringA | ||
| 763 | GetProfileStringW | ||
| 764 | GetQueuedCompletionStatus | ||
| 765 | GetQueuedCompletionStatusEx | ||
| 766 | GetShortPathNameA | ||
| 767 | GetShortPathNameW | ||
| 768 | GetStagedPackagePathByFullName | ||
| 769 | GetStartupInfoA | ||
| 770 | GetStartupInfoW | ||
| 771 | GetStateFolder | ||
| 772 | GetStdHandle | ||
| 773 | GetStringScripts | ||
| 774 | GetStringTypeA | ||
| 775 | GetStringTypeExA | ||
| 776 | GetStringTypeExW | ||
| 777 | GetStringTypeW | ||
| 778 | GetSystemAppDataKey | ||
| 779 | GetSystemCpuSetInformation | ||
| 780 | GetSystemDEPPolicy | ||
| 781 | GetSystemDefaultLCID | ||
| 782 | GetSystemDefaultLangID | ||
| 783 | GetSystemDefaultLocaleName | ||
| 784 | GetSystemDefaultUILanguage | ||
| 785 | GetSystemDirectoryA | ||
| 786 | GetSystemDirectoryW | ||
| 787 | GetSystemFileCacheSize | ||
| 788 | GetSystemFirmwareTable | ||
| 789 | GetSystemInfo | ||
| 790 | GetSystemPowerStatus | ||
| 791 | GetSystemPreferredUILanguages | ||
| 792 | GetSystemRegistryQuota | ||
| 793 | GetSystemTime | ||
| 794 | GetSystemTimeAdjustment | ||
| 795 | GetSystemTimeAsFileTime | ||
| 796 | GetSystemTimePreciseAsFileTime | ||
| 797 | GetSystemTimes | ||
| 798 | GetSystemWindowsDirectoryA | ||
| 799 | GetSystemWindowsDirectoryW | ||
| 800 | GetSystemWow64DirectoryA | ||
| 801 | GetSystemWow64DirectoryW | ||
| 802 | GetTapeParameters | ||
| 803 | GetTapePosition | ||
| 804 | GetTapeStatus | ||
| 805 | GetTempFileNameA | ||
| 806 | GetTempFileNameW | ||
| 807 | GetTempPathA | ||
| 808 | GetTempPathW | ||
| 809 | GetTempPath2A | ||
| 810 | GetTempPath2W | ||
| 811 | GetThreadContext | ||
| 812 | GetThreadDescription | ||
| 813 | GetThreadEnabledXStateFeatures | ||
| 814 | GetThreadErrorMode | ||
| 815 | GetThreadGroupAffinity | ||
| 816 | GetThreadIOPendingFlag | ||
| 817 | GetThreadId | ||
| 818 | GetThreadIdealProcessorEx | ||
| 819 | GetThreadInformation | ||
| 820 | GetThreadLocale | ||
| 821 | GetThreadPreferredUILanguages | ||
| 822 | GetThreadPriority | ||
| 823 | GetThreadPriorityBoost | ||
| 824 | GetThreadSelectedCpuSetMasks | ||
| 825 | GetThreadSelectedCpuSets | ||
| 826 | GetThreadSelectorEntry | ||
| 827 | GetThreadTimes | ||
| 828 | GetThreadUILanguage | ||
| 829 | GetTickCount | ||
| 830 | GetTickCount64 | ||
| 831 | GetTimeFormatA | ||
| 832 | GetTimeFormatAWorker | ||
| 833 | GetTimeFormatEx | ||
| 834 | GetTimeFormatW | ||
| 835 | GetTimeFormatWWorker | ||
| 836 | GetTimeZoneInformation | ||
| 837 | GetTimeZoneInformationForYear | ||
| 838 | GetUILanguageInfo | ||
| 839 | GetUmsCompletionListEvent | ||
| 840 | GetUmsSystemThreadInformation | ||
| 841 | GetUserDefaultGeoName | ||
| 842 | GetUserDefaultLCID | ||
| 843 | GetUserDefaultLangID | ||
| 844 | GetUserDefaultLocaleName | ||
| 845 | GetUserDefaultUILanguage | ||
| 846 | GetUserGeoID | ||
| 847 | GetUserPreferredUILanguages | ||
| 848 | GetVDMCurrentDirectories | ||
| 849 | GetVersion | ||
| 850 | GetVersionExA | ||
| 851 | GetVersionExW | ||
| 852 | GetVolumeInformationA | ||
| 853 | GetVolumeInformationByHandleW | ||
| 854 | GetVolumeInformationW | ||
| 855 | GetVolumeNameForVolumeMountPointA | ||
| 856 | GetVolumeNameForVolumeMountPointW | ||
| 857 | GetVolumePathNameA | ||
| 858 | GetVolumePathNameW | ||
| 859 | GetVolumePathNamesForVolumeNameA | ||
| 860 | GetVolumePathNamesForVolumeNameW | ||
| 861 | GetWindowsDirectoryA | ||
| 862 | GetWindowsDirectoryW | ||
| 863 | GetWriteWatch | ||
| 864 | GetXStateFeaturesMask | ||
| 865 | GlobalAddAtomA | ||
| 866 | GlobalAddAtomExA | ||
| 867 | GlobalAddAtomExW | ||
| 868 | GlobalAddAtomW | ||
| 869 | GlobalAlloc | ||
| 870 | GlobalCompact | ||
| 871 | GlobalDeleteAtom | ||
| 872 | GlobalFindAtomA | ||
| 873 | GlobalFindAtomW | ||
| 874 | GlobalFix | ||
| 875 | GlobalFlags | ||
| 876 | GlobalFree | ||
| 877 | GlobalGetAtomNameA | ||
| 878 | GlobalGetAtomNameW | ||
| 879 | GlobalHandle | ||
| 880 | GlobalLock | ||
| 881 | GlobalMemoryStatus | ||
| 882 | GlobalMemoryStatusEx | ||
| 883 | GlobalReAlloc | ||
| 884 | GlobalSize | ||
| 885 | GlobalUnWire | ||
| 886 | GlobalUnfix | ||
| 887 | GlobalUnlock | ||
| 888 | GlobalWire | ||
| 889 | Heap32First | ||
| 890 | Heap32ListFirst | ||
| 891 | Heap32ListNext | ||
| 892 | Heap32Next | ||
| 893 | HeapAlloc | ||
| 894 | HeapCompact | ||
| 895 | HeapCreate | ||
| 896 | HeapCreateTagsW | ||
| 897 | HeapDestroy | ||
| 898 | HeapExtend | ||
| 899 | HeapFree | ||
| 900 | HeapLock | ||
| 901 | HeapQueryInformation | ||
| 902 | HeapQueryTagW | ||
| 903 | HeapReAlloc | ||
| 904 | HeapSetInformation | ||
| 905 | HeapSize | ||
| 906 | HeapSummary | ||
| 907 | HeapUnlock | ||
| 908 | HeapUsage | ||
| 909 | HeapValidate | ||
| 910 | HeapWalk | ||
| 911 | IdnToAscii | ||
| 912 | IdnToNameprepUnicode | ||
| 913 | IdnToUnicode | ||
| 914 | InitAtomTable | ||
| 915 | InitOnceBeginInitialize | ||
| 916 | InitOnceComplete | ||
| 917 | InitOnceExecuteOnce | ||
| 918 | InitOnceInitialize | ||
| 919 | InitializeConditionVariable | ||
| 920 | InitializeContext | ||
| 921 | InitializeContext2 | ||
| 922 | InitializeCriticalSection | ||
| 923 | InitializeCriticalSectionAndSpinCount | ||
| 924 | InitializeCriticalSectionEx | ||
| 925 | InitializeEnclave | ||
| 926 | InitializeExtendedContext | ||
| 927 | InitializeProcThreadAttributeList | ||
| 928 | InitializeSListHead | ||
| 929 | InitializeSRWLock | ||
| 930 | InitializeSynchronizationBarrier | ||
| 931 | InstallELAMCertificateInfo | ||
| 932 | InterlockedFlushSList | ||
| 933 | InterlockedPopEntrySList | ||
| 934 | InterlockedPushEntrySList | ||
| 935 | InterlockedPushListSList | ||
| 936 | InterlockedPushListSListEx | ||
| 937 | InvalidateConsoleDIBits | ||
| 938 | IsBadCodePtr | ||
| 939 | IsBadHugeReadPtr | ||
| 940 | IsBadHugeWritePtr | ||
| 941 | IsBadReadPtr | ||
| 942 | IsBadStringPtrA | ||
| 943 | IsBadStringPtrW | ||
| 944 | IsBadWritePtr | ||
| 945 | IsCalendarLeapDay | ||
| 946 | IsCalendarLeapMonth | ||
| 947 | IsCalendarLeapYear | ||
| 948 | IsDBCSLeadByte | ||
| 949 | IsDBCSLeadByteEx | ||
| 950 | IsDebuggerPresent | ||
| 951 | IsEnclaveTypeSupported | ||
| 952 | IsIoRingOpSupported | ||
| 953 | IsNLSDefinedString | ||
| 954 | IsNativeVhdBoot | ||
| 955 | IsNormalizedString | ||
| 956 | IsProcessCritical | ||
| 957 | IsProcessInJob | ||
| 958 | IsProcessorFeaturePresent | ||
| 959 | IsSystemResumeAutomatic | ||
| 960 | IsThreadAFiber | ||
| 961 | IsThreadpoolTimerSet | ||
| 962 | IsTimeZoneRedirectionEnabled | ||
| 963 | IsUserCetAvailableInEnvironment | ||
| 964 | IsValidCalDateTime | ||
| 965 | IsValidCodePage | ||
| 966 | IsValidLanguageGroup | ||
| 967 | IsValidLocale | ||
| 968 | IsValidUILanguage | ||
| 969 | IsValidLocaleName | ||
| 970 | IsValidNLSVersion | ||
| 971 | IsWow64GuestMachineSupported | ||
| 972 | IsWow64Process | ||
| 973 | IsWow64Process2 | ||
| 974 | K32EmptyWorkingSet | ||
| 975 | K32EnumDeviceDrivers | ||
| 976 | K32EnumPageFilesA | ||
| 977 | K32EnumPageFilesW | ||
| 978 | K32EnumProcessModules | ||
| 979 | K32EnumProcessModulesEx | ||
| 980 | K32EnumProcesses | ||
| 981 | K32GetDeviceDriverBaseNameA | ||
| 982 | K32GetDeviceDriverBaseNameW | ||
| 983 | K32GetDeviceDriverFileNameA | ||
| 984 | K32GetDeviceDriverFileNameW | ||
| 985 | K32GetMappedFileNameA | ||
| 986 | K32GetMappedFileNameW | ||
| 987 | K32GetModuleBaseNameA | ||
| 988 | K32GetModuleBaseNameW | ||
| 989 | K32GetModuleFileNameExA | ||
| 990 | K32GetModuleFileNameExW | ||
| 991 | K32GetModuleInformation | ||
| 992 | K32GetPerformanceInfo | ||
| 993 | K32GetProcessImageFileNameA | ||
| 994 | K32GetProcessImageFileNameW | ||
| 995 | K32GetProcessMemoryInfo | ||
| 996 | K32GetWsChanges | ||
| 997 | K32GetWsChangesEx | ||
| 998 | K32InitializeProcessForWsWatch | ||
| 999 | K32QueryWorkingSet | ||
| 1000 | K32QueryWorkingSetEx | ||
| 1001 | LCIDToLocaleName | ||
| 1002 | LCMapStringA | ||
| 1003 | LCMapStringEx | ||
| 1004 | LCMapStringW | ||
| 1005 | LZClose | ||
| 1006 | LZCloseFile | ||
| 1007 | LZCopy | ||
| 1008 | LZCreateFileW | ||
| 1009 | LZDone | ||
| 1010 | LZInit | ||
| 1011 | LZOpenFileA | ||
| 1012 | LZOpenFileW | ||
| 1013 | LZRead | ||
| 1014 | LZSeek | ||
| 1015 | LZStart | ||
| 1016 | LeaveCriticalSection | ||
| 1017 | LeaveCriticalSectionWhenCallbackReturns | ||
| 1018 | LoadAppInitDlls | ||
| 1019 | LoadEnclaveData | ||
| 1020 | LoadLibraryA | ||
| 1021 | LoadLibraryExA | ||
| 1022 | LoadLibraryExW | ||
| 1023 | LoadLibraryW | ||
| 1024 | LoadModule | ||
| 1025 | LoadPackagedLibrary | ||
| 1026 | LoadResource | ||
| 1027 | LoadStringBaseExW | ||
| 1028 | LoadStringBaseW | ||
| 1029 | LocalAlloc | ||
| 1030 | LocalCompact | ||
| 1031 | LocalFileTimeToFileTime | ||
| 1032 | LocalFileTimeToLocalSystemTime | ||
| 1033 | LocalFlags | ||
| 1034 | LocalFree | ||
| 1035 | LocalHandle | ||
| 1036 | LocalLock | ||
| 1037 | LocalReAlloc | ||
| 1038 | LocalShrink | ||
| 1039 | LocalSize | ||
| 1040 | LocalSystemTimeToLocalFileTime | ||
| 1041 | LocalUnlock | ||
| 1042 | LocaleNameToLCID | ||
| 1043 | LocateExtendedFeature | ||
| 1044 | LocateLegacyContext | ||
| 1045 | LocateXStateFeature | ||
| 1046 | LockFile | ||
| 1047 | LockFileEx | ||
| 1048 | LockResource | ||
| 1049 | MapUserPhysicalPages | ||
| 1050 | MapUserPhysicalPagesScatter | ||
| 1051 | MapViewOfFile | ||
| 1052 | MapViewOfFileEx | ||
| 1053 | MapViewOfFileExNuma | ||
| 1054 | MapViewOfFileFromApp | ||
| 1055 | Module32First | ||
| 1056 | Module32FirstW | ||
| 1057 | Module32Next | ||
| 1058 | Module32NextW | ||
| 1059 | MoveFileA | ||
| 1060 | MoveFileExA | ||
| 1061 | MoveFileExW | ||
| 1062 | MoveFileTransactedA | ||
| 1063 | MoveFileTransactedW | ||
| 1064 | MoveFileW | ||
| 1065 | MoveFileWithProgressA | ||
| 1066 | MoveFileWithProgressW | ||
| 1067 | MulDiv | ||
| 1068 | MultiByteToWideChar | ||
| 1069 | NeedCurrentDirectoryForExePathA | ||
| 1070 | NeedCurrentDirectoryForExePathW | ||
| 1071 | NlsConvertIntegerToString | ||
| 1072 | NlsCheckPolicy | ||
| 1073 | NlsEventDataDescCreate | ||
| 1074 | NlsGetCacheUpdateCount | ||
| 1075 | NlsUpdateLocale | ||
| 1076 | NlsUpdateSystemLocale | ||
| 1077 | NlsResetProcessLocale | ||
| 1078 | NlsWriteEtwEvent | ||
| 1079 | NormalizeString | ||
| 1080 | NotifyMountMgr | ||
| 1081 | NotifyUILanguageChange | ||
| 1082 | NtVdm64CreateProcessInternalW | ||
| 1083 | OOBEComplete | ||
| 1084 | OfferVirtualMemory | ||
| 1085 | OpenConsoleW | ||
| 1086 | OpenConsoleWStub | ||
| 1087 | OpenDataFile | ||
| 1088 | OpenEventA | ||
| 1089 | OpenEventW | ||
| 1090 | OpenFile | ||
| 1091 | OpenFileById | ||
| 1092 | OpenFileMappingA | ||
| 1093 | OpenFileMappingW | ||
| 1094 | OpenJobObjectA | ||
| 1095 | OpenJobObjectW | ||
| 1096 | OpenMutexA | ||
| 1097 | OpenMutexW | ||
| 1098 | OpenPackageInfoByFullName | ||
| 1099 | OpenPrivateNamespaceA | ||
| 1100 | OpenPrivateNamespaceW | ||
| 1101 | OpenProcess | ||
| 1102 | ; MSDN says OpenProcessToken is from Advapi32.dll, not Kernel32.dll | ||
| 1103 | ; OpenProcessToken | ||
| 1104 | OpenProfileUserMapping | ||
| 1105 | OpenSemaphoreA | ||
| 1106 | OpenSemaphoreW | ||
| 1107 | OpenState | ||
| 1108 | OpenStateExplicit | ||
| 1109 | OpenThread | ||
| 1110 | ; MSDN says this is exported from ADVAPI32.DLL. | ||
| 1111 | ; OpenThreadToken | ||
| 1112 | OpenWaitableTimerA | ||
| 1113 | OpenWaitableTimerW | ||
| 1114 | OutputDebugStringA | ||
| 1115 | OutputDebugStringW | ||
| 1116 | PackageFamilyNameFromFullName | ||
| 1117 | PackageFamilyNameFromId | ||
| 1118 | PackageFullNameFromId | ||
| 1119 | PackageIdFromFullName | ||
| 1120 | PackageNameAndPublisherIdFromFamilyName | ||
| 1121 | ParseApplicationUserModelId | ||
| 1122 | PeekConsoleInputA | ||
| 1123 | PeekConsoleInputW | ||
| 1124 | PeekNamedPipe | ||
| 1125 | PopIoRingCompletion | ||
| 1126 | PostQueuedCompletionStatus | ||
| 1127 | PowerClearRequest | ||
| 1128 | PowerCreateRequest | ||
| 1129 | PowerSetRequest | ||
| 1130 | PrefetchVirtualMemory | ||
| 1131 | PrepareTape | ||
| 1132 | PrivCopyFileExW | ||
| 1133 | PrivMoveFileIdentityW | ||
| 1134 | Process32First | ||
| 1135 | Process32FirstW | ||
| 1136 | Process32Next | ||
| 1137 | Process32NextW | ||
| 1138 | ProcessIdToSessionId | ||
| 1139 | PssCaptureSnapshot | ||
| 1140 | PssDuplicateSnapshot | ||
| 1141 | PssFreeSnapshot | ||
| 1142 | PssQuerySnapshot | ||
| 1143 | PssWalkMarkerCreate | ||
| 1144 | PssWalkMarkerFree | ||
| 1145 | PssWalkMarkerGetPosition | ||
| 1146 | PssWalkMarkerRewind | ||
| 1147 | PssWalkMarkerSeek | ||
| 1148 | PssWalkMarkerSeekToBeginning | ||
| 1149 | PssWalkMarkerSetPosition | ||
| 1150 | PssWalkMarkerTell | ||
| 1151 | PssWalkSnapshot | ||
| 1152 | PulseEvent | ||
| 1153 | PurgeComm | ||
| 1154 | QueryActCtxSettingsW | ||
| 1155 | QueryActCtxSettingsWWorker | ||
| 1156 | QueryActCtxW | ||
| 1157 | QueryActCtxWWorker | ||
| 1158 | QueryDepthSList | ||
| 1159 | QueryDosDeviceA | ||
| 1160 | QueryDosDeviceW | ||
| 1161 | QueryFullProcessImageNameA | ||
| 1162 | QueryFullProcessImageNameW | ||
| 1163 | QueryIdleProcessorCycleTime | ||
| 1164 | QueryIdleProcessorCycleTimeEx | ||
| 1165 | QueryInformationJobObject | ||
| 1166 | QueryIoRateControlInformationJobObject | ||
| 1167 | QueryIoRingCapabilities | ||
| 1168 | QueryMemoryResourceNotification | ||
| 1169 | QueryPerformanceCounter | ||
| 1170 | QueryPerformanceFrequency | ||
| 1171 | QueryProcessAffinityUpdateMode | ||
| 1172 | QueryProcessCycleTime | ||
| 1173 | QueryProtectedPolicy | ||
| 1174 | QueryThreadCycleTime | ||
| 1175 | QueryThreadProfiling | ||
| 1176 | QueryThreadpoolStackInformation | ||
| 1177 | QueryUmsThreadInformation | ||
| 1178 | QueryUnbiasedInterruptTime | ||
| 1179 | QueueUserAPC | ||
| 1180 | QueueUserAPC2 | ||
| 1181 | QueueUserWorkItem | ||
| 1182 | QuirkGetData2Worker | ||
| 1183 | QuirkGetDataWorker | ||
| 1184 | QuirkIsEnabled2Worker | ||
| 1185 | QuirkIsEnabled3Worker | ||
| 1186 | QuirkIsEnabledForPackage2Worker | ||
| 1187 | QuirkIsEnabledForPackage3Worker | ||
| 1188 | QuirkIsEnabledForPackage4Worker | ||
| 1189 | QuirkIsEnabledForPackageWorker | ||
| 1190 | QuirkIsEnabledForProcessWorker | ||
| 1191 | QuirkIsEnabledWorker | ||
| 1192 | RaiseException | ||
| 1193 | RaiseFailFastException | ||
| 1194 | RaiseInvalid16BitExeError | ||
| 1195 | ReOpenFile | ||
| 1196 | ReclaimVirtualMemory | ||
| 1197 | ReadConsoleA | ||
| 1198 | ReadConsoleInputA | ||
| 1199 | ReadConsoleInputExA | ||
| 1200 | ReadConsoleInputExW | ||
| 1201 | ReadConsoleInputW | ||
| 1202 | ReadConsoleOutputA | ||
| 1203 | ReadConsoleOutputAttribute | ||
| 1204 | ReadConsoleOutputCharacterA | ||
| 1205 | ReadConsoleOutputCharacterW | ||
| 1206 | ReadConsoleOutputW | ||
| 1207 | ReadConsoleW | ||
| 1208 | ReadDirectoryChangesExW | ||
| 1209 | ReadDirectoryChangesW | ||
| 1210 | ReadFile | ||
| 1211 | ReadFileEx | ||
| 1212 | ReadFileScatter | ||
| 1213 | ReadProcessMemory | ||
| 1214 | ReadThreadProfilingData | ||
| 1215 | ; | ||
| 1216 | ; MSDN says these functions are exported | ||
| 1217 | ; from advapi32.dll. Commented out for | ||
| 1218 | ; compatibility with older versions of | ||
| 1219 | ; Windows. | ||
| 1220 | ; | ||
| 1221 | ; RegKrnGetGlobalState and RegKrnInitialize | ||
| 1222 | ; are known exceptions. | ||
| 1223 | ; | ||
| 1224 | ;RegCloseKey | ||
| 1225 | ;RegCopyTreeW | ||
| 1226 | ;RegCreateKeyExA | ||
| 1227 | ;RegCreateKeyExW | ||
| 1228 | ;RegDeleteKeyExA | ||
| 1229 | ;RegDeleteKeyExW | ||
| 1230 | ;RegDeleteTreeA | ||
| 1231 | ;RegDeleteTreeW | ||
| 1232 | ;RegDeleteValueA | ||
| 1233 | ;RegDeleteValueW | ||
| 1234 | ;RegDisablePredefinedCacheEx | ||
| 1235 | ;RegEnumKeyExA | ||
| 1236 | ;RegEnumKeyExW | ||
| 1237 | ;RegEnumValueA | ||
| 1238 | ;RegEnumValueW | ||
| 1239 | ;RegFlushKey | ||
| 1240 | ;RegGetKeySecurity | ||
| 1241 | ;RegGetValueA | ||
| 1242 | ;RegGetValueW | ||
| 1243 | RegKrnGetGlobalState | ||
| 1244 | RegKrnInitialize | ||
| 1245 | ;RegLoadKeyA | ||
| 1246 | ;RegLoadKeyW | ||
| 1247 | ;RegLoadMUIStringA | ||
| 1248 | ;RegLoadMUIStringW | ||
| 1249 | ;RegNotifyChangeKeyValue | ||
| 1250 | ;RegOpenCurrentUser | ||
| 1251 | ;RegOpenKeyExA | ||
| 1252 | ;RegOpenKeyExW | ||
| 1253 | ;RegOpenUserClassesRoot | ||
| 1254 | ;RegQueryInfoKeyA | ||
| 1255 | ;RegQueryInfoKeyW | ||
| 1256 | ;RegQueryValueExA | ||
| 1257 | ;RegQueryValueExW | ||
| 1258 | ;RegRestoreKeyA | ||
| 1259 | ;RegRestoreKeyW | ||
| 1260 | ;RegSaveKeyExA | ||
| 1261 | ;RegSaveKeyExW | ||
| 1262 | ;RegSetKeySecurity | ||
| 1263 | ;RegSetValueExA | ||
| 1264 | ;RegSetValueExW | ||
| 1265 | ;RegUnLoadKeyA | ||
| 1266 | ;RegUnLoadKeyW | ||
| 1267 | RegisterApplicationRecoveryCallback | ||
| 1268 | RegisterApplicationRestart | ||
| 1269 | RegisterBadMemoryNotification | ||
| 1270 | RegisterConsoleIME | ||
| 1271 | RegisterConsoleOS2 | ||
| 1272 | RegisterConsoleVDM | ||
| 1273 | RegisterWaitForInputIdle | ||
| 1274 | RegisterWaitForSingleObject | ||
| 1275 | RegisterWaitForSingleObjectEx | ||
| 1276 | RegisterWaitUntilOOBECompleted | ||
| 1277 | RegisterWowBaseHandlers | ||
| 1278 | RegisterWowExec | ||
| 1279 | ReleaseActCtx | ||
| 1280 | ReleaseActCtxWorker | ||
| 1281 | ReleaseMutex | ||
| 1282 | ReleaseMutexWhenCallbackReturns | ||
| 1283 | ReleasePackageVirtualizationContext | ||
| 1284 | ReleaseSRWLockExclusive | ||
| 1285 | ReleaseSRWLockShared | ||
| 1286 | ReleaseSemaphore | ||
| 1287 | ReleaseSemaphoreWhenCallbackReturns | ||
| 1288 | RemoveDirectoryA | ||
| 1289 | RemoveDirectoryTransactedA | ||
| 1290 | RemoveDirectoryTransactedW | ||
| 1291 | RemoveDirectoryW | ||
| 1292 | RemoveDllDirectory | ||
| 1293 | RemoveLocalAlternateComputerNameA | ||
| 1294 | RemoveLocalAlternateComputerNameW | ||
| 1295 | RemoveSecureMemoryCacheCallback | ||
| 1296 | RemoveVectoredContinueHandler | ||
| 1297 | RemoveVectoredExceptionHandler | ||
| 1298 | ReplaceFile | ||
| 1299 | ReplaceFileA | ||
| 1300 | ReplaceFileW | ||
| 1301 | ReplacePartitionUnit | ||
| 1302 | RequestDeviceWakeup | ||
| 1303 | RequestWakeupLatency | ||
| 1304 | ResetEvent | ||
| 1305 | ResetWriteWatch | ||
| 1306 | ResizePseudoConsole | ||
| 1307 | ResolveDelayLoadedAPI | ||
| 1308 | ResolveDelayLoadsFromDll | ||
| 1309 | ResolveLocaleName | ||
| 1310 | RestoreLastError | ||
| 1311 | ResumeThread | ||
| 1312 | RtlAddFunctionTable | ||
| 1313 | RtlCaptureContext | ||
| 1314 | RtlCaptureStackBackTrace | ||
| 1315 | RtlCompareMemory | ||
| 1316 | RtlCopyMemory | ||
| 1317 | RtlDeleteFunctionTable | ||
| 1318 | RtlFillMemory | ||
| 1319 | RtlInstallFunctionTableCallback | ||
| 1320 | RtlIsEcCode | ||
| 1321 | RtlLookupFunctionEntry | ||
| 1322 | RtlMoveMemory | ||
| 1323 | RtlPcToFileHeader | ||
| 1324 | RtlRaiseException | ||
| 1325 | RtlRestoreContext | ||
| 1326 | RtlUnwind | ||
| 1327 | RtlUnwindEx | ||
| 1328 | RtlVirtualUnwind | ||
| 1329 | RtlVirtualUnwind2 | ||
| 1330 | RtlZeroMemory | ||
| 1331 | ScrollConsoleScreenBufferA | ||
| 1332 | ScrollConsoleScreenBufferW | ||
| 1333 | SearchPathA | ||
| 1334 | SearchPathW | ||
| 1335 | SetCachedSigningLevel | ||
| 1336 | SetCPGlobal | ||
| 1337 | SetCalendarInfoA | ||
| 1338 | SetCalendarInfoW | ||
| 1339 | SetComPlusPackageInstallStatus | ||
| 1340 | SetCommBreak | ||
| 1341 | SetCommConfig | ||
| 1342 | SetCommMask | ||
| 1343 | SetCommState | ||
| 1344 | SetCommTimeouts | ||
| 1345 | SetComputerNameA | ||
| 1346 | SetComputerNameEx2W | ||
| 1347 | SetComputerNameExA | ||
| 1348 | SetComputerNameExW | ||
| 1349 | SetComputerNameW | ||
| 1350 | SetConsoleActiveScreenBuffer | ||
| 1351 | SetConsoleCP | ||
| 1352 | SetConsoleCommandHistoryMode | ||
| 1353 | SetConsoleCtrlHandler | ||
| 1354 | SetConsoleCursor | ||
| 1355 | SetConsoleCursorInfo | ||
| 1356 | SetConsoleCursorMode | ||
| 1357 | SetConsoleCursorPosition | ||
| 1358 | SetConsoleDisplayMode | ||
| 1359 | SetConsoleFont | ||
| 1360 | SetConsoleHardwareState | ||
| 1361 | SetConsoleHistoryInfo | ||
| 1362 | SetConsoleIcon | ||
| 1363 | SetConsoleInputExeNameA | ||
| 1364 | SetConsoleInputExeNameW | ||
| 1365 | SetConsoleKeyShortcuts | ||
| 1366 | SetConsoleLocalEUDC | ||
| 1367 | SetConsoleMaximumWindowSize | ||
| 1368 | SetConsoleMenuClose | ||
| 1369 | SetConsoleMode | ||
| 1370 | SetConsoleNlsMode | ||
| 1371 | SetConsoleNumberOfCommandsA | ||
| 1372 | SetConsoleNumberOfCommandsW | ||
| 1373 | SetConsoleOS2OemFormat | ||
| 1374 | SetConsoleOutputCP | ||
| 1375 | SetConsolePalette | ||
| 1376 | SetConsoleScreenBufferInfoEx | ||
| 1377 | SetConsoleScreenBufferSize | ||
| 1378 | SetConsoleTextAttribute | ||
| 1379 | SetConsoleTitleA | ||
| 1380 | SetConsoleTitleW | ||
| 1381 | SetConsoleWindowInfo | ||
| 1382 | SetCriticalSectionSpinCount | ||
| 1383 | SetCurrentConsoleFontEx | ||
| 1384 | SetCurrentDirectoryA | ||
| 1385 | SetCurrentDirectoryW | ||
| 1386 | SetDefaultCommConfigA | ||
| 1387 | SetDefaultCommConfigW | ||
| 1388 | SetDefaultDllDirectories | ||
| 1389 | SetDllDirectoryA | ||
| 1390 | SetDllDirectoryW | ||
| 1391 | SetDynamicTimeZoneInformation | ||
| 1392 | SetEndOfFile | ||
| 1393 | SetEnvironmentStringsA | ||
| 1394 | SetEnvironmentStringsW | ||
| 1395 | SetEnvironmentVariableA | ||
| 1396 | SetEnvironmentVariableW | ||
| 1397 | SetErrorMode | ||
| 1398 | SetEvent | ||
| 1399 | SetEventWhenCallbackReturns | ||
| 1400 | SetExtendedFeaturesMask | ||
| 1401 | SetFileApisToANSI | ||
| 1402 | SetFileApisToOEM | ||
| 1403 | SetFileAttributesA | ||
| 1404 | SetFileAttributesTransactedA | ||
| 1405 | SetFileAttributesTransactedW | ||
| 1406 | SetFileAttributesW | ||
| 1407 | SetFileBandwidthReservation | ||
| 1408 | SetFileCompletionNotificationModes | ||
| 1409 | SetFileInformationByHandle | ||
| 1410 | SetFileIoOverlappedRange | ||
| 1411 | SetFilePointer | ||
| 1412 | SetFilePointerEx | ||
| 1413 | SetFileShortNameA | ||
| 1414 | SetFileShortNameW | ||
| 1415 | SetFileTime | ||
| 1416 | SetFileValidData | ||
| 1417 | SetFirmwareEnvironmentVariableA | ||
| 1418 | SetFirmwareEnvironmentVariableExA | ||
| 1419 | SetFirmwareEnvironmentVariableExW | ||
| 1420 | SetFirmwareEnvironmentVariableW | ||
| 1421 | SetHandleCount | ||
| 1422 | SetHandleInformation | ||
| 1423 | SetInformationJobObject | ||
| 1424 | SetIoRateControlInformationJobObject | ||
| 1425 | SetIoRingCompletionEvent | ||
| 1426 | SetLastConsoleEventActive | ||
| 1427 | SetLastError | ||
| 1428 | SetLocalPrimaryComputerNameA | ||
| 1429 | SetLocalPrimaryComputerNameW | ||
| 1430 | SetLocalTime | ||
| 1431 | SetLocaleInfoA | ||
| 1432 | SetLocaleInfoW | ||
| 1433 | SetMailslotInfo | ||
| 1434 | SetMessageWaitingIndicator | ||
| 1435 | SetNamedPipeAttribute | ||
| 1436 | SetNamedPipeHandleState | ||
| 1437 | SetPriorityClass | ||
| 1438 | SetProcessAffinityMask | ||
| 1439 | SetProcessAffinityUpdateMode | ||
| 1440 | SetProcessDEPPolicy | ||
| 1441 | SetProcessDefaultCpuSetMasks | ||
| 1442 | SetProcessDefaultCpuSets | ||
| 1443 | SetProcessDynamicEHContinuationTargets | ||
| 1444 | SetProcessDynamicEnforcedCetCompatibleRanges | ||
| 1445 | SetProcessInformation | ||
| 1446 | SetProcessMitigationPolicy | ||
| 1447 | SetProcessPreferredUILanguages | ||
| 1448 | SetProcessPriorityBoost | ||
| 1449 | SetProcessShutdownParameters | ||
| 1450 | SetProcessWorkingSetSize | ||
| 1451 | SetProcessWorkingSetSizeEx | ||
| 1452 | SetProtectedPolicy | ||
| 1453 | SetSearchPathMode | ||
| 1454 | SetStdHandle | ||
| 1455 | SetStdHandleEx | ||
| 1456 | SetSystemFileCacheSize | ||
| 1457 | SetSystemPowerState | ||
| 1458 | SetSystemTime | ||
| 1459 | SetSystemTimeAdjustment | ||
| 1460 | SetTapeParameters | ||
| 1461 | SetTapePosition | ||
| 1462 | SetTermsrvAppInstallMode | ||
| 1463 | SetThreadAffinityMask | ||
| 1464 | SetThreadContext | ||
| 1465 | SetThreadDescription | ||
| 1466 | SetThreadErrorMode | ||
| 1467 | SetThreadExecutionState | ||
| 1468 | SetThreadGroupAffinity | ||
| 1469 | SetThreadIdealProcessor | ||
| 1470 | SetThreadIdealProcessorEx | ||
| 1471 | SetThreadInformation | ||
| 1472 | SetThreadLocale | ||
| 1473 | SetThreadPreferredUILanguages | ||
| 1474 | SetThreadPriority | ||
| 1475 | SetThreadPriorityBoost | ||
| 1476 | SetThreadSelectedCpuSetMasks | ||
| 1477 | SetThreadSelectedCpuSets | ||
| 1478 | SetThreadStackGuarantee | ||
| 1479 | ; MSDN says this is exported from ADVAPI32.DLL. | ||
| 1480 | ; SetThreadToken | ||
| 1481 | SetThreadUILanguage | ||
| 1482 | SetThreadpoolStackInformation | ||
| 1483 | SetThreadpoolThreadMaximum | ||
| 1484 | SetThreadpoolThreadMinimum | ||
| 1485 | SetThreadpoolTimer | ||
| 1486 | SetThreadpoolTimerEx | ||
| 1487 | SetThreadpoolWait | ||
| 1488 | SetThreadpoolWaitEx | ||
| 1489 | SetTimeZoneInformation | ||
| 1490 | SetTimerQueueTimer | ||
| 1491 | SetUmsThreadInformation | ||
| 1492 | SetUnhandledExceptionFilter | ||
| 1493 | SetUserGeoID | ||
| 1494 | SetUserGeoName | ||
| 1495 | SetVDMCurrentDirectories | ||
| 1496 | SetVolumeLabelA | ||
| 1497 | SetVolumeLabelW | ||
| 1498 | SetVolumeMountPointA | ||
| 1499 | SetVolumeMountPointW | ||
| 1500 | SetVolumeMountPointWStub | ||
| 1501 | SetWaitableTimer | ||
| 1502 | SetWaitableTimerEx | ||
| 1503 | SetXStateFeaturesMask | ||
| 1504 | SetupComm | ||
| 1505 | ShowConsoleCursor | ||
| 1506 | SignalObjectAndWait | ||
| 1507 | SizeofResource | ||
| 1508 | Sleep | ||
| 1509 | SleepConditionVariableCS | ||
| 1510 | SleepConditionVariableSRW | ||
| 1511 | SleepEx | ||
| 1512 | SortCloseHandle | ||
| 1513 | SortGetHandle | ||
| 1514 | StartThreadpoolIo | ||
| 1515 | SubmitIoRing | ||
| 1516 | SubmitThreadpoolWork | ||
| 1517 | SuspendThread | ||
| 1518 | SwitchToFiber | ||
| 1519 | SwitchToThread | ||
| 1520 | SystemTimeToFileTime | ||
| 1521 | SystemTimeToTzSpecificLocalTime | ||
| 1522 | SystemTimeToTzSpecificLocalTimeEx | ||
| 1523 | TerminateJobObject | ||
| 1524 | TerminateProcess | ||
| 1525 | TerminateThread | ||
| 1526 | TermsrvAppInstallMode | ||
| 1527 | TermsrvConvertSysRootToUserDir | ||
| 1528 | TermsrvCreateRegEntry | ||
| 1529 | TermsrvDeleteKey | ||
| 1530 | TermsrvDeleteValue | ||
| 1531 | TermsrvGetPreSetValue | ||
| 1532 | TermsrvGetWindowsDirectoryA | ||
| 1533 | TermsrvGetWindowsDirectoryW | ||
| 1534 | TermsrvOpenRegEntry | ||
| 1535 | TermsrvOpenUserClasses | ||
| 1536 | TermsrvRestoreKey | ||
| 1537 | TermsrvSetKeySecurity | ||
| 1538 | TermsrvSetValueKey | ||
| 1539 | TermsrvSyncUserIniFileExt | ||
| 1540 | Thread32First | ||
| 1541 | Thread32Next | ||
| 1542 | TlsAlloc | ||
| 1543 | TlsFree | ||
| 1544 | TlsGetValue | ||
| 1545 | TlsSetValue | ||
| 1546 | Toolhelp32ReadProcessMemory | ||
| 1547 | TransactNamedPipe | ||
| 1548 | TransmitCommChar | ||
| 1549 | TryAcquireSRWLockExclusive | ||
| 1550 | TryAcquireSRWLockShared | ||
| 1551 | TryEnterCriticalSection | ||
| 1552 | TrySubmitThreadpoolCallback | ||
| 1553 | TzSpecificLocalTimeToSystemTime | ||
| 1554 | TzSpecificLocalTimeToSystemTimeEx | ||
| 1555 | UTRegister | ||
| 1556 | UTUnRegister | ||
| 1557 | UmsThreadYield | ||
| 1558 | UnhandledExceptionFilter | ||
| 1559 | UnlockFile | ||
| 1560 | UnlockFileEx | ||
| 1561 | UnmapViewOfFile | ||
| 1562 | UnmapViewOfFileEx | ||
| 1563 | UnregisterApplicationRecoveryCallback | ||
| 1564 | UnregisterApplicationRestart | ||
| 1565 | UnregisterBadMemoryNotification | ||
| 1566 | UnregisterConsoleIME | ||
| 1567 | UnregisterWait | ||
| 1568 | UnregisterWaitEx | ||
| 1569 | UnregisterWaitUntilOOBECompleted | ||
| 1570 | UpdateCalendarDayOfWeek | ||
| 1571 | UpdateProcThreadAttribute | ||
| 1572 | UpdateResourceA | ||
| 1573 | UpdateResourceW | ||
| 1574 | VDMConsoleOperation | ||
| 1575 | VDMOperationStarted | ||
| 1576 | ValidateLCType | ||
| 1577 | ValidateLocale | ||
| 1578 | VerLanguageNameA | ||
| 1579 | VerLanguageNameW | ||
| 1580 | VerSetConditionMask | ||
| 1581 | VerifyConsoleIoHandle | ||
| 1582 | VerifyScripts | ||
| 1583 | VerifyVersionInfoA | ||
| 1584 | VerifyVersionInfoW | ||
| 1585 | VirtualAlloc | ||
| 1586 | VirtualAllocEx | ||
| 1587 | VirtualAllocExNuma | ||
| 1588 | VirtualFree | ||
| 1589 | VirtualFreeEx | ||
| 1590 | VirtualLock | ||
| 1591 | VirtualProtect | ||
| 1592 | VirtualProtectEx | ||
| 1593 | VirtualQuery | ||
| 1594 | VirtualQueryEx | ||
| 1595 | VirtualUnlock | ||
| 1596 | WTSGetActiveConsoleSessionId | ||
| 1597 | WaitCommEvent | ||
| 1598 | WaitForDebugEvent | ||
| 1599 | WaitForDebugEventEx | ||
| 1600 | WaitForMultipleObjects | ||
| 1601 | WaitForMultipleObjectsEx | ||
| 1602 | WaitForSingleObject | ||
| 1603 | WaitForSingleObjectEx | ||
| 1604 | WaitForThreadpoolIoCallbacks | ||
| 1605 | WaitForThreadpoolTimerCallbacks | ||
| 1606 | WaitForThreadpoolWaitCallbacks | ||
| 1607 | WaitForThreadpoolWorkCallbacks | ||
| 1608 | WaitNamedPipeA | ||
| 1609 | WaitNamedPipeW | ||
| 1610 | WakeAllConditionVariable | ||
| 1611 | ; MSDN says it's in Kernel32.dll but it's not. | ||
| 1612 | ; Link with libsynchronization.a instead. | ||
| 1613 | ; Commented out for compatibility with older | ||
| 1614 | ; versions of Windows. | ||
| 1615 | ;WaitOnAddress | ||
| 1616 | ;WakeByAddressSingle | ||
| 1617 | ;WakeByAddressAll | ||
| 1618 | WakeConditionVariable | ||
| 1619 | WerGetFlags | ||
| 1620 | WerGetFlagsWorker | ||
| 1621 | WerRegisterAdditionalProcess | ||
| 1622 | WerRegisterAppLocalDump | ||
| 1623 | WerRegisterCustomMetadata | ||
| 1624 | WerRegisterExcludedMemoryBlock | ||
| 1625 | WerRegisterFile | ||
| 1626 | WerRegisterFileWorker | ||
| 1627 | WerRegisterMemoryBlock | ||
| 1628 | WerRegisterMemoryBlockWorker | ||
| 1629 | WerRegisterRuntimeExceptionModule | ||
| 1630 | WerRegisterRuntimeExceptionModuleWorker | ||
| 1631 | WerSetFlags | ||
| 1632 | WerSetFlagsWorker | ||
| 1633 | WerUnregisterAdditionalProcess | ||
| 1634 | WerUnregisterAppLocalDump | ||
| 1635 | WerUnregisterCustomMetadata | ||
| 1636 | WerUnregisterExcludedMemoryBlock | ||
| 1637 | WerUnregisterFile | ||
| 1638 | WerUnregisterFileWorker | ||
| 1639 | WerUnregisterMemoryBlock | ||
| 1640 | WerUnregisterMemoryBlockWorker | ||
| 1641 | WerUnregisterRuntimeExceptionModule | ||
| 1642 | WerUnregisterRuntimeExceptionModuleWorker | ||
| 1643 | WerpCleanupMessageMapping | ||
| 1644 | WerpGetDebugger | ||
| 1645 | WerpInitiateRemoteRecovery | ||
| 1646 | WerpLaunchAeDebug | ||
| 1647 | WerpNotifyLoadStringResource | ||
| 1648 | WerpNotifyLoadStringResourceEx | ||
| 1649 | WerpNotifyLoadStringResourceWorker | ||
| 1650 | WerpNotifyUseStringResource | ||
| 1651 | WerpNotifyUseStringResourceWorker | ||
| 1652 | WerpStringLookup | ||
| 1653 | WideCharToMultiByte | ||
| 1654 | WinExec | ||
| 1655 | Wow64DisableWow64FsRedirection | ||
| 1656 | Wow64EnableWow64FsRedirection | ||
| 1657 | Wow64GetThreadContext | ||
| 1658 | Wow64GetThreadSelectorEntry | ||
| 1659 | Wow64RevertWow64FsRedirection | ||
| 1660 | Wow64SetThreadContext | ||
| 1661 | Wow64SuspendThread | ||
| 1662 | WriteConsoleA | ||
| 1663 | WriteConsoleInputA | ||
| 1664 | WriteConsoleInputVDMA | ||
| 1665 | WriteConsoleInputVDMW | ||
| 1666 | WriteConsoleInputW | ||
| 1667 | WriteConsoleOutputA | ||
| 1668 | WriteConsoleOutputAttribute | ||
| 1669 | WriteConsoleOutputCharacterA | ||
| 1670 | WriteConsoleOutputCharacterW | ||
| 1671 | WriteConsoleOutputW | ||
| 1672 | WriteConsoleW | ||
| 1673 | WriteFile | ||
| 1674 | WriteFileEx | ||
| 1675 | WriteFileGather | ||
| 1676 | WritePrivateProfileSectionA | ||
| 1677 | WritePrivateProfileSectionW | ||
| 1678 | WritePrivateProfileStringA | ||
| 1679 | WritePrivateProfileStringW | ||
| 1680 | WritePrivateProfileStructA | ||
| 1681 | WritePrivateProfileStructW | ||
| 1682 | WriteProcessMemory | ||
| 1683 | WriteProfileSectionA | ||
| 1684 | WriteProfileSectionW | ||
| 1685 | WriteProfileStringA | ||
| 1686 | WriteProfileStringW | ||
| 1687 | WriteTapemark | ||
| 1688 | ZombifyActCtx | ||
| 1689 | ZombifyActCtxWorker | ||
| 1690 | __C_specific_handler | ||
| 1691 | ; This isn't always available and shouldn't be linked from here, but should | ||
| 1692 | ; be statically linked from the compiler support library. | ||
| 1693 | ; | ||
| 1694 | __misaligned_access | ||
| 1695 | _hread | ||
| 1696 | _hwrite | ||
| 1697 | _lclose | ||
| 1698 | _lcreat | ||
| 1699 | _llseek | ||
| 1700 | _local_unwind | ||
| 1701 | _lopen | ||
| 1702 | _lread | ||
| 1703 | _lwrite | ||
| 1704 | lstrcat | ||
| 1705 | lstrcatA | ||
| 1706 | lstrcatW | ||
| 1707 | lstrcmp | ||
| 1708 | lstrcmpA | ||
| 1709 | lstrcmpW | ||
| 1710 | lstrcmpi | ||
| 1711 | lstrcmpiA | ||
| 1712 | lstrcmpiW | ||
| 1713 | lstrcpy | ||
| 1714 | lstrcpyA | ||
| 1715 | lstrcpyW | ||
| 1716 | lstrcpyn | ||
| 1717 | lstrcpynA | ||
| 1718 | lstrcpynW | ||
| 1719 | lstrlen | ||
| 1720 | lstrlenA | ||
| 1721 | lstrlenW | ||
| 1722 | ; | ||
| 1723 | ; MSDN says these functions are exported | ||
| 1724 | ; from winmm.dll. Commented out for | ||
| 1725 | ; compatibility with older versions of | ||
| 1726 | ; Windows. | ||
| 1727 | ; | ||
| 1728 | ;timeBeginPeriod | ||
| 1729 | ;timeEndPeriod | ||
| 1730 | ;timeGetDevCaps | ||
| 1731 | ;timeGetSystemTime | ||
| 1732 | ;timeGetTime | ||
| 1733 | uaw_lstrcmpW | ||
| 1734 | uaw_lstrcmpiW | ||
| 1735 | uaw_lstrlenW | ||
| 1736 | uaw_wcschr | ||
| 1737 | uaw_wcscpy | ||
| 1738 | uaw_wcsicmp | ||
| 1739 | uaw_wcslen | ||
| 1740 | uaw_wcsrchr | ||
lib/libc/mingw/lib64/winhvplatform.def deleted-68| ... | @@ -1,68 +0,0 @@ | ||
| 1 | LIBRARY "winhvplatform.dll" | ||
| 2 | EXPORTS | ||
| 3 | WHvAcceptPartitionMigration | ||
| 4 | WHvAdviseGpaRange | ||
| 5 | WHvAllocateVpciResource | ||
| 6 | WHvCancelPartitionMigration | ||
| 7 | WHvCancelRunVirtualProcessor | ||
| 8 | WHvCompletePartitionMigration | ||
| 9 | WHvCreateNotificationPort | ||
| 10 | WHvCreatePartition | ||
| 11 | WHvCreateTrigger | ||
| 12 | WHvCreateVirtualProcessor | ||
| 13 | WHvCreateVirtualProcessor2 | ||
| 14 | WHvCreateVpciDevice | ||
| 15 | WHvDeleteNotificationPort | ||
| 16 | WHvDeletePartition | ||
| 17 | WHvDeleteTrigger | ||
| 18 | WHvDeleteVirtualProcessor | ||
| 19 | WHvDeleteVpciDevice | ||
| 20 | WHvGetCapability | ||
| 21 | WHvGetInterruptTargetVpSet | ||
| 22 | WHvGetPartitionCounters | ||
| 23 | WHvGetPartitionProperty | ||
| 24 | WHvGetVirtualProcessorCounters | ||
| 25 | WHvGetVirtualProcessorCpuidOutput | ||
| 26 | WHvGetVirtualProcessorInterruptControllerState | ||
| 27 | WHvGetVirtualProcessorInterruptControllerState2 | ||
| 28 | WHvGetVirtualProcessorRegisters | ||
| 29 | WHvGetVirtualProcessorState | ||
| 30 | WHvGetVirtualProcessorXsaveState | ||
| 31 | WHvGetVpciDeviceInterruptTarget | ||
| 32 | WHvGetVpciDeviceNotification | ||
| 33 | WHvGetVpciDeviceProperty | ||
| 34 | WHvMapGpaRange | ||
| 35 | WHvMapGpaRange2 | ||
| 36 | WHvMapVpciDeviceInterrupt | ||
| 37 | WHvMapVpciDeviceMmioRanges | ||
| 38 | WHvPostVirtualProcessorSynicMessage | ||
| 39 | WHvQueryGpaRangeDirtyBitmap | ||
| 40 | WHvReadGpaRange | ||
| 41 | WHvReadVpciDeviceRegister | ||
| 42 | WHvRegisterPartitionDoorbellEvent | ||
| 43 | WHvRequestInterrupt | ||
| 44 | WHvRequestVpciDeviceInterrupt | ||
| 45 | WHvResetPartition | ||
| 46 | WHvResumePartitionTime | ||
| 47 | WHvRetargetVpciDeviceInterrupt | ||
| 48 | WHvRunVirtualProcessor | ||
| 49 | WHvSetNotificationPortProperty | ||
| 50 | WHvSetPartitionProperty | ||
| 51 | WHvSetVirtualProcessorInterruptControllerState | ||
| 52 | WHvSetVirtualProcessorInterruptControllerState2 | ||
| 53 | WHvSetVirtualProcessorRegisters | ||
| 54 | WHvSetVirtualProcessorState | ||
| 55 | WHvSetVirtualProcessorXsaveState | ||
| 56 | WHvSetVpciDevicePowerState | ||
| 57 | WHvSetupPartition | ||
| 58 | WHvSignalVirtualProcessorSynicEvent | ||
| 59 | WHvStartPartitionMigration | ||
| 60 | WHvSuspendPartitionTime | ||
| 61 | WHvTranslateGva | ||
| 62 | WHvUnmapGpaRange | ||
| 63 | WHvUnmapVpciDeviceInterrupt | ||
| 64 | WHvUnmapVpciDeviceMmioRanges | ||
| 65 | WHvUnregisterPartitionDoorbellEvent | ||
| 66 | WHvUpdateTriggerParameters | ||
| 67 | WHvWriteGpaRange | ||
| 68 | WHvWriteVpciDeviceRegister | ||
lib/libc/mingw/lib64/wintrust.def deleted-136| ... | @@ -1,136 +0,0 @@ | ||
| 1 | ; | ||
| 2 | ; Exports of file WINTRUST.dll | ||
| 3 | ; | ||
| 4 | ; Autogenerated by gen_exportdef | ||
| 5 | ; Written by Kai Tietz, 2007 | ||
| 6 | ; | ||
| 7 | LIBRARY WINTRUST.dll | ||
| 8 | EXPORTS | ||
| 9 | CryptCATVerifyMember | ||
| 10 | CryptSIPGetInfo | ||
| 11 | CryptSIPGetRegWorkingFlags | ||
| 12 | GenericChainCertificateTrust | ||
| 13 | GenericChainFinalProv | ||
| 14 | HTTPSCertificateTrust | ||
| 15 | SoftpubDefCertInit | ||
| 16 | SoftpubFreeDefUsageCallData | ||
| 17 | SoftpubLoadDefUsageCallData | ||
| 18 | WTHelperCertFindIssuerCertificate | ||
| 19 | AddPersonalTrustDBPages | ||
| 20 | CatalogCompactHashDatabase | ||
| 21 | CryptCATAdminAcquireContext | ||
| 22 | CryptCATAdminAddCatalog | ||
| 23 | CryptCATAdminCalcHashFromFileHandle | ||
| 24 | CryptCATAdminEnumCatalogFromHash | ||
| 25 | CryptCATAdminPauseServiceForBackup | ||
| 26 | CryptCATAdminReleaseCatalogContext | ||
| 27 | CryptCATAdminReleaseContext | ||
| 28 | CryptCATAdminRemoveCatalog | ||
| 29 | CryptCATAdminResolveCatalogPath | ||
| 30 | CryptCATCDFClose | ||
| 31 | CryptCATCDFEnumAttributes | ||
| 32 | CryptCATCDFEnumAttributesWithCDFTag | ||
| 33 | CryptCATCDFEnumCatAttributes | ||
| 34 | CryptCATCDFEnumMembers | ||
| 35 | CryptCATCDFEnumMembersByCDFTag | ||
| 36 | CryptCATCDFEnumMembersByCDFTagEx | ||
| 37 | CryptCATCDFOpen | ||
| 38 | CryptCATCatalogInfoFromContext | ||
| 39 | CryptCATClose | ||
| 40 | CryptCATEnumerateAttr | ||
| 41 | CryptCATEnumerateCatAttr | ||
| 42 | CryptCATEnumerateMember | ||
| 43 | CryptCATGetAttrInfo | ||
| 44 | CryptCATGetCatAttrInfo | ||
| 45 | CryptCATGetMemberInfo | ||
| 46 | CryptCATHandleFromStore | ||
| 47 | CryptCATOpen | ||
| 48 | CryptCATPersistStore | ||
| 49 | CryptCATPutAttrInfo | ||
| 50 | CryptCATPutCatAttrInfo | ||
| 51 | CryptCATPutMemberInfo | ||
| 52 | CryptCATStoreFromHandle | ||
| 53 | CryptSIPCreateIndirectData | ||
| 54 | CryptSIPGetSignedDataMsg | ||
| 55 | CryptSIPPutSignedDataMsg | ||
| 56 | CryptSIPRemoveSignedDataMsg | ||
| 57 | CryptSIPVerifyIndirectData | ||
| 58 | DllRegisterServer | ||
| 59 | DllUnregisterServer | ||
| 60 | DriverCleanupPolicy | ||
| 61 | DriverFinalPolicy | ||
| 62 | DriverInitializePolicy | ||
| 63 | FindCertsByIssuer | ||
| 64 | HTTPSFinalProv | ||
| 65 | I_CryptCatAdminMigrateToNewCatDB | ||
| 66 | IsCatalogFile | ||
| 67 | MsCatConstructHashTag | ||
| 68 | MsCatFreeHashTag | ||
| 69 | OfficeCleanupPolicy | ||
| 70 | OfficeInitializePolicy | ||
| 71 | OpenPersonalTrustDBDialog | ||
| 72 | OpenPersonalTrustDBDialogEx | ||
| 73 | SoftpubAuthenticode | ||
| 74 | SoftpubCheckCert | ||
| 75 | SoftpubCleanup | ||
| 76 | SoftpubDllRegisterServer | ||
| 77 | SoftpubDllUnregisterServer | ||
| 78 | SoftpubDumpStructure | ||
| 79 | SoftpubInitialize | ||
| 80 | SoftpubLoadMessage | ||
| 81 | SoftpubLoadSignature | ||
| 82 | TrustDecode | ||
| 83 | TrustFindIssuerCertificate | ||
| 84 | TrustFreeDecode | ||
| 85 | TrustIsCertificateSelfSigned | ||
| 86 | TrustOpenStores | ||
| 87 | WTHelperCertCheckValidSignature | ||
| 88 | WTHelperCertIsSelfSigned | ||
| 89 | WTHelperCheckCertUsage | ||
| 90 | WTHelperGetAgencyInfo | ||
| 91 | WTHelperGetFileHandle | ||
| 92 | WTHelperGetFileHash | ||
| 93 | WTHelperGetFileName | ||
| 94 | WTHelperGetKnownUsages | ||
| 95 | WTHelperGetProvCertFromChain | ||
| 96 | WTHelperGetProvPrivateDataFromChain | ||
| 97 | WTHelperGetProvSignerFromChain | ||
| 98 | WTHelperIsInRootStore | ||
| 99 | WTHelperOpenKnownStores | ||
| 100 | WTHelperProvDataFromStateData | ||
| 101 | WVTAsn1CatMemberInfoDecode | ||
| 102 | WVTAsn1CatMemberInfoEncode | ||
| 103 | WVTAsn1CatNameValueDecode | ||
| 104 | WVTAsn1CatNameValueEncode | ||
| 105 | WVTAsn1SpcFinancialCriteriaInfoDecode | ||
| 106 | WVTAsn1SpcFinancialCriteriaInfoEncode | ||
| 107 | WVTAsn1SpcIndirectDataContentDecode | ||
| 108 | WVTAsn1SpcIndirectDataContentEncode | ||
| 109 | WVTAsn1SpcLinkDecode | ||
| 110 | WVTAsn1SpcLinkEncode | ||
| 111 | WVTAsn1SpcMinimalCriteriaInfoDecode | ||
| 112 | WVTAsn1SpcMinimalCriteriaInfoEncode | ||
| 113 | WVTAsn1SpcPeImageDataDecode | ||
| 114 | WVTAsn1SpcPeImageDataEncode | ||
| 115 | WVTAsn1SpcSigInfoDecode | ||
| 116 | WVTAsn1SpcSigInfoEncode | ||
| 117 | WVTAsn1SpcSpAgencyInfoDecode | ||
| 118 | WVTAsn1SpcSpAgencyInfoEncode | ||
| 119 | WVTAsn1SpcSpOpusInfoDecode | ||
| 120 | WVTAsn1SpcSpOpusInfoEncode | ||
| 121 | WVTAsn1SpcStatementTypeDecode | ||
| 122 | WVTAsn1SpcStatementTypeEncode | ||
| 123 | WinVerifyTrust | ||
| 124 | WinVerifyTrustEx | ||
| 125 | WintrustAddActionID | ||
| 126 | WintrustAddDefaultForUsage | ||
| 127 | WintrustCertificateTrust | ||
| 128 | WintrustGetDefaultForUsage | ||
| 129 | WintrustGetRegPolicyFlags | ||
| 130 | WintrustLoadFunctionPointers | ||
| 131 | WintrustRemoveActionID | ||
| 132 | WintrustSetRegPolicyFlags | ||
| 133 | mscat32DllRegisterServer | ||
| 134 | mscat32DllUnregisterServer | ||
| 135 | mssip32DllRegisterServer | ||
| 136 | mssip32DllUnregisterServer | ||
lib/libc/mingw/lib64/ws2_32.def created+200| ... | @@ -0,0 +1,200 @@ | ||
| 1 | |||
| 2 | LIBRARY "WS2_32.dll" | ||
| 3 | EXPORTS | ||
| 4 | accept | ||
| 5 | bind | ||
| 6 | closesocket | ||
| 7 | connect | ||
| 8 | getpeername | ||
| 9 | getsockname | ||
| 10 | getsockopt | ||
| 11 | htonl | ||
| 12 | htons | ||
| 13 | ioctlsocket | ||
| 14 | inet_addr | ||
| 15 | inet_ntoa | ||
| 16 | listen | ||
| 17 | ntohl | ||
| 18 | ntohs | ||
| 19 | recv | ||
| 20 | recvfrom | ||
| 21 | select | ||
| 22 | send | ||
| 23 | sendto | ||
| 24 | setsockopt | ||
| 25 | shutdown | ||
| 26 | socket | ||
| 27 | WSApSetPostRoutine | ||
| 28 | FreeAddrInfoEx | ||
| 29 | FreeAddrInfoExW | ||
| 30 | FreeAddrInfoW | ||
| 31 | GetAddrInfoExA | ||
| 32 | GetAddrInfoExCancel | ||
| 33 | GetAddrInfoExOverlappedResult | ||
| 34 | GetAddrInfoExW | ||
| 35 | GetAddrInfoW | ||
| 36 | GetHostNameW | ||
| 37 | GetNameInfoW | ||
| 38 | InetNtopW | ||
| 39 | InetPtonW | ||
| 40 | ProcessSocketNotifications | ||
| 41 | SetAddrInfoExA | ||
| 42 | SetAddrInfoExW | ||
| 43 | WPUCompleteOverlappedRequest | ||
| 44 | WPUGetProviderPathEx | ||
| 45 | WSAAccept | ||
| 46 | WSAAddressToStringA | ||
| 47 | WSAAddressToStringW | ||
| 48 | WSAAdvertiseProvider | ||
| 49 | WSACloseEvent | ||
| 50 | WSAConnect | ||
| 51 | WSAConnectByList | ||
| 52 | WSAConnectByNameA | ||
| 53 | WSAConnectByNameW | ||
| 54 | WSACreateEvent | ||
| 55 | gethostbyaddr | ||
| 56 | gethostbyname | ||
| 57 | getprotobyname | ||
| 58 | getprotobynumber | ||
| 59 | getservbyname | ||
| 60 | getservbyport | ||
| 61 | gethostname | ||
| 62 | WSADuplicateSocketA | ||
| 63 | WSADuplicateSocketW | ||
| 64 | WSAEnumNameSpaceProvidersA | ||
| 65 | WSAEnumNameSpaceProvidersExA | ||
| 66 | WSAEnumNameSpaceProvidersExW | ||
| 67 | WSAEnumNameSpaceProvidersW | ||
| 68 | WSAEnumNetworkEvents | ||
| 69 | WSAEnumProtocolsA | ||
| 70 | WSAEnumProtocolsW | ||
| 71 | WSAEventSelect | ||
| 72 | WSAGetOverlappedResult | ||
| 73 | WSAGetQOSByName | ||
| 74 | WSAGetServiceClassInfoA | ||
| 75 | WSAGetServiceClassInfoW | ||
| 76 | WSAGetServiceClassNameByClassIdA | ||
| 77 | WSAGetServiceClassNameByClassIdW | ||
| 78 | WSAHtonl | ||
| 79 | WSAHtons | ||
| 80 | WSAInstallServiceClassA | ||
| 81 | WSAInstallServiceClassW | ||
| 82 | WSAIoctl | ||
| 83 | WSAJoinLeaf | ||
| 84 | WSALookupServiceBeginA | ||
| 85 | WSALookupServiceBeginW | ||
| 86 | WSALookupServiceEnd | ||
| 87 | WSALookupServiceNextA | ||
| 88 | WSALookupServiceNextW | ||
| 89 | WSANSPIoctl | ||
| 90 | WSANtohl | ||
| 91 | WSANtohs | ||
| 92 | WSAPoll | ||
| 93 | WSAProviderCompleteAsyncCall | ||
| 94 | WSAProviderConfigChange | ||
| 95 | WSARecv | ||
| 96 | WSARecvDisconnect | ||
| 97 | WSARecvFrom | ||
| 98 | WSARemoveServiceClass | ||
| 99 | WSAResetEvent | ||
| 100 | WSASend | ||
| 101 | WSASendDisconnect | ||
| 102 | WSASendMsg | ||
| 103 | WSASendTo | ||
| 104 | WSASetEvent | ||
| 105 | WSAAsyncSelect | ||
| 106 | WSAAsyncGetHostByAddr | ||
| 107 | WSAAsyncGetHostByName | ||
| 108 | WSAAsyncGetProtoByNumber | ||
| 109 | WSAAsyncGetProtoByName | ||
| 110 | WSAAsyncGetServByPort | ||
| 111 | WSAAsyncGetServByName | ||
| 112 | WSACancelAsyncRequest | ||
| 113 | WSASetBlockingHook | ||
| 114 | WSAUnhookBlockingHook | ||
| 115 | WSAGetLastError | ||
| 116 | WSASetLastError | ||
| 117 | WSACancelBlockingCall | ||
| 118 | WSAIsBlocking | ||
| 119 | WSAStartup | ||
| 120 | WSACleanup | ||
| 121 | WSASetServiceA | ||
| 122 | WSASetServiceW | ||
| 123 | WSASocketA | ||
| 124 | WSASocketW | ||
| 125 | WSAStringToAddressA | ||
| 126 | WSAStringToAddressW | ||
| 127 | WSAUnadvertiseProvider | ||
| 128 | WSAWaitForMultipleEvents | ||
| 129 | WSCDeinstallProvider | ||
| 130 | WSCDeinstallProvider32 | ||
| 131 | WSCDeinstallProviderEx | ||
| 132 | WSCEnableNSProvider | ||
| 133 | WSCEnableNSProvider32 | ||
| 134 | WSCEnumNameSpaceProviders32 | ||
| 135 | WSCEnumNameSpaceProvidersEx32 | ||
| 136 | WSCEnumProtocols | ||
| 137 | WSCEnumProtocolsEx | ||
| 138 | WSCEnumProtocols32 | ||
| 139 | WSCGetApplicationCategory | ||
| 140 | WSCGetApplicationCategoryEx | ||
| 141 | WSCGetProviderInfo | ||
| 142 | WSCGetProviderInfo32 | ||
| 143 | WSCGetProviderPath | ||
| 144 | WSCGetProviderPath32 | ||
| 145 | WSCInstallNameSpace | ||
| 146 | WSCInstallNameSpace32 | ||
| 147 | WSCInstallNameSpaceEx | ||
| 148 | WSCInstallNameSpaceEx2 | ||
| 149 | WSCInstallNameSpaceEx32 | ||
| 150 | WSCInstallProvider | ||
| 151 | WSCInstallProvider64_32 | ||
| 152 | WSCInstallProviderAndChains | ||
| 153 | WSCInstallProviderAndChains64_32 | ||
| 154 | WSCInstallProviderEx | ||
| 155 | WSCSetApplicationCategory | ||
| 156 | WSCSetApplicationCategoryEx | ||
| 157 | WSCSetProviderInfo | ||
| 158 | WSCSetProviderInfo32 | ||
| 159 | WSCUnInstallNameSpace | ||
| 160 | WSCUnInstallNameSpace32 | ||
| 161 | WSCUnInstallNameSpaceEx2 | ||
| 162 | WSCUpdateProvider | ||
| 163 | WSCUpdateProvider32 | ||
| 164 | WSCUpdateProviderEx | ||
| 165 | WSCWriteNameSpaceOrder | ||
| 166 | WSCWriteNameSpaceOrder32 | ||
| 167 | WSCWriteProviderOrder | ||
| 168 | WSCWriteProviderOrder32 | ||
| 169 | WSCWriteProviderOrderEx | ||
| 170 | WahCloseApcHelper | ||
| 171 | __WSAFDIsSet | ||
| 172 | WahCloseHandleHelper | ||
| 173 | WahCloseNotificationHandleHelper | ||
| 174 | WahCloseSocketHandle | ||
| 175 | WahCloseThread | ||
| 176 | WahCompleteRequest | ||
| 177 | WahCreateHandleContextTable | ||
| 178 | WahCreateNotificationHandle | ||
| 179 | WahCreateSocketHandle | ||
| 180 | WahDestroyHandleContextTable | ||
| 181 | WahDisableNonIFSHandleSupport | ||
| 182 | WahEnableNonIFSHandleSupport | ||
| 183 | WahEnumerateHandleContexts | ||
| 184 | WahInsertHandleContext | ||
| 185 | WahNotifyAllProcesses | ||
| 186 | WahOpenApcHelper | ||
| 187 | WahOpenCurrentThread | ||
| 188 | WahOpenHandleHelper | ||
| 189 | WahOpenNotificationHandleHelper | ||
| 190 | WahQueueUserApc | ||
| 191 | WahReferenceContextByHandle | ||
| 192 | WahRemoveHandleContext | ||
| 193 | WahWaitForNotification | ||
| 194 | WahWriteLSPEvent | ||
| 195 | freeaddrinfo | ||
| 196 | getaddrinfo | ||
| 197 | getnameinfo | ||
| 198 | inet_ntop | ||
| 199 | inet_pton | ||
| 200 | WEP | ||
lib/libc/mingw/libarm32/bcryptprimitives.def deleted-15| ... | @@ -1,15 +0,0 @@ | ||
| 1 | ; | ||
| 2 | ; Definition file of bcryptPrimitives.dll | ||
| 3 | ; Automatic generated by gendef | ||
| 4 | ; written by Kai Tietz 2008-2014 | ||
| 5 | ; | ||
| 6 | LIBRARY "bcryptPrimitives.dll" | ||
| 7 | EXPORTS | ||
| 8 | GetAsymmetricEncryptionInterface | ||
| 9 | GetCipherInterface | ||
| 10 | GetHashInterface | ||
| 11 | GetKeyDerivationInterface | ||
| 12 | GetRngInterface | ||
| 13 | GetSecretAgreementInterface | ||
| 14 | GetSignatureInterface | ||
| 15 | ProcessPrng | ||
lib/libc/mingw/libarm32/kernelbase.def+2-2| ... | @@ -1886,10 +1886,10 @@ _exit | ... | @@ -1886,10 +1886,10 @@ _exit |
| 1886 | _initterm | 1886 | _initterm |
| 1887 | _initterm_e | 1887 | _initterm_e |
| 1888 | _invalid_parameter | 1888 | _invalid_parameter |
| 1889 | _onexit | 1889 | ; _onexit ; disable _onexit for compatibility with DLL builds, real _onexit function provided by mingw-w64 |
| 1890 | _purecall | 1890 | _purecall |
| 1891 | _time64 | 1891 | _time64 |
| 1892 | atexit | 1892 | _crt_atexit == atexit ; rename atexit to _crt_atexit for compatibility with UCRT, real atexit function provided by mingw-w64 |
| 1893 | exit | 1893 | exit |
| 1894 | hgets | 1894 | hgets |
| 1895 | hwprintf | 1895 | hwprintf |
lib/libc/mingw/libarm32/ninput.def deleted-37| ... | @@ -1,37 +0,0 @@ | ||
| 1 | ; | ||
| 2 | ; Definition file of NInput.dll | ||
| 3 | ; Automatic generated by gendef | ||
| 4 | ; written by Kai Tietz 2008-2014 | ||
| 5 | ; | ||
| 6 | LIBRARY "NInput.dll" | ||
| 7 | EXPORTS | ||
| 8 | DefaultInputHandler | ||
| 9 | AddPointerInteractionContext | ||
| 10 | BufferPointerPacketsInteractionContext | ||
| 11 | CreateInteractionContext | ||
| 12 | DestroyInteractionContext | ||
| 13 | GetCrossSlideParameterInteractionContext | ||
| 14 | GetInertiaParameterInteractionContext | ||
| 15 | GetInteractionConfigurationInteractionContext | ||
| 16 | GetMouseWheelParameterInteractionContext | ||
| 17 | GetPropertyInteractionContext | ||
| 18 | GetStateInteractionContext | ||
| 19 | ProcessBufferedPacketsInteractionContext | ||
| 20 | ProcessInertiaInteractionContext | ||
| 21 | ProcessPointerFramesInteractionContext | ||
| 22 | RegisterOutputCallbackInteractionContext | ||
| 23 | RemovePointerInteractionContext | ||
| 24 | ResetInteractionContext | ||
| 25 | SetCrossSlideParametersInteractionContext | ||
| 26 | SetInertiaParameterInteractionContext | ||
| 27 | SetInteractionConfigurationInteractionContext | ||
| 28 | SetMouseWheelParameterInteractionContext | ||
| 29 | SetPivotInteractionContext | ||
| 30 | SetPropertyInteractionContext | ||
| 31 | StopInteractionContext | ||
| 32 | ord_2500 @2500 | ||
| 33 | ord_2501 @2501 | ||
| 34 | ord_2502 @2502 | ||
| 35 | ord_2503 @2503 | ||
| 36 | ord_2504 @2504 | ||
| 37 | ord_2505 @2505 | ||
lib/libc/mingw/libarm32/winbrand.def deleted-19| ... | @@ -1,19 +0,0 @@ | ||
| 1 | ; | ||
| 2 | ; Definition file of WINBRAND.dll | ||
| 3 | ; Automatic generated by gendef | ||
| 4 | ; written by Kai Tietz 2008-2014 | ||
| 5 | ; | ||
| 6 | LIBRARY "WINBRAND.dll" | ||
| 7 | EXPORTS | ||
| 8 | BrandingFormatString | ||
| 9 | BrandingLoadBitmap | ||
| 10 | BrandingLoadCursor | ||
| 11 | BrandingLoadIcon | ||
| 12 | BrandingLoadImage | ||
| 13 | BrandingLoadString | ||
| 14 | EulaFreeBuffer | ||
| 15 | GetEULAFile | ||
| 16 | GetEULAInCurrentUILanguage | ||
| 17 | GetHinstanceByNameSpace | ||
| 18 | GetInstalledEULAPath | ||
| 19 | InstallEULA | ||
lib/libc/mingw/libarm32/wintrust.def deleted-150| ... | @@ -1,150 +0,0 @@ | ||
| 1 | ; | ||
| 2 | ; Definition file of WINTRUST.dll | ||
| 3 | ; Automatic generated by gendef | ||
| 4 | ; written by Kai Tietz 2008-2014 | ||
| 5 | ; | ||
| 6 | LIBRARY "WINTRUST.dll" | ||
| 7 | EXPORTS | ||
| 8 | CryptCATVerifyMember | ||
| 9 | CryptSIPGetInfo | ||
| 10 | CryptSIPGetRegWorkingFlags | ||
| 11 | GenericChainCertificateTrust | ||
| 12 | GenericChainFinalProv | ||
| 13 | HTTPSCertificateTrust | ||
| 14 | SoftpubDefCertInit | ||
| 15 | SoftpubFreeDefUsageCallData | ||
| 16 | SoftpubLoadDefUsageCallData | ||
| 17 | WTHelperCertFindIssuerCertificate | ||
| 18 | AddPersonalTrustDBPages | ||
| 19 | CatalogCompactHashDatabase | ||
| 20 | CryptCATAdminAcquireContext | ||
| 21 | CryptCATAdminAcquireContext2 | ||
| 22 | CryptCATAdminAddCatalog | ||
| 23 | CryptCATAdminCalcHashFromFileHandle | ||
| 24 | CryptCATAdminCalcHashFromFileHandle2 | ||
| 25 | CryptCATAdminEnumCatalogFromHash | ||
| 26 | CryptCATAdminPauseServiceForBackup | ||
| 27 | CryptCATAdminReleaseCatalogContext | ||
| 28 | CryptCATAdminReleaseContext | ||
| 29 | CryptCATAdminRemoveCatalog | ||
| 30 | CryptCATAdminResolveCatalogPath | ||
| 31 | CryptCATAllocSortedMemberInfo | ||
| 32 | CryptCATCDFClose | ||
| 33 | CryptCATCDFEnumAttributes | ||
| 34 | CryptCATCDFEnumAttributesWithCDFTag | ||
| 35 | CryptCATCDFEnumCatAttributes | ||
| 36 | CryptCATCDFEnumMembers | ||
| 37 | CryptCATCDFEnumMembersByCDFTag | ||
| 38 | CryptCATCDFEnumMembersByCDFTagEx | ||
| 39 | CryptCATCDFOpen | ||
| 40 | CryptCATCatalogInfoFromContext | ||
| 41 | CryptCATClose | ||
| 42 | CryptCATEnumerateAttr | ||
| 43 | CryptCATEnumerateCatAttr | ||
| 44 | CryptCATEnumerateMember | ||
| 45 | CryptCATFreeSortedMemberInfo | ||
| 46 | CryptCATGetAttrInfo | ||
| 47 | CryptCATGetCatAttrInfo | ||
| 48 | CryptCATGetMemberInfo | ||
| 49 | CryptCATHandleFromStore | ||
| 50 | CryptCATOpen | ||
| 51 | CryptCATPersistStore | ||
| 52 | CryptCATPutAttrInfo | ||
| 53 | CryptCATPutCatAttrInfo | ||
| 54 | CryptCATPutMemberInfo | ||
| 55 | CryptCATStoreFromHandle | ||
| 56 | CryptSIPCreateIndirectData | ||
| 57 | CryptSIPGetCaps | ||
| 58 | CryptSIPGetSealedDigest | ||
| 59 | CryptSIPGetSignedDataMsg | ||
| 60 | CryptSIPPutSignedDataMsg | ||
| 61 | CryptSIPRemoveSignedDataMsg | ||
| 62 | CryptSIPVerifyIndirectData | ||
| 63 | DriverCleanupPolicy | ||
| 64 | DriverFinalPolicy | ||
| 65 | DriverInitializePolicy | ||
| 66 | FindCertsByIssuer | ||
| 67 | HTTPSFinalProv | ||
| 68 | IsCatalogFile | ||
| 69 | MsCatConstructHashTag | ||
| 70 | MsCatFreeHashTag | ||
| 71 | OfficeCleanupPolicy | ||
| 72 | OfficeInitializePolicy | ||
| 73 | OpenPersonalTrustDBDialog | ||
| 74 | OpenPersonalTrustDBDialogEx | ||
| 75 | SoftpubAuthenticode | ||
| 76 | SoftpubCheckCert | ||
| 77 | SoftpubCleanup | ||
| 78 | SoftpubDllRegisterServer | ||
| 79 | SoftpubDllUnregisterServer | ||
| 80 | SoftpubDumpStructure | ||
| 81 | SoftpubInitialize | ||
| 82 | SoftpubLoadMessage | ||
| 83 | SoftpubLoadSignature | ||
| 84 | TrustDecode | ||
| 85 | TrustFindIssuerCertificate | ||
| 86 | TrustFreeDecode | ||
| 87 | TrustIsCertificateSelfSigned | ||
| 88 | TrustOpenStores | ||
| 89 | WTGetSignatureInfo | ||
| 90 | WTHelperCertCheckValidSignature | ||
| 91 | WTHelperCertIsSelfSigned | ||
| 92 | WTHelperCheckCertUsage | ||
| 93 | WTHelperGetAgencyInfo | ||
| 94 | WTHelperGetFileHandle | ||
| 95 | WTHelperGetFileHash | ||
| 96 | WTHelperGetFileName | ||
| 97 | WTHelperGetKnownUsages | ||
| 98 | WTHelperGetProvCertFromChain | ||
| 99 | WTHelperGetProvPrivateDataFromChain | ||
| 100 | WTHelperGetProvSignerFromChain | ||
| 101 | WTHelperIsChainedToMicrosoft | ||
| 102 | WTHelperIsChainedToMicrosoftFromStateData | ||
| 103 | WTHelperIsInRootStore | ||
| 104 | WTHelperOpenKnownStores | ||
| 105 | WTHelperProvDataFromStateData | ||
| 106 | WVTAsn1CatMemberInfo2Decode | ||
| 107 | WVTAsn1CatMemberInfo2Encode | ||
| 108 | WVTAsn1CatMemberInfoDecode | ||
| 109 | WVTAsn1CatMemberInfoEncode | ||
| 110 | WVTAsn1CatNameValueDecode | ||
| 111 | WVTAsn1CatNameValueEncode | ||
| 112 | WVTAsn1IntentToSealAttributeDecode | ||
| 113 | WVTAsn1IntentToSealAttributeEncode | ||
| 114 | WVTAsn1SealingSignatureAttributeDecode | ||
| 115 | WVTAsn1SealingSignatureAttributeEncode | ||
| 116 | WVTAsn1SealingTimestampAttributeDecode | ||
| 117 | WVTAsn1SealingTimestampAttributeEncode | ||
| 118 | WVTAsn1SpcFinancialCriteriaInfoDecode | ||
| 119 | WVTAsn1SpcFinancialCriteriaInfoEncode | ||
| 120 | WVTAsn1SpcIndirectDataContentDecode | ||
| 121 | WVTAsn1SpcIndirectDataContentEncode | ||
| 122 | WVTAsn1SpcLinkDecode | ||
| 123 | WVTAsn1SpcLinkEncode | ||
| 124 | WVTAsn1SpcMinimalCriteriaInfoDecode | ||
| 125 | WVTAsn1SpcMinimalCriteriaInfoEncode | ||
| 126 | WVTAsn1SpcPeImageDataDecode | ||
| 127 | WVTAsn1SpcPeImageDataEncode | ||
| 128 | WVTAsn1SpcSigInfoDecode | ||
| 129 | WVTAsn1SpcSigInfoEncode | ||
| 130 | WVTAsn1SpcSpAgencyInfoDecode | ||
| 131 | WVTAsn1SpcSpAgencyInfoEncode | ||
| 132 | WVTAsn1SpcSpOpusInfoDecode | ||
| 133 | WVTAsn1SpcSpOpusInfoEncode | ||
| 134 | WVTAsn1SpcStatementTypeDecode | ||
| 135 | WVTAsn1SpcStatementTypeEncode | ||
| 136 | WinVerifyTrust | ||
| 137 | WinVerifyTrustEx | ||
| 138 | WintrustAddActionID | ||
| 139 | WintrustAddDefaultForUsage | ||
| 140 | WintrustCertificateTrust | ||
| 141 | WintrustGetDefaultForUsage | ||
| 142 | WintrustGetRegPolicyFlags | ||
| 143 | WintrustLoadFunctionPointers | ||
| 144 | WintrustRemoveActionID | ||
| 145 | WintrustSetDefaultIncludePEPageHashes | ||
| 146 | WintrustSetRegPolicyFlags | ||
| 147 | mscat32DllRegisterServer | ||
| 148 | mscat32DllUnregisterServer | ||
| 149 | mssip32DllRegisterServer | ||
| 150 | mssip32DllUnregisterServer | ||
lib/libc/mingw/libsrc/largeint.c created+121| ... | @@ -0,0 +1,121 @@ | ||
| 1 | #if 0 | ||
| 2 | /* | ||
| 3 | largeint.c | ||
| 4 | |||
| 5 | Large (64 bits) integer arithmetics library | ||
| 6 | |||
| 7 | Written by Anders Norlander <anorland@hem2.passagen.se> | ||
| 8 | |||
| 9 | This file is part of a free library for the Win32 API. | ||
| 10 | |||
| 11 | This library is distributed in the hope that it will be useful, | ||
| 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | ||
| 14 | |||
| 15 | */ | ||
| 16 | |||
| 17 | #define __COMPILING_LARGEINT | ||
| 18 | |||
| 19 | #include <largeint.h> | ||
| 20 | |||
| 21 | __int64 WINAPI | ||
| 22 | LargeIntegerAdd (__int64 i1, __int64 i2) | ||
| 23 | { | ||
| 24 | return i1 + i2; | ||
| 25 | } | ||
| 26 | |||
| 27 | __int64 WINAPI | ||
| 28 | LargeIntegerSubtract (__int64 i1, __int64 i2) | ||
| 29 | { | ||
| 30 | return i1 - i2; | ||
| 31 | } | ||
| 32 | |||
| 33 | __int64 WINAPI | ||
| 34 | LargeIntegerArithmeticShift (__int64 i, int n) | ||
| 35 | { | ||
| 36 | return i >> n; | ||
| 37 | } | ||
| 38 | |||
| 39 | __int64 WINAPI | ||
| 40 | LargeIntegerShiftLeft (__int64 i, int n) | ||
| 41 | { | ||
| 42 | return i << n; | ||
| 43 | } | ||
| 44 | |||
| 45 | __int64 WINAPI | ||
| 46 | LargeIntegerShiftRight (__int64 i, int n) | ||
| 47 | { | ||
| 48 | return i >> n; | ||
| 49 | } | ||
| 50 | |||
| 51 | __int64 WINAPI | ||
| 52 | LargeIntegerNegate (__int64 i) | ||
| 53 | { | ||
| 54 | return -i; | ||
| 55 | } | ||
| 56 | |||
| 57 | __int64 WINAPI | ||
| 58 | ConvertLongToLargeInteger (LONG l) | ||
| 59 | { | ||
| 60 | return (__int64) l; | ||
| 61 | } | ||
| 62 | |||
| 63 | __int64 WINAPI | ||
| 64 | ConvertUlongToLargeInteger (ULONG ul) | ||
| 65 | { | ||
| 66 | return _toi(_toui(ul)); | ||
| 67 | } | ||
| 68 | |||
| 69 | __int64 WINAPI | ||
| 70 | EnlargedIntegerMultiply (LONG l1, LONG l2) | ||
| 71 | { | ||
| 72 | return _toi(l1) * _toi(l2); | ||
| 73 | } | ||
| 74 | |||
| 75 | __int64 WINAPI | ||
| 76 | EnlargedUnsignedMultiply (ULONG ul1, ULONG ul2) | ||
| 77 | { | ||
| 78 | return _toi(_toui(ul1) * _toui(ul2)); | ||
| 79 | } | ||
| 80 | |||
| 81 | __int64 WINAPI | ||
| 82 | ExtendedIntegerMultiply (__int64 i, LONG l) | ||
| 83 | { | ||
| 84 | return i * _toi(l); | ||
| 85 | } | ||
| 86 | |||
| 87 | __int64 WINAPI | ||
| 88 | LargeIntegerMultiply (__int64 i1, __int64 i2) | ||
| 89 | { | ||
| 90 | return i1 * i2; | ||
| 91 | } | ||
| 92 | |||
| 93 | __int64 WINAPI LargeIntegerDivide (__int64 i1, __int64 i2, __int64 *remainder) | ||
| 94 | { | ||
| 95 | if (remainder) | ||
| 96 | *remainder = i1 % i2; | ||
| 97 | return i1 / i2; | ||
| 98 | } | ||
| 99 | |||
| 100 | ULONG WINAPI | ||
| 101 | EnlargedUnsignedDivide (unsigned __int64 i1, ULONG i2, PULONG remainder) | ||
| 102 | { | ||
| 103 | if (remainder) | ||
| 104 | *remainder = i1 % _toi(i2); | ||
| 105 | return i1 / _toi(i2); | ||
| 106 | } | ||
| 107 | __int64 WINAPI | ||
| 108 | ExtendedLargeIntegerDivide (__int64 i1, ULONG i2, PULONG remainder) | ||
| 109 | { | ||
| 110 | if (remainder) | ||
| 111 | *remainder = i1 % _toi(i2); | ||
| 112 | return i1 / _toi(i2); | ||
| 113 | } | ||
| 114 | |||
| 115 | /* FIXME: what is this function supposed to do? */ | ||
| 116 | __int64 WINAPI ExtendedMagicDivide (__int64 i1, __int64 i2, int n) | ||
| 117 | { | ||
| 118 | return 0; | ||
| 119 | } | ||
| 120 | #endif | ||
| 121 | |||
lib/libc/mingw/libsrc/mfuuid.c+1-1| ... | @@ -1,4 +1,3 @@ | ... | @@ -1,4 +1,3 @@ |
| 1 | |||
| 2 | #include <windows.h> | 1 | #include <windows.h> |
| 3 | #include <propsys.h> | 2 | #include <propsys.h> |
| 4 | #include <mediaobj.h> | 3 | #include <mediaobj.h> |
| ... | @@ -9,4 +8,5 @@ | ... | @@ -9,4 +8,5 @@ |
| 9 | #include <mfd3d12.h> | 8 | #include <mfd3d12.h> |
| 10 | #include <mfidl.h> | 9 | #include <mfidl.h> |
| 11 | #include <mfmediacapture.h> | 10 | #include <mfmediacapture.h> |
| 11 | #include <mfmediaengine.h> | ||
| 12 | #include <mfreadwrite.h> | 12 | #include <mfreadwrite.h> |
lib/libc/mingw/libsrc/mingwthrd_mt.c created+5| ... | @@ -0,0 +1,5 @@ | ||
| 1 | /* As _CRT_MT is getting defined in libgcc when using shared version, or it is getting defined by startup code itself, | ||
| 2 | this library is a dummy version for supporting the link library for gcc's option -mthreads. As we support TLS-cleanup | ||
| 3 | even without specifying this library, this library is deprecated and just kept for compatibility. */ | ||
| 4 | int _CRT_MT_OLD = 1; | ||
| 5 | |||
lib/libc/mingw/libsrc/scrnsave.c created+415| ... | @@ -0,0 +1,415 @@ | ||
| 1 | /* | ||
| 2 | Screen saver library by Anders Norlander <anorland@hem2.passagen.se> | ||
| 3 | |||
| 4 | This library is (hopefully) compatible with Microsoft's | ||
| 5 | screen saver library. | ||
| 6 | |||
| 7 | This is public domain software. | ||
| 8 | |||
| 9 | */ | ||
| 10 | #include <windows.h> | ||
| 11 | #include <scrnsave.h> | ||
| 12 | #include <regstr.h> | ||
| 13 | |||
| 14 | /* screen saver window class */ | ||
| 15 | #define CLASS_SCRNSAVE TEXT("WindowsScreenSaverClass") | ||
| 16 | |||
| 17 | /* globals */ | ||
| 18 | HWND		hMainWindow = NULL; | ||
| 19 | BOOL		fChildPreview = FALSE; | ||
| 20 | HINSTANCE	hMainInstance; | ||
| 21 | TCHAR		szName[TITLEBARNAMELEN]; | ||
| 22 | TCHAR		szAppName[APPNAMEBUFFERLEN]; | ||
| 23 | TCHAR		szIniFile[MAXFILELEN]; | ||
| 24 | TCHAR		szScreenSaver[22]; | ||
| 25 | TCHAR		szHelpFile[MAXFILELEN]; | ||
| 26 | TCHAR		szNoHelpMemory[BUFFLEN]; | ||
| 27 | UINT		MyHelpMessage; | ||
| 28 | |||
| 29 | /* local house keeping */ | ||
| 30 | static HINSTANCE hPwdLib = NULL; | ||
| 31 | static POINT pt_orig; | ||
| 32 | static BOOL checking_pwd = FALSE; | ||
| 33 | static BOOL closing = FALSE; | ||
| 34 | static BOOL w95 = FALSE; | ||
| 35 | |||
| 36 | typedef void (*PVFV)(void); | ||
| 37 | typedef BOOL (WINAPI *VERIFYPWDPROC)(HWND); | ||
| 38 | typedef DWORD (WINAPI *CHPWDPROC)(LPCTSTR, HWND, DWORD, PVOID); | ||
| 39 | static VERIFYPWDPROC VerifyScreenSavePwd = NULL; | ||
| 40 | |||
| 41 | /* function names */ | ||
| 42 | #define szVerifyPassword "VerifyScreenSavePwd" | ||
| 43 | |||
| 44 | #ifdef UNICODE | ||
| 45 | #define szPwdChangePassword "PwdChangePasswordW" | ||
| 46 | #else | ||
| 47 | #define szPwdChangePassword "PwdChangePasswordA" | ||
| 48 | #endif | ||
| 49 | |||
| 50 | static void TerminateScreenSaver(HWND hWnd); | ||
| 51 | static BOOL RegisterClasses(void); | ||
| 52 | static LRESULT WINAPI SysScreenSaverProc(HWND,UINT,WPARAM,LPARAM); | ||
| 53 | static int LaunchScreenSaver(HWND hParent); | ||
| 54 | static void LaunchConfig(void); | ||
| 55 | |||
| 56 | static int ISSPACE(char c) | ||
| 57 | { | ||
| 58 | return (c == ' ' || c == '\t'); | ||
| 59 | } | ||
| 60 | |||
| 61 | static ULONG_PTR parse_ulptr(const char *s) | ||
| 62 | { | ||
| 63 | ULONG_PTR res, n; | ||
| 64 | const char *p; | ||
| 65 | for (p = s; *p; p++) | ||
| 66 | if (*p < '0' || *p > '9') | ||
| 67 | break; | ||
| 68 | p--; | ||
| 69 | res = 0; | ||
| 70 | for (n = 1; p >= s; p--, n *= 10) | ||
| 71 | res += (*p - '0') * n; | ||
| 72 | return res; | ||
| 73 | } | ||
| 74 | |||
| 75 | /* screen saver entry point */ | ||
| 76 | int APIENTRY WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, | ||
| 77 | LPSTR CmdLine, int nCmdShow) | ||
| 78 | { | ||
| 79 | LPSTR p; | ||
| 80 | OSVERSIONINFO vi; | ||
| 81 | |||
| 82 | UNREFERENCED_PARAMETER(hPrevInst); | ||
| 83 | UNREFERENCED_PARAMETER(nCmdShow); | ||
| 84 | |||
| 85 | /* initialize */ | ||
| 86 | hMainInstance = hInst; | ||
| 87 | |||
| 88 | vi.dwOSVersionInfoSize = sizeof(vi); | ||
| 89 | GetVersionEx(&vi); | ||
| 90 | /* check if we are going to check for passwords */ | ||
| 91 | if (vi.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS) | ||
| 92 | { | ||
| 93 | HKEY hKey; | ||
| 94 | /* we are using windows 95 */ | ||
| 95 | w95 = TRUE; | ||
| 96 | if (RegOpenKey(HKEY_CURRENT_USER, REGSTR_PATH_SCREENSAVE ,&hKey) == | ||
| 97 | ERROR_SUCCESS) | ||
| 98 | { | ||
| 99 | DWORD check_pwd; | ||
| 100 | DWORD size = sizeof(DWORD); | ||
| 101 | DWORD type; | ||
| 102 | LONG res; | ||
| 103 | res = RegQueryValueEx(hKey, REGSTR_VALUE_USESCRPASSWORD, | ||
| 104 | NULL, &type, (PBYTE) &check_pwd, &size); | ||
| 105 | if (check_pwd && res == ERROR_SUCCESS) | ||
| 106 | { | ||
| 107 | hPwdLib = LoadLibrary(TEXT("PASSWORD.CPL")); | ||
| 108 | if (hPwdLib) | ||
| 109 | VerifyScreenSavePwd = (VERIFYPWDPROC)(PVFV) GetProcAddress(hPwdLib, szVerifyPassword); | ||
| 110 | } | ||
| 111 | RegCloseKey(hKey); | ||
| 112 | } | ||
| 113 | } | ||
| 114 | |||
| 115 | /* parse arguments */ | ||
| 116 | for (p = CmdLine; *p; p++) | ||
| 117 | { | ||
| 118 | switch (*p) | ||
| 119 | { | ||
| 120 | case 'S': | ||
| 121 | case 's': | ||
| 122 | /* start screen saver */ | ||
| 123 | return LaunchScreenSaver(NULL); | ||
| 124 | |||
| 125 | case 'P': | ||
| 126 | case 'p': | ||
| 127 | { | ||
| 128 | /* start screen saver in preview window */ | ||
| 129 | HWND hParent; | ||
| 130 | fChildPreview = TRUE; | ||
| 131 | while (ISSPACE(*++p)); | ||
| 132 | hParent = (HWND) parse_ulptr(p); | ||
| 133 | if (hParent && IsWindow(hParent)) | ||
| 134 | return LaunchScreenSaver(hParent); | ||
| 135 | } | ||
| 136 | return 0; | ||
| 137 | |||
| 138 | case 'C': | ||
| 139 | case 'c': | ||
| 140 | /* display configure dialog */ | ||
| 141 | LaunchConfig(); | ||
| 142 | return 0; | ||
| 143 | |||
| 144 | case 'A': | ||
| 145 | case 'a': | ||
| 146 | { | ||
| 147 | /* change screen saver password */ | ||
| 148 | HWND hParent; | ||
| 149 | while (ISSPACE(*++p)); | ||
| 150 | hParent = (HWND) parse_ulptr(p); | ||
| 151 | if (!hParent || !IsWindow(hParent)) | ||
| 152 | hParent = GetForegroundWindow(); | ||
| 153 | ScreenSaverChangePassword(hParent); | ||
| 154 | } | ||
| 155 | return 0; | ||
| 156 | |||
| 157 | case '-': | ||
| 158 | case '/': | ||
| 159 | case ' ': | ||
| 160 | default: | ||
| 161 | 	 break; | ||
| 162 | } | ||
| 163 | } | ||
| 164 | LaunchConfig(); | ||
| 165 | return 0; | ||
| 166 | } | ||
| 167 | |||
| 168 | static void LaunchConfig(void) | ||
| 169 | { | ||
| 170 | /* FIXME: should this be called */ | ||
| 171 | RegisterDialogClasses(hMainInstance); | ||
| 172 | /* display configure dialog */ | ||
| 173 | DialogBox(hMainInstance, MAKEINTRESOURCE(DLG_SCRNSAVECONFIGURE), | ||
| 174 | GetForegroundWindow(), (DLGPROC)(PVFV) ScreenSaverConfigureDialog); | ||
| 175 | } | ||
| 176 | |||
| 177 | |||
| 178 | static int LaunchScreenSaver(HWND hParent) | ||
| 179 | { | ||
| 180 | BOOL foo; | ||
| 181 | UINT style; | ||
| 182 | RECT rc; | ||
| 183 | MSG msg; | ||
| 184 | |||
| 185 | /* don't allow other tasks to get into the foreground */ | ||
| 186 | if (w95 && !fChildPreview) | ||
| 187 | SystemParametersInfo(SPI_SCREENSAVERRUNNING, TRUE, &foo, 0); | ||
| 188 | |||
| 189 | msg.wParam = 0; | ||
| 190 | |||
| 191 | /* register classes, both user defined and classes used by screen saver | ||
| 192 | library */ | ||
| 193 | if (!RegisterClasses()) | ||
| 194 | { | ||
| 195 | MessageBox(NULL, TEXT("RegisterClasses() failed"), NULL, MB_ICONHAND); | ||
| 196 | goto restore; | ||
| 197 | } | ||
| 198 | |||
| 199 | /* a slightly different approach needs to be used when displaying | ||
| 200 | in a preview window */ | ||
| 201 | if (hParent) | ||
| 202 | { | ||
| 203 | style = WS_CHILD; | ||
| 204 | GetClientRect(hParent, &rc); | ||
| 205 | } | ||
| 206 | else | ||
| 207 | { | ||
| 208 | style = WS_POPUP; | ||
| 209 | rc.left = GetSystemMetrics(SM_XVIRTUALSCREEN); | ||
| 210 | rc.top = GetSystemMetrics(SM_YVIRTUALSCREEN); | ||
| 211 | rc.right = GetSystemMetrics(SM_CXVIRTUALSCREEN); | ||
| 212 | rc.bottom = GetSystemMetrics(SM_CYVIRTUALSCREEN); | ||
| 213 | style |= WS_VISIBLE; | ||
| 214 | } | ||
| 215 | |||
| 216 | /* create main screen saver window */ | ||
| 217 | hMainWindow = CreateWindowEx(hParent ? 0 : WS_EX_TOPMOST, CLASS_SCRNSAVE, | ||
| 218 | TEXT("SCREENSAVER"), style, | ||
| 219 | rc.left, rc.top, rc.right, rc.bottom, hParent, NULL, | ||
| 220 | hMainInstance, NULL); | ||
| 221 | |||
| 222 | /* display window and start pumping messages */ | ||
| 223 | if (hMainWindow) | ||
| 224 | { | ||
| 225 | UpdateWindow(hMainWindow); | ||
| 226 | ShowWindow(hMainWindow, SW_SHOW); | ||
| 227 | |||
| 228 | while (GetMessage(&msg, NULL, 0, 0) == TRUE) | ||
| 229 | { | ||
| 230 | TranslateMessage(&msg); | ||
| 231 | DispatchMessage(&msg); | ||
| 232 | } | ||
| 233 | } | ||
| 234 | |||
| 235 | restore: | ||
| 236 | /* restore system */ | ||
| 237 | if (w95 && !fChildPreview) | ||
| 238 | SystemParametersInfo(SPI_SCREENSAVERRUNNING, FALSE, &foo, 0); | ||
| 239 | FreeLibrary(hPwdLib); | ||
| 240 | return msg.wParam; | ||
| 241 | } | ||
| 242 | |||
| 243 | /* this function takes care of *must* do tasks, like terminating | ||
| 244 | screen saver */ | ||
| 245 | static LRESULT WINAPI SysScreenSaverProc(HWND hWnd, UINT msg, | ||
| 246 | WPARAM wParam, LPARAM lParam) | ||
| 247 | { | ||
| 248 | switch (msg) | ||
| 249 | { | ||
| 250 | case WM_CREATE: | ||
| 251 | if (!fChildPreview) | ||
| 252 | SetCursor(NULL); | ||
| 253 | /* mouse is not supposed to move from this position */ | ||
| 254 | GetCursorPos(&pt_orig); | ||
| 255 | break; | ||
| 256 | case WM_DESTROY: | ||
| 257 | PostQuitMessage(0); | ||
| 258 | break; | ||
| 259 | case WM_TIMER: | ||
| 260 | if (closing) | ||
| 261 | return 0; | ||
| 262 | break; | ||
| 263 | case WM_PAINT: | ||
| 264 | if (closing) | ||
| 265 | return DefWindowProc(hWnd, msg, wParam, lParam); | ||
| 266 | break; | ||
| 267 | case WM_SYSCOMMAND: | ||
| 268 | if (!fChildPreview) | ||
| 269 | switch (wParam) | ||
| 270 | { | ||
| 271 | case SC_CLOSE: | ||
| 272 | case SC_SCREENSAVE: | ||
| 273 | case SC_NEXTWINDOW: | ||
| 274 | case SC_PREVWINDOW: | ||
| 275 | return FALSE; | ||
| 276 | } | ||
| 277 | break; | ||
| 278 | case WM_MOUSEMOVE: | ||
| 279 | case WM_LBUTTONDOWN: | ||
| 280 | case WM_RBUTTONDOWN: | ||
| 281 | case WM_MBUTTONDOWN: | ||
| 282 | case WM_KEYDOWN: | ||
| 283 | case WM_SYSKEYDOWN: | ||
| 284 | case WM_NCACTIVATE: | ||
| 285 | case WM_ACTIVATE: | ||
| 286 | case WM_ACTIVATEAPP: | ||
| 287 | if (closing) | ||
| 288 | return DefWindowProc(hWnd, msg, wParam, lParam); | ||
| 289 | break; | ||
| 290 | } | ||
| 291 | return ScreenSaverProc(hWnd, msg, wParam, lParam); | ||
| 292 | } | ||
| 293 | |||
| 294 | LRESULT WINAPI DefScreenSaverProc(HWND hWnd, UINT msg, | ||
| 295 | WPARAM wParam, LPARAM lParam) | ||
| 296 | { | ||
| 297 | /* don't do any special processing when in preview mode */ | ||
| 298 | if (fChildPreview || closing) | ||
| 299 | return DefWindowProc(hWnd, msg, wParam, lParam); | ||
| 300 | |||
| 301 | switch (msg) | ||
| 302 | { | ||
| 303 | case WM_CLOSE: | ||
| 304 | TerminateScreenSaver(hWnd); | ||
| 305 | /* do NOT pass this to DefWindowProc; it will terminate even if | ||
| 306 | an invalid password was given. | ||
| 307 | */ | ||
| 308 | return 0; | ||
| 309 | case SCRM_VERIFYPW: | ||
| 310 | /* verify password or return TRUE if password checking is turned off */ | ||
| 311 | if (VerifyScreenSavePwd) | ||
| 312 | return VerifyScreenSavePwd(hWnd); | ||
| 313 | else | ||
| 314 | return TRUE; | ||
| 315 | case WM_SETCURSOR: | ||
| 316 | if (checking_pwd) | ||
| 317 | break; | ||
| 318 | SetCursor(NULL); | ||
| 319 | return TRUE; | ||
| 320 | case WM_NCACTIVATE: | ||
| 321 | case WM_ACTIVATE: | ||
| 322 | case WM_ACTIVATEAPP: | ||
| 323 | /* if wParam is FALSE then I am losing focus */ | ||
| 324 | if (wParam == FALSE && !checking_pwd) | ||
| 325 | PostMessage(hWnd, WM_CLOSE, 0, 0); | ||
| 326 | break; | ||
| 327 | case WM_MOUSEMOVE: | ||
| 328 | { | ||
| 329 | POINT pt; | ||
| 330 | GetCursorPos(&pt); | ||
| 331 | if (pt.x == pt_orig.x && pt.y == pt_orig.y) | ||
| 332 | break; | ||
| 333 | /* mouse moved */ | ||
| 334 | } | ||
| 335 | /* fallthrough */ | ||
| 336 | case WM_LBUTTONDOWN: | ||
| 337 | case WM_RBUTTONDOWN: | ||
| 338 | case WM_MBUTTONDOWN: | ||
| 339 | case WM_KEYDOWN: | ||
| 340 | case WM_SYSKEYDOWN: | ||
| 341 | /* try to terminate screen saver */ | ||
| 342 | if (!checking_pwd) | ||
| 343 | PostMessage(hWnd, WM_CLOSE, 0, 0); | ||
| 344 | break; | ||
| 345 | } | ||
| 346 | return DefWindowProc(hWnd, msg, wParam, lParam); | ||
| 347 | } | ||
| 348 | |||
| 349 | static void TerminateScreenSaver(HWND hWnd) | ||
| 350 | { | ||
| 351 | /* don't allow recursion */ | ||
| 352 | if (checking_pwd || closing) | ||
| 353 | return; | ||
| 354 | |||
| 355 | /* verify password */ | ||
| 356 | if (VerifyScreenSavePwd) | ||
| 357 | { | ||
| 358 | checking_pwd = TRUE; | ||
| 359 | closing = SendMessage(hWnd, SCRM_VERIFYPW, 0, 0); | ||
| 360 | checking_pwd = FALSE; | ||
| 361 | } | ||
| 362 | else | ||
| 363 | closing = TRUE; | ||
| 364 | |||
| 365 | /* are we closing? */ | ||
| 366 | if (closing) | ||
| 367 | { | ||
| 368 | DestroyWindow(hWnd); | ||
| 369 | } | ||
| 370 | else | ||
| 371 | GetCursorPos(&pt_orig); /* if not: get new mouse position */ | ||
| 372 | } | ||
| 373 | |||
| 374 | /* | ||
| 375 | Register screen saver window class and call user | ||
| 376 | supplied hook. | ||
| 377 | */ | ||
| 378 | static BOOL RegisterClasses(void) | ||
| 379 | { | ||
| 380 | WNDCLASS cls; | ||
| 381 | |||
| 382 | cls.hCursor = NULL; | ||
| 383 | cls.hIcon = LoadIcon(hMainInstance, MAKEINTATOM(ID_APP)); | ||
| 384 | cls.lpszMenuName = NULL; | ||
| 385 | cls.lpszClassName = CLASS_SCRNSAVE; | ||
| 386 | cls.hbrBackground = GetStockObject(BLACK_BRUSH); | ||
| 387 | cls.hInstance = hMainInstance; | ||
| 388 | cls.style = CS_VREDRAW | CS_HREDRAW | CS_SAVEBITS | CS_PARENTDC; | ||
| 389 | cls.lpfnWndProc = SysScreenSaverProc; | ||
| 390 | cls.cbWndExtra = 0; | ||
| 391 | cls.cbClsExtra = 0; | ||
| 392 | |||
| 393 | if (!RegisterClass(&cls)) | ||
| 394 | return FALSE; | ||
| 395 | |||
| 396 | return RegisterDialogClasses(hMainInstance); | ||
| 397 | } | ||
| 398 | |||
| 399 | void WINAPI ScreenSaverChangePassword(HWND hParent) | ||
| 400 | { | ||
| 401 | /* load Master Password Router (MPR) */ | ||
| 402 | HINSTANCE hMpr = LoadLibrary(TEXT("MPR.DLL")); | ||
| 403 | |||
| 404 | if (hMpr) | ||
| 405 | { | ||
| 406 | CHPWDPROC ChangePassword; | ||
| 407 | ChangePassword = (CHPWDPROC)(PVFV) GetProcAddress(hMpr, szPwdChangePassword); | ||
| 408 | |||
| 409 | /* change password for screen saver provider */ | ||
| 410 | if (ChangePassword) | ||
| 411 | ChangePassword(TEXT("SCRSAVE"), hParent, 0, NULL); | ||
| 412 | |||
| 413 | FreeLibrary(hMpr); | ||
| 414 | } | ||
| 415 | } | ||
lib/libc/mingw/libsrc/uuid.c+1| ... | @@ -15,6 +15,7 @@ | ... | @@ -15,6 +15,7 @@ |
| 15 | #include <basetyps.h> | 15 | #include <basetyps.h> |
| 16 | 16 | ||
| 17 | #include <credentialprovider.h> | 17 | #include <credentialprovider.h> |
| 18 | #include <functiondiscoverykeys.h> | ||
| 18 | #include <textstor.h> | 19 | #include <textstor.h> |
| 19 | #include <shobjidl.h> | 20 | #include <shobjidl.h> |
| 20 | #include <propkey.h> | 21 | #include <propkey.h> |
lib/libc/mingw/libsrc/wspiapi/WspiapiFreeAddrInfo.c+1-1| ... | @@ -12,6 +12,6 @@ WspiapiFreeAddrInfo (struct addrinfo *ai) | ... | @@ -12,6 +12,6 @@ WspiapiFreeAddrInfo (struct addrinfo *ai) |
| 12 | static WSPIAPI_PFREEADDRINFO pfFreeAddrInfo = NULL; | 12 | static WSPIAPI_PFREEADDRINFO pfFreeAddrInfo = NULL; |
| 13 | 13 | ||
| 14 | if (!pfFreeAddrInfo) | 14 | if (!pfFreeAddrInfo) |
| 15 | pfFreeAddrInfo = (WSPIAPI_PFREEADDRINFO) WspiapiLoad(2); | 15 | pfFreeAddrInfo = (WSPIAPI_PFREEADDRINFO)(void(*)(void)) WspiapiLoad(2); |
| 16 | (*pfFreeAddrInfo) (ai); | 16 | (*pfFreeAddrInfo) (ai); |
| 17 | } | 17 | } |
lib/libc/mingw/libsrc/wspiapi/WspiapiGetAddrInfo.c+1-1| ... | @@ -14,7 +14,7 @@ WspiapiGetAddrInfo(const char *nodename, const char *servname, | ... | @@ -14,7 +14,7 @@ WspiapiGetAddrInfo(const char *nodename, const char *servname, |
| 14 | int err; | 14 | int err; |
| 15 | 15 | ||
| 16 | if (!pfGetAddrInfo) | 16 | if (!pfGetAddrInfo) |
| 17 | pfGetAddrInfo = (WSPIAPI_PGETADDRINFO) WspiapiLoad (0); | 17 | pfGetAddrInfo = (void*) WspiapiLoad (0); |
| 18 | err = (*pfGetAddrInfo) (nodename, servname, hints, res); | 18 | err = (*pfGetAddrInfo) (nodename, servname, hints, res); |
| 19 | WSASetLastError (err); | 19 | WSASetLastError (err); |
| 20 | return err; | 20 | return err; |
lib/libc/mingw/libsrc/wspiapi/WspiapiGetNameInfo.c+1-1| ... | @@ -15,7 +15,7 @@ WspiapiGetNameInfo (const struct sockaddr *sa, socklen_t salen, | ... | @@ -15,7 +15,7 @@ WspiapiGetNameInfo (const struct sockaddr *sa, socklen_t salen, |
| 15 | int err; | 15 | int err; |
| 16 | 16 | ||
| 17 | if (!pfGetNameInfo) | 17 | if (!pfGetNameInfo) |
| 18 | pfGetNameInfo = (WSPIAPI_PGETNAMEINFO) WspiapiLoad(1); | 18 | pfGetNameInfo = (void*) WspiapiLoad(1); |
| 19 | err = (*pfGetNameInfo) (sa, salen, host, hostlen, serv, servlen, flags); | 19 | err = (*pfGetNameInfo) (sa, salen, host, hostlen, serv, servlen, flags); |
| 20 | WSASetLastError (err); | 20 | WSASetLastError (err); |
| 21 | return err; | 21 | return err; |
lib/libc/mingw/math/_huge.c+6-1| ... | @@ -1,2 +1,7 @@ | ... | @@ -1,2 +1,7 @@ |
| 1 | /* For UCRT, positive infinity */ | 1 | /* For UCRT, positive infinity */ |
| 2 | double const _HUGE = __builtin_huge_val(); | 2 | #include <_mingw.h> |
| 3 | #undef _HUGE | ||
| 4 | static double _HUGE = __builtin_huge_val(); | ||
| 5 | double * __MINGW_IMP_SYMBOL(_HUGE) = &_HUGE; | ||
| 6 | #undef HUGE | ||
| 7 | extern double * __attribute__ ((alias (__MINGW64_STRINGIFY(__MINGW_IMP_SYMBOL(_HUGE))))) __MINGW_IMP_SYMBOL(HUGE); |
lib/libc/mingw/math/copysign.c created+21| ... | @@ -0,0 +1,21 @@ | ||
| 1 | /** | ||
| 2 | * This file has no copyright assigned and is placed in the Public Domain. | ||
| 3 | * This file is part of the mingw-w64 runtime package. | ||
| 4 | * No warranty is given; refer to the file DISCLAIMER.PD within this package. | ||
| 5 | */ | ||
| 6 | #include <math.h> | ||
| 7 | |||
| 8 | typedef union U | ||
| 9 | { | ||
| 10 | unsigned int u[2]; | ||
| 11 | double d; | ||
| 12 | } U; | ||
| 13 | |||
| 14 | double copysign(double x, double y) | ||
| 15 | { | ||
| 16 | U h,j; | ||
| 17 | h.d = x; | ||
| 18 | j.d = y; | ||
| 19 | h.u[1] = (h.u[1] & 0x7fffffff) | (j.u[1] & 0x80000000); | ||
| 20 | return h.d; | ||
| 21 | } | ||
lib/libc/mingw/math/copysignf.c created+19| ... | @@ -0,0 +1,19 @@ | ||
| 1 | /** | ||
| 2 | * This file has no copyright assigned and is placed in the Public Domain. | ||
| 3 | * This file is part of the mingw-w64 runtime package. | ||
| 4 | * No warranty is given; refer to the file DISCLAIMER.PD within this package. | ||
| 5 | */ | ||
| 6 | #include <math.h> | ||
| 7 | |||
| 8 | typedef union ui_f { | ||
| 9 | 	float f; | ||
| 10 | 	unsigned int ui; | ||
| 11 | } ui_f; | ||
| 12 | |||
| 13 | float copysignf(float aX, float aY) | ||
| 14 | { | ||
| 15 | ui_f x,y; | ||
| 16 | x.f=aX; y.f=aY; | ||
| 17 | x.ui= (x.ui & 0x7fffffff) | (y.ui & 0x80000000); | ||
| 18 | return x.f; | ||
| 19 | } | ||
lib/libc/mingw/misc/__initenv.c+1-3| ... | @@ -4,9 +4,7 @@ | ... | @@ -4,9 +4,7 @@ |
| 4 | * No warranty is given; refer to the file DISCLAIMER.PD within this package. | 4 | * No warranty is given; refer to the file DISCLAIMER.PD within this package. |
| 5 | */ | 5 | */ |
| 6 | 6 | ||
| 7 | #include <internal.h> | 7 | #include <_mingw.h> |
| 8 | 8 | ||
| 9 | static char ** local__initenv; | 9 | static char ** local__initenv; |
| 10 | static wchar_t ** local__winitenv; | ||
| 11 | char *** __MINGW_IMP_SYMBOL(__initenv) = &local__initenv; | 10 | char *** __MINGW_IMP_SYMBOL(__initenv) = &local__initenv; |
| 12 | wchar_t *** __MINGW_IMP_SYMBOL(__winitenv) = &local__winitenv; |
lib/libc/mingw/misc/__p___initenv.c created+16| ... | @@ -0,0 +1,16 @@ | ||
| 1 | /** | ||
| 2 | * This file has no copyright assigned and is placed in the Public Domain. | ||
| 3 | * This file is part of the mingw-w64 runtime package. | ||
| 4 | * No warranty is given; refer to the file DISCLAIMER.PD within this package. | ||
| 5 | */ | ||
| 6 | |||
| 7 | #include <_mingw.h> | ||
| 8 | |||
| 9 | extern char*** __MINGW_IMP_SYMBOL(__initenv); | ||
| 10 | |||
| 11 | char*** __cdecl __p___initenv(void); | ||
| 12 | char*** __cdecl __p___initenv(void) | ||
| 13 | { | ||
| 14 | return __MINGW_IMP_SYMBOL(__initenv); | ||
| 15 | } | ||
| 16 | char*** (__cdecl *__MINGW_IMP_SYMBOL(__p___initenv))(void) = __p___initenv; | ||
lib/libc/mingw/misc/__p___winitenv.c created+17| ... | @@ -0,0 +1,17 @@ | ||
| 1 | /** | ||
| 2 | * This file has no copyright assigned and is placed in the Public Domain. | ||
| 3 | * This file is part of the mingw-w64 runtime package. | ||
| 4 | * No warranty is given; refer to the file DISCLAIMER.PD within this package. | ||
| 5 | */ | ||
| 6 | |||
| 7 | #include <_mingw.h> | ||
| 8 | #include <stddef.h> | ||
| 9 | |||
| 10 | extern wchar_t*** __MINGW_IMP_SYMBOL(__winitenv); | ||
| 11 | |||
| 12 | wchar_t*** __cdecl __p___winitenv(void); | ||
| 13 | wchar_t*** __cdecl __p___winitenv(void) | ||
| 14 | { | ||
| 15 | return __MINGW_IMP_SYMBOL(__winitenv); | ||
| 16 | } | ||
| 17 | wchar_t*** (__cdecl *__MINGW_IMP_SYMBOL(__p___winitenv))(void) = __p___winitenv; | ||
lib/libc/mingw/misc/__winitenv.c created+11| ... | @@ -0,0 +1,11 @@ | ||
| 1 | /** | ||
| 2 | * This file has no copyright assigned and is placed in the Public Domain. | ||
| 3 | * This file is part of the mingw-w64 runtime package. | ||
| 4 | * No warranty is given; refer to the file DISCLAIMER.PD within this package. | ||
| 5 | */ | ||
| 6 | |||
| 7 | #include <_mingw.h> | ||
| 8 | #include <stddef.h> | ||
| 9 | |||
| 10 | static wchar_t ** local__winitenv; | ||
| 11 | wchar_t *** __MINGW_IMP_SYMBOL(__winitenv) = &local__winitenv; | ||
lib/libc/mingw/misc/_onexit.c created+16| ... | @@ -0,0 +1,16 @@ | ||
| 1 | /** | ||
| 2 | * This file has no copyright assigned and is placed in the Public Domain. | ||
| 3 | * This file is part of the mingw-w64 runtime package. | ||
| 4 | * No warranty is given; refer to the file DISCLAIMER.PD within this package. | ||
| 5 | */ | ||
| 6 | |||
| 7 | #include <stdlib.h> | ||
| 8 | |||
| 9 | _onexit_t __cdecl _onexit(_onexit_t func) | ||
| 10 | { | ||
| 11 | return atexit((void (__cdecl *)(void))func) == 0 ? func : NULL; | ||
| 12 | } | ||
| 13 | _onexit_t __cdecl (*__MINGW_IMP_SYMBOL(_onexit))(_onexit_t func) = _onexit; | ||
| 14 | |||
| 15 | _onexit_t __attribute__ ((alias ("_onexit"))) __cdecl onexit(_onexit_t); | ||
| 16 | extern _onexit_t (__cdecl * __attribute__ ((alias (__MINGW64_STRINGIFY(__MINGW_IMP_SYMBOL(_onexit))))) __MINGW_IMP_SYMBOL(onexit))(_onexit_t); | ||
lib/libc/mingw/misc/delayimp.c+1-1| ... | @@ -177,7 +177,7 @@ FARPROC WINAPI __delayLoadHelper2(PCImgDelayDescr pidd,FARPROC *ppfnIATEntry) | ... | @@ -177,7 +177,7 @@ FARPROC WINAPI __delayLoadHelper2(PCImgDelayDescr pidd,FARPROC *ppfnIATEntry) |
| 177 | if(hmod==0) { | 177 | if(hmod==0) { |
| 178 | if(__pfnDliNotifyHook2) | 178 | if(__pfnDliNotifyHook2) |
| 179 | hmod = (HMODULE) (((*__pfnDliNotifyHook2)(dliNotePreLoadLibrary,&dli))); | 179 | hmod = (HMODULE) (((*__pfnDliNotifyHook2)(dliNotePreLoadLibrary,&dli))); |
| 180 | if(hmod==0) hmod = LoadLibrary(dli.szDll); | 180 | if(hmod==0) hmod = LoadLibraryA(dli.szDll); |
| 181 | if(hmod==0) { | 181 | if(hmod==0) { |
| 182 | dli.dwLastError = GetLastError(); | 182 | dli.dwLastError = GetLastError(); |
| 183 | if(__pfnDliFailureHook2) | 183 | if(__pfnDliFailureHook2) |
lib/libc/mingw/misc/dllentrypoint.c created+18| ... | @@ -0,0 +1,18 @@ | ||
| 1 | /** | ||
| 2 | * This file has no copyright assigned and is placed in the Public Domain. | ||
| 3 | * This file is part of the mingw-w64 runtime package. | ||
| 4 | * No warranty is given; refer to the file DISCLAIMER.PD within this package. | ||
| 5 | */ | ||
| 6 | |||
| 7 | #include <oscalls.h> | ||
| 8 | #define _DECL_DLLMAIN | ||
| 9 | #include <process.h> | ||
| 10 | |||
| 11 | BOOL WINAPI DllEntryPoint (HANDLE, DWORD, LPVOID); | ||
| 12 | |||
| 13 | BOOL WINAPI DllEntryPoint (HANDLE __UNUSED_PARAM(hDllHandle), | ||
| 14 | 			 DWORD __UNUSED_PARAM(dwReason), | ||
| 15 | 			 LPVOID __UNUSED_PARAM(lpreserved)) | ||
| 16 | { | ||
| 17 | return TRUE; | ||
| 18 | } | ||
lib/libc/mingw/misc/dllmain.c created+10| ... | @@ -0,0 +1,10 @@ | ||
| 1 | #include <oscalls.h> | ||
| 2 | #define _DECL_DLLMAIN | ||
| 3 | #include <process.h> | ||
| 4 | |||
| 5 | BOOL WINAPI DllMain (HANDLE __UNUSED_PARAM(hDllHandle), | ||
| 6 | 		 DWORD __UNUSED_PARAM(dwReason), | ||
| 7 | 		 LPVOID __UNUSED_PARAM(lpreserved)) | ||
| 8 | { | ||
| 9 | return TRUE; | ||
| 10 | } | ||
lib/libc/mingw/misc/feclearexcept.c+2-29| ... | @@ -3,36 +3,9 @@ | ... | @@ -3,36 +3,9 @@ |
| 3 | * This file is part of the mingw-w64 runtime package. | 3 | * This file is part of the mingw-w64 runtime package. |
| 4 | * No warranty is given; refer to the file DISCLAIMER.PD within this package. | 4 | * No warranty is given; refer to the file DISCLAIMER.PD within this package. |
| 5 | */ | 5 | */ |
| 6 | #include <fenv.h> | ||
| 7 | |||
| 8 | #if !(defined(_ARM_) || defined(__arm__) || defined(_ARM64_) || defined(__aarch64__)) | ||
| 9 | int __mingw_has_sse (void); | ||
| 10 | 6 | ||
| 11 | int __mingw_has_sse(void) | 7 | #include <fenv.h> |
| 12 | { | 8 | #include <internal.h> |
| 13 | int cpuInfo[4],infoType = 1; | ||
| 14 | |||
| 15 | #ifndef _WIN64 | ||
| 16 | int o_flag, n_flag; | ||
| 17 | |||
| 18 | __asm__ volatile ("pushfl\n\tpopl %0" : "=mr" (o_flag)); | ||
| 19 | n_flag = o_flag ^ 0x200000; | ||
| 20 | __asm__ volatile ("pushl %0\n\tpopfl" : : "g" (n_flag)); | ||
| 21 | __asm__ volatile ("pushfl\n\tpopl %0" : "=mr" (n_flag)); | ||
| 22 | if (n_flag == o_flag) | ||
| 23 | return 0; | ||
| 24 | #endif | ||
| 25 | 	 | ||
| 26 | __asm__ __volatile__ ( | ||
| 27 | "cpuid" | ||
| 28 | : "=a" (cpuInfo[0]), "=b" (cpuInfo[1]), "=c" (cpuInfo[2]), | ||
| 29 | "=d" (cpuInfo[3]) | ||
| 30 | : "a" (infoType)); | ||
| 31 | if (cpuInfo[3] & 0x2000000) | ||
| 32 | return 1; | ||
| 33 | return 0; | ||
| 34 | } | ||
| 35 | #endif /* !(defined(_ARM_) || defined(__arm__) || defined(_ARM64_) || defined(__aarch64__)) */ | ||
| 36 | 9 | ||
| 37 | /* 7.6.2.1 | 10 | /* 7.6.2.1 |
| 38 | The feclearexcept function clears the supported exceptions | 11 | The feclearexcept function clears the supported exceptions |
lib/libc/mingw/misc/fegetenv.c+2-4| ... | @@ -3,11 +3,9 @@ | ... | @@ -3,11 +3,9 @@ |
| 3 | * This file is part of the mingw-w64 runtime package. | 3 | * This file is part of the mingw-w64 runtime package. |
| 4 | * No warranty is given; refer to the file DISCLAIMER.PD within this package. | 4 | * No warranty is given; refer to the file DISCLAIMER.PD within this package. |
| 5 | */ | 5 | */ |
| 6 | #include <fenv.h> | ||
| 7 | 6 | ||
| 8 | #if !(defined(_ARM_) || defined(__arm__) || defined(_ARM64_) || defined(__aarch64__)) | 7 | #include <fenv.h> |
| 9 | int __mingw_has_sse (void); | 8 | #include <internal.h> |
| 10 | #endif /* !(defined(_ARM_) || defined(__arm__) || defined(_ARM64_) || defined(__aarch64__)) */ | ||
| 11 | 9 | ||
| 12 | /* 7.6.4.1 | 10 | /* 7.6.4.1 |
| 13 | The fegetenv function stores the current floating-point environment | 11 | The fegetenv function stores the current floating-point environment |
lib/libc/mingw/misc/fegetexceptflag.c+4-6| ... | @@ -3,13 +3,11 @@ | ... | @@ -3,13 +3,11 @@ |
| 3 | * This file is part of the mingw-w64 runtime package. | 3 | * This file is part of the mingw-w64 runtime package. |
| 4 | * No warranty is given; refer to the file DISCLAIMER.PD within this package. | 4 | * No warranty is given; refer to the file DISCLAIMER.PD within this package. |
| 5 | */ | 5 | */ |
| 6 | #include <fenv.h> | ||
| 7 | 6 | ||
| 8 | #if !(defined(_ARM_) || defined(__arm__) || defined(_ARM64_) || defined(__aarch64__)) | 7 | #include <fenv.h> |
| 9 | extern int __mingw_has_sse (void); | 8 | #include <internal.h> |
| 10 | #endif /* !(defined(_ARM_) || defined(__arm__) || defined(_ARM64_) || defined(__aarch64__)) */ | ||
| 11 | 9 | ||
| 12 | /* 7.6.2.2 | 10 | /* 7.6.2.2 |
| 13 | The fegetexceptflag function stores an implementation-defined | 11 | The fegetexceptflag function stores an implementation-defined |
| 14 | representation of the exception flags indicated by the argument | 12 | representation of the exception flags indicated by the argument |
| 15 | excepts in the object pointed to by the argument flagp. */ | 13 | excepts in the object pointed to by the argument flagp. */ |
| ... | @@ -32,7 +30,7 @@ int fegetexceptflag (fexcept_t * flagp, int excepts) | ... | @@ -32,7 +30,7 @@ int fegetexceptflag (fexcept_t * flagp, int excepts) |
| 32 | _mxcsr = 0; | 30 | _mxcsr = 0; |
| 33 | if (__mingw_has_sse ()) | 31 | if (__mingw_has_sse ()) |
| 34 | __asm__ volatile ("stmxcsr %0" : "=m" (_mxcsr)); | 32 | __asm__ volatile ("stmxcsr %0" : "=m" (_mxcsr)); |
| 35 | 33 | ||
| 36 | *flagp = (_mxcsr | _status) & excepts & FE_ALL_EXCEPT; | 34 | *flagp = (_mxcsr | _status) & excepts & FE_ALL_EXCEPT; |
| 37 | #endif /* defined(_ARM_) || defined(__arm__) || defined(_ARM64_) || defined(__aarch64__) */ | 35 | #endif /* defined(_ARM_) || defined(__arm__) || defined(_ARM64_) || defined(__aarch64__) */ |
| 38 | return 0; | 36 | return 0; |
lib/libc/mingw/misc/fesetenv.c+4-6| ... | @@ -3,13 +3,11 @@ | ... | @@ -3,13 +3,11 @@ |
| 3 | * This file is part of the mingw-w64 runtime package. | 3 | * This file is part of the mingw-w64 runtime package. |
| 4 | * No warranty is given; refer to the file DISCLAIMER.PD within this package. | 4 | * No warranty is given; refer to the file DISCLAIMER.PD within this package. |
| 5 | */ | 5 | */ |
| 6 | |||
| 6 | #include <_mingw.h> | 7 | #include <_mingw.h> |
| 7 | #include <fenv.h> | 8 | #include <fenv.h> |
| 8 | #include <float.h> | 9 | #include <float.h> |
| 9 | 10 | #include <internal.h> | |
| 10 | #if !(defined(_ARM_) || defined(__arm__) || defined(_ARM64_) || defined(__aarch64__)) | ||
| 11 | extern int __mingw_has_sse (void); | ||
| 12 | #endif /* !(defined(_ARM_) || defined(__arm__) || defined(_ARM64_) || defined(__aarch64__)) */ | ||
| 13 | 11 | ||
| 14 | /* 7.6.4.3 | 12 | /* 7.6.4.3 |
| 15 | The fesetenv function establishes the floating-point environment | 13 | The fesetenv function establishes the floating-point environment |
| ... | @@ -28,7 +26,7 @@ int fesetenv (const fenv_t * envp) | ... | @@ -28,7 +26,7 @@ int fesetenv (const fenv_t * envp) |
| 28 | { | 26 | { |
| 29 | #if defined(_ARM_) || defined(__arm__) | 27 | #if defined(_ARM_) || defined(__arm__) |
| 30 | if (envp == FE_DFL_ENV) | 28 | if (envp == FE_DFL_ENV) |
| 31 | /* Use the choice made at app startup */ | 29 | /* Use the choice made at app startup */ |
| 32 | _fpreset(); | 30 | _fpreset(); |
| 33 | else | 31 | else |
| 34 | __asm__ volatile ("fmxr FPSCR, %0" : : "r" (*envp)); | 32 | __asm__ volatile ("fmxr FPSCR, %0" : : "r" (*envp)); |
| ... | @@ -59,7 +57,7 @@ int fesetenv (const fenv_t * envp) | ... | @@ -59,7 +57,7 @@ int fesetenv (const fenv_t * envp) |
| 59 | (* __MINGW_IMP_SYMBOL(_fpreset))(); | 57 | (* __MINGW_IMP_SYMBOL(_fpreset))(); |
| 60 | 58 | ||
| 61 | else if (envp == FE_DFL_ENV) | 59 | else if (envp == FE_DFL_ENV) |
| 62 | /* Use the choice made at app startup */ | 60 | /* Use the choice made at app startup */ |
| 63 | _fpreset(); | 61 | _fpreset(); |
| 64 | 62 | ||
| 65 | else | 63 | else |
lib/libc/mingw/misc/fesetexceptflag.c+4-6| ... | @@ -3,11 +3,9 @@ | ... | @@ -3,11 +3,9 @@ |
| 3 | * This file is part of the mingw-w64 runtime package. | 3 | * This file is part of the mingw-w64 runtime package. |
| 4 | * No warranty is given; refer to the file DISCLAIMER.PD within this package. | 4 | * No warranty is given; refer to the file DISCLAIMER.PD within this package. |
| 5 | */ | 5 | */ |
| 6 | #include <fenv.h> | ||
| 7 | 6 | ||
| 8 | #if !(defined(_ARM_) || defined(__arm__) || defined(_ARM64_) || defined(__aarch64__)) | 7 | #include <fenv.h> |
| 9 | extern int __mingw_has_sse (void); | 8 | #include <internal.h> |
| 10 | #endif /* !(defined(_ARM_) || defined(__arm__) || defined(_ARM64_) || defined(__aarch64__)) */ | ||
| 11 | 9 | ||
| 12 | /* 7.6.2.4 | 10 | /* 7.6.2.4 |
| 13 | The fesetexceptflag function sets the complete status for those | 11 | The fesetexceptflag function sets the complete status for those |
| ... | @@ -16,9 +14,9 @@ extern int __mingw_has_sse (void); | ... | @@ -16,9 +14,9 @@ extern int __mingw_has_sse (void); |
| 16 | *flagp shall have been set by a previous call to fegetexceptflag | 14 | *flagp shall have been set by a previous call to fegetexceptflag |
| 17 | whose second argument represented at least those exceptions | 15 | whose second argument represented at least those exceptions |
| 18 | represented by the argument excepts. This function does not raise | 16 | represented by the argument excepts. This function does not raise |
| 19 | exceptions, but only sets the state of the flags. */ | 17 | exceptions, but only sets the state of the flags. */ |
| 20 | 18 | ||
| 21 | int fesetexceptflag (const fexcept_t * flagp, int excepts) | 19 | int fesetexceptflag (const fexcept_t * flagp, int excepts) |
| 22 | { | 20 | { |
| 23 | fenv_t _env; | 21 | fenv_t _env; |
| 24 | 22 |
lib/libc/mingw/misc/fesetround.c+3-5| ... | @@ -3,11 +3,9 @@ | ... | @@ -3,11 +3,9 @@ |
| 3 | * This file is part of the mingw-w64 runtime package. | 3 | * This file is part of the mingw-w64 runtime package. |
| 4 | * No warranty is given; refer to the file DISCLAIMER.PD within this package. | 4 | * No warranty is given; refer to the file DISCLAIMER.PD within this package. |
| 5 | */ | 5 | */ |
| 6 | #include <fenv.h> | ||
| 7 | 6 | ||
| 8 | #if !(defined(_ARM_) || defined(__arm__) || defined(_ARM64_) || defined(__aarch64__)) | 7 | #include <fenv.h> |
| 9 | int __mingw_has_sse (void); | 8 | #include <internal.h> |
| 10 | #endif /* !(defined(_ARM_) || defined(__arm__) || defined(_ARM64_) || defined(__aarch64__)) */ | ||
| 11 | 9 | ||
| 12 | /* 7.6.3.2 | 10 | /* 7.6.3.2 |
| 13 | The fesetround function establishes the rounding direction | 11 | The fesetround function establishes the rounding direction |
| ... | @@ -42,7 +40,7 @@ int fesetround (int mode) | ... | @@ -42,7 +40,7 @@ int fesetround (int mode) |
| 42 | _cw &= ~0xc00; | 40 | _cw &= ~0xc00; |
| 43 | _cw |= mode; | 41 | _cw |= mode; |
| 44 | __asm__ volatile ("fldcw %0;" : : "m" (*&_cw)); | 42 | __asm__ volatile ("fldcw %0;" : : "m" (*&_cw)); |
| 45 | 43 | ||
| 46 | if (__mingw_has_sse ()) | 44 | if (__mingw_has_sse ()) |
| 47 | { | 45 | { |
| 48 | int mxcsr; | 46 | int mxcsr; |
lib/libc/mingw/misc/fetestexcept.c+3-6| ... | @@ -4,13 +4,10 @@ | ... | @@ -4,13 +4,10 @@ |
| 4 | * No warranty is given; refer to the file DISCLAIMER.PD within this package. | 4 | * No warranty is given; refer to the file DISCLAIMER.PD within this package. |
| 5 | */ | 5 | */ |
| 6 | 6 | ||
| 7 | #include <fenv.h> | 7 | #include <fenv.h> |
| 8 | #include <internal.h> | ||
| 8 | 9 | ||
| 9 | #if !(defined(_ARM_) || defined(__arm__) || defined(_ARM64_) || defined(__aarch64__)) | 10 | /* 7.6.2.5 |
| 10 | extern int __mingw_has_sse (void); | ||
| 11 | #endif /* !(defined(_ARM_) || defined(__arm__) || defined(_ARM64_) || defined(__aarch64__)) */ | ||
| 12 | |||
| 13 | /* 7.6.2.5 | ||
| 14 | The fetestexcept function determines which of a specified subset of | 11 | The fetestexcept function determines which of a specified subset of |
| 15 | the exception flags are currently set. The excepts argument | 12 | the exception flags are currently set. The excepts argument |
| 16 | specifies the exception flags to be queried. | 13 | specifies the exception flags to be queried. |
lib/libc/mingw/misc/getopt.c+11-17| ... | @@ -80,12 +80,6 @@ char *optarg;		/* argument associated with option */ | ... | @@ -80,12 +80,6 @@ char *optarg;		/* argument associated with option */ |
| 80 | #define	BADARG		((*options == ':') ? (int)':' : (int)'?') | 80 | #define	BADARG		((*options == ':') ? (int)':' : (int)'?') |
| 81 | #define	INORDER 	(int)1 | 81 | #define	INORDER 	(int)1 |
| 82 | 82 | ||
| 83 | #ifndef __CYGWIN__ | ||
| 84 | #define __progname __argv[0] | ||
| 85 | #else | ||
| 86 | extern char __declspec(dllimport) *__progname; | ||
| 87 | #endif | ||
| 88 | |||
| 89 | #ifdef __CYGWIN__ | 83 | #ifdef __CYGWIN__ |
| 90 | static char EMSG[] = ""; | 84 | static char EMSG[] = ""; |
| 91 | #else | 85 | #else |
| ... | @@ -114,20 +108,20 @@ static const char illoptchar[] = "unknown option -- %c"; | ... | @@ -114,20 +108,20 @@ static const char illoptchar[] = "unknown option -- %c"; |
| 114 | static const char illoptstring[] = "unknown option -- %s"; | 108 | static const char illoptstring[] = "unknown option -- %s"; |
| 115 | 109 | ||
| 116 | static void | 110 | static void |
| 117 | _vwarnx(const char *fmt,va_list ap) | 111 | _vwarnx(const char *argv0,const char *fmt,va_list ap) |
| 118 | { | 112 | { |
| 119 | (void)fprintf(stderr,"%s: ",__progname); | 113 | (void)fprintf(stderr,"%s: ",argv0); |
| 120 | if (fmt != NULL) | 114 | if (fmt != NULL) |
| 121 | (void)vfprintf(stderr,fmt,ap); | 115 | (void)vfprintf(stderr,fmt,ap); |
| 122 | (void)fprintf(stderr,"\n"); | 116 | (void)fprintf(stderr,"\n"); |
| 123 | } | 117 | } |
| 124 | 118 | ||
| 125 | static void | 119 | static void |
| 126 | warnx(const char *fmt,...) | 120 | warnx(const char *argv0,const char *fmt,...) |
| 127 | { | 121 | { |
| 128 | va_list ap; | 122 | va_list ap; |
| 129 | va_start(ap,fmt); | 123 | va_start(ap,fmt); |
| 130 | _vwarnx(fmt,ap); | 124 | _vwarnx(argv0,fmt,ap); |
| 131 | va_end(ap); | 125 | va_end(ap); |
| 132 | } | 126 | } |
| 133 | 127 | ||
| ... | @@ -244,7 +238,7 @@ parse_long_options(char * const *nargv, const char *options, | ... | @@ -244,7 +238,7 @@ parse_long_options(char * const *nargv, const char *options, |
| 244 | 	if (ambiguous) { | 238 | 	if (ambiguous) { |
| 245 | 		/* ambiguous abbreviation */ | 239 | 		/* ambiguous abbreviation */ |
| 246 | 		if (PRINT_ERROR) | 240 | 		if (PRINT_ERROR) |
| 247 | 			warnx(ambig, (int)current_argv_len, | 241 | 			warnx(nargv[0], ambig, (int)current_argv_len, |
| 248 | 			 current_argv); | 242 | 			 current_argv); |
| 249 | 		optopt = 0; | 243 | 		optopt = 0; |
| 250 | 		return (BADCH); | 244 | 		return (BADCH); |
| ... | @@ -253,7 +247,7 @@ parse_long_options(char * const *nargv, const char *options, | ... | @@ -253,7 +247,7 @@ parse_long_options(char * const *nargv, const char *options, |
| 253 | 		if (long_options[match].has_arg == no_argument | 247 | 		if (long_options[match].has_arg == no_argument |
| 254 | 		 && has_equal) { | 248 | 		 && has_equal) { |
| 255 | 			if (PRINT_ERROR) | 249 | 			if (PRINT_ERROR) |
| 256 | 				warnx(noarg, (int)current_argv_len, | 250 | 				warnx(nargv[0], noarg, (int)current_argv_len, |
| 257 | 				 current_argv); | 251 | 				 current_argv); |
| 258 | 			/* | 252 | 			/* |
| 259 | 			 * XXX: GNU sets optopt to val regardless of flag | 253 | 			 * XXX: GNU sets optopt to val regardless of flag |
| ... | @@ -283,7 +277,7 @@ parse_long_options(char * const *nargv, const char *options, | ... | @@ -283,7 +277,7 @@ parse_long_options(char * const *nargv, const char *options, |
| 283 | 			 * should be generated. | 277 | 			 * should be generated. |
| 284 | 			 */ | 278 | 			 */ |
| 285 | 			if (PRINT_ERROR) | 279 | 			if (PRINT_ERROR) |
| 286 | 				warnx(recargstring, | 280 | 				warnx(nargv[0], recargstring, |
| 287 | 				 current_argv); | 281 | 				 current_argv); |
| 288 | 			/* | 282 | 			/* |
| 289 | 			 * XXX: GNU sets optopt to val regardless of flag | 283 | 			 * XXX: GNU sets optopt to val regardless of flag |
| ... | @@ -301,7 +295,7 @@ parse_long_options(char * const *nargv, const char *options, | ... | @@ -301,7 +295,7 @@ parse_long_options(char * const *nargv, const char *options, |
| 301 | 			return (-1); | 295 | 			return (-1); |
| 302 | 		} | 296 | 		} |
| 303 | 		if (PRINT_ERROR) | 297 | 		if (PRINT_ERROR) |
| 304 | 			warnx(illoptstring, current_argv); | 298 | 			warnx(nargv[0], illoptstring, current_argv); |
| 305 | 		optopt = 0; | 299 | 		optopt = 0; |
| 306 | 		return (BADCH); | 300 | 		return (BADCH); |
| 307 | 	} | 301 | 	} |
| ... | @@ -467,7 +461,7 @@ start: | ... | @@ -467,7 +461,7 @@ start: |
| 467 | 		if (!*place) | 461 | 		if (!*place) |
| 468 | 			++optind; | 462 | 			++optind; |
| 469 | 		if (PRINT_ERROR) | 463 | 		if (PRINT_ERROR) |
| 470 | 			warnx(illoptchar, optchar); | 464 | 			warnx(nargv[0], illoptchar, optchar); |
| 471 | 		optopt = optchar; | 465 | 		optopt = optchar; |
| 472 | 		return (BADCH); | 466 | 		return (BADCH); |
| 473 | 	} | 467 | 	} |
| ... | @@ -478,7 +472,7 @@ start: | ... | @@ -478,7 +472,7 @@ start: |
| 478 | 		else if (++optind >= nargc) {	/* no arg */ | 472 | 		else if (++optind >= nargc) {	/* no arg */ |
| 479 | 			place = EMSG; | 473 | 			place = EMSG; |
| 480 | 			if (PRINT_ERROR) | 474 | 			if (PRINT_ERROR) |
| 481 | 				warnx(recargchar, optchar); | 475 | 				warnx(nargv[0], recargchar, optchar); |
| 482 | 			optopt = optchar; | 476 | 			optopt = optchar; |
| 483 | 			return (BADARG); | 477 | 			return (BADARG); |
| 484 | 		} else				/* white space */ | 478 | 		} else				/* white space */ |
| ... | @@ -499,7 +493,7 @@ start: | ... | @@ -499,7 +493,7 @@ start: |
| 499 | 			if (++optind >= nargc) {	/* no arg */ | 493 | 			if (++optind >= nargc) {	/* no arg */ |
| 500 | 				place = EMSG; | 494 | 				place = EMSG; |
| 501 | 				if (PRINT_ERROR) | 495 | 				if (PRINT_ERROR) |
| 502 | 					warnx(recargchar, optchar); | 496 | 					warnx(nargv[0], recargchar, optchar); |
| 503 | 				optopt = optchar; | 497 | 				optopt = optchar; |
| 504 | 				return (BADARG); | 498 | 				return (BADARG); |
| 505 | 			} else | 499 | 			} else |
lib/libc/mingw/misc/initenv.c deleted-12| ... | @@ -1,12 +0,0 @@ | ||
| 1 | /** | ||
| 2 | * This file has no copyright assigned and is placed in the Public Domain. | ||
| 3 | * This file is part of the mingw-w64 runtime package. | ||
| 4 | * No warranty is given; refer to the file DISCLAIMER.PD within this package. | ||
| 5 | */ | ||
| 6 | |||
| 7 | #include <wchar.h> | ||
| 8 | |||
| 9 | static char ** local__initenv; | ||
| 10 | static wchar_t ** local__winitenv; | ||
| 11 | char *** __MINGW_IMP_SYMBOL(__initenv) = &local__initenv; | ||
| 12 | wchar_t *** __MINGW_IMP_SYMBOL(__winitenv) = &local__winitenv; | ||
lib/libc/mingw/misc/mkstemp.c+5-7| ... | @@ -7,6 +7,7 @@ | ... | @@ -7,6 +7,7 @@ |
| 7 | #include <share.h> | 7 | #include <share.h> |
| 8 | #include <fcntl.h> | 8 | #include <fcntl.h> |
| 9 | #include <sys/stat.h> | 9 | #include <sys/stat.h> |
| 10 | #include <limits.h> | ||
| 10 | 11 | ||
| 11 | /* | 12 | /* |
| 12 | The mkstemp() function generates a unique temporary filename from template, | 13 | The mkstemp() function generates a unique temporary filename from template, |
| ... | @@ -25,8 +26,8 @@ | ... | @@ -25,8 +26,8 @@ |
| 25 | */ | 26 | */ |
| 26 | int __cdecl mkstemp (char *template_name) | 27 | int __cdecl mkstemp (char *template_name) |
| 27 | { | 28 | { |
| 28 | int i, j, fd, len, index; | 29 | int j, fd, len, index; |
| 29 | unsigned int r; | 30 | unsigned int i, r; |
| 30 | 31 | ||
| 31 | /* These are the (62) characters used in temporary filenames. */ | 32 | /* These are the (62) characters used in temporary filenames. */ |
| 32 | static const char letters[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; | 33 | static const char letters[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; |
| ... | @@ -41,11 +42,8 @@ int __cdecl mkstemp (char *template_name) | ... | @@ -41,11 +42,8 @@ int __cdecl mkstemp (char *template_name) |
| 41 | /* User may supply more than six trailing Xs */ | 42 | /* User may supply more than six trailing Xs */ |
| 42 | for (index = len - 6; index > 0 && template_name[index - 1] == 'X'; index--); | 43 | for (index = len - 6; index > 0 && template_name[index - 1] == 'X'; index--); |
| 43 | 44 | ||
| 44 | /* | 45 | /* Like OpenBSD, mkstemp() will try 2 ** 31 combinations before giving up. */ |
| 45 | Like OpenBSD, mkstemp() will try at least 2 ** 31 combinations before | 46 | for (i = 0; i <= INT_MAX; i++) { |
| 46 | giving up. | ||
| 47 | */ | ||
| 48 | for (i = 0; i >= 0; i++) { | ||
| 49 | for(j = index; j < len; j++) { | 47 | for(j = index; j < len; j++) { |
| 50 | if (rand_s(&r)) | 48 | if (rand_s(&r)) |
| 51 | r = rand(); | 49 | r = rand(); |
lib/libc/mingw/misc/ucrt__getmainargs.c created+25| ... | @@ -0,0 +1,25 @@ | ||
| 1 | /** | ||
| 2 | * This file has no copyright assigned and is placed in the Public Domain. | ||
| 3 | * This file is part of the mingw-w64 runtime package. | ||
| 4 | * No warranty is given; refer to the file DISCLAIMER.PD within this package. | ||
| 5 | */ | ||
| 6 | |||
| 7 | #undef __MSVCRT_VERSION__ | ||
| 8 | #define _UCRT | ||
| 9 | |||
| 10 | #include <corecrt_startup.h> | ||
| 11 | #include <internal.h> | ||
| 12 | #include <stdlib.h> | ||
| 13 | #include <new.h> | ||
| 14 | |||
| 15 | int __cdecl __getmainargs(int *argc, char ***argv, char ***env, int DoWildCard, _startupinfo *StartInfo) | ||
| 16 | { | ||
| 17 | _initialize_narrow_environment(); | ||
| 18 | _configure_narrow_argv(DoWildCard ? _crt_argv_expanded_arguments : _crt_argv_unexpanded_arguments); | ||
| 19 | *argc = *__p___argc(); | ||
| 20 | *argv = *__p___argv(); | ||
| 21 | *env = *__p__environ(); | ||
| 22 | _set_new_mode(StartInfo->newmode); | ||
| 23 | return 0; | ||
| 24 | } | ||
| 25 | int __cdecl (*__MINGW_IMP_SYMBOL(__getmainargs))(int *, char ***, char ***, int, _startupinfo *) = __getmainargs; | ||
lib/libc/mingw/misc/ucrt__wgetmainargs.c created+25| ... | @@ -0,0 +1,25 @@ | ||
| 1 | /** | ||
| 2 | * This file has no copyright assigned and is placed in the Public Domain. | ||
| 3 | * This file is part of the mingw-w64 runtime package. | ||
| 4 | * No warranty is given; refer to the file DISCLAIMER.PD within this package. | ||
| 5 | */ | ||
| 6 | |||
| 7 | #undef __MSVCRT_VERSION__ | ||
| 8 | #define _UCRT | ||
| 9 | |||
| 10 | #include <corecrt_startup.h> | ||
| 11 | #include <internal.h> | ||
| 12 | #include <stdlib.h> | ||
| 13 | #include <new.h> | ||
| 14 | |||
| 15 | int __cdecl __wgetmainargs(int *argc, wchar_t ***argv, wchar_t ***env, int DoWildCard, _startupinfo *StartInfo) | ||
| 16 | { | ||
| 17 | _initialize_wide_environment(); | ||
| 18 | _configure_wide_argv(DoWildCard ? _crt_argv_expanded_arguments : _crt_argv_unexpanded_arguments); | ||
| 19 | *argc = *__p___argc(); | ||
| 20 | *argv = *__p___wargv(); | ||
| 21 | *env = *__p__wenviron(); | ||
| 22 | _set_new_mode(StartInfo->newmode); | ||
| 23 | return 0; | ||
| 24 | } | ||
| 25 | int __cdecl (*__MINGW_IMP_SYMBOL(__wgetmainargs))(int *, wchar_t ***, wchar_t ***, int, _startupinfo *) = __wgetmainargs; | ||
lib/libc/mingw/misc/ucrt_amsg_exit.c created+19| ... | @@ -0,0 +1,19 @@ | ||
| 1 | /** | ||
| 2 | * This file has no copyright assigned and is placed in the Public Domain. | ||
| 3 | * This file is part of the mingw-w64 runtime package. | ||
| 4 | * No warranty is given; refer to the file DISCLAIMER.PD within this package. | ||
| 5 | */ | ||
| 6 | |||
| 7 | #undef __MSVCRT_VERSION__ | ||
| 8 | #define _UCRT | ||
| 9 | |||
| 10 | #include <stdio.h> | ||
| 11 | #include <stdlib.h> | ||
| 12 | #include <internal.h> | ||
| 13 | |||
| 14 | void __cdecl __MINGW_ATTRIB_NORETURN _amsg_exit(int ret) | ||
| 15 | { | ||
| 16 | fprintf(stderr, "runtime error %d\n", ret); | ||
| 17 | _exit(255); | ||
| 18 | } | ||
| 19 | void __cdecl (*__MINGW_IMP_SYMBOL(_amsg_exit))(int) = _amsg_exit; | ||
lib/libc/mingw/misc/ucrt_at_quick_exit.c created+24| ... | @@ -0,0 +1,24 @@ | ||
| 1 | /** | ||
| 2 | * This file has no copyright assigned and is placed in the Public Domain. | ||
| 3 | * This file is part of the mingw-w64 runtime package. | ||
| 4 | * No warranty is given; refer to the file DISCLAIMER.PD within this package. | ||
| 5 | */ | ||
| 6 | |||
| 7 | #undef __MSVCRT_VERSION__ | ||
| 8 | #define _UCRT | ||
| 9 | |||
| 10 | #include <stdlib.h> | ||
| 11 | #include <corecrt_startup.h> | ||
| 12 | |||
| 13 | extern char __mingw_module_is_dll; | ||
| 14 | |||
| 15 | int __cdecl at_quick_exit(void (__cdecl *func)(void)) | ||
| 16 | { | ||
| 17 | // In a DLL, we can't register a function with _crt_at_quick_exit, because | ||
| 18 | // we can't unregister it when the DLL is unloaded. This matches how | ||
| 19 | // at_quick_exit/quick_exit work with MSVC with a dynamically linked CRT. | ||
| 20 | if (__mingw_module_is_dll) | ||
| 21 | return 0; | ||
| 22 | return _crt_at_quick_exit(func); | ||
| 23 | } | ||
| 24 | int __cdecl (*__MINGW_IMP_SYMBOL(at_quick_exit))(void (__cdecl *)(void)) = at_quick_exit; | ||
lib/libc/mingw/misc/ucrt_tzset.c created+45| ... | @@ -0,0 +1,45 @@ | ||
| 1 | /** | ||
| 2 | * This file has no copyright assigned and is placed in the Public Domain. | ||
| 3 | * This file is part of the mingw-w64 runtime package. | ||
| 4 | * No warranty is given; refer to the file DISCLAIMER.PD within this package. | ||
| 5 | */ | ||
| 6 | |||
| 7 | #undef __MSVCRT_VERSION__ | ||
| 8 | #define _UCRT | ||
| 9 | |||
| 10 | #include <time.h> | ||
| 11 | |||
| 12 | // These are required to provide the unrepfixed data symbols "timezone" | ||
| 13 | // and "tzname"; we can't remap "timezone" via a define due to clashes | ||
| 14 | // with e.g. "struct timezone". | ||
| 15 | typedef void __cdecl (*_tzset_func)(void); | ||
| 16 | extern _tzset_func __MINGW_IMP_SYMBOL(_tzset); | ||
| 17 | |||
| 18 | // Default initial values until _tzset has been called; these are the same | ||
| 19 | // as the initial values in msvcrt/ucrtbase. | ||
| 20 | static char initial_tzname0[] = "PST"; | ||
| 21 | static char initial_tzname1[] = "PDT"; | ||
| 22 | static char *initial_tznames[] = { initial_tzname0, initial_tzname1 }; | ||
| 23 | static long initial_timezone = 28800; | ||
| 24 | static int initial_daylight = 1; | ||
| 25 | char** __MINGW_IMP_SYMBOL(tzname) = initial_tznames; | ||
| 26 | long * __MINGW_IMP_SYMBOL(timezone) = &initial_timezone; | ||
| 27 | int * __MINGW_IMP_SYMBOL(daylight) = &initial_daylight; | ||
| 28 | |||
| 29 | void __cdecl _tzset(void) | ||
| 30 | { | ||
| 31 | __MINGW_IMP_SYMBOL(_tzset)(); | ||
| 32 | // Redirect the __imp_ pointers to the actual data provided by the UCRT. | ||
| 33 | // From this point, the exposed values should stay in sync. | ||
| 34 | __MINGW_IMP_SYMBOL(tzname) = _tzname; | ||
| 35 | __MINGW_IMP_SYMBOL(timezone) = __timezone(); | ||
| 36 | __MINGW_IMP_SYMBOL(daylight) = __daylight(); | ||
| 37 | } | ||
| 38 | |||
| 39 | void __cdecl tzset(void) | ||
| 40 | { | ||
| 41 | _tzset(); | ||
| 42 | } | ||
| 43 | |||
| 44 | // Dummy/unused __imp_ wrappers, to make GNU ld not autoexport these symbols. | ||
| 45 | void __cdecl (*__MINGW_IMP_SYMBOL(tzset))(void) = tzset; | ||
lib/libc/mingw/misc/wcstoimax.c+11| ... | @@ -33,6 +33,7 @@ | ... | @@ -33,6 +33,7 @@ |
| 33 | #define valid(n, b)	((n) >= 0 && (n) < (b)) | 33 | #define valid(n, b)	((n) >= 0 && (n) < (b)) |
| 34 | 34 | ||
| 35 | intmax_t | 35 | intmax_t |
| 36 | __cdecl | ||
| 36 | wcstoimax(const wchar_t * __restrict__ nptr, wchar_t ** __restrict__ endptr, int base) | 37 | wcstoimax(const wchar_t * __restrict__ nptr, wchar_t ** __restrict__ endptr, int base) |
| 37 | 	{ | 38 | 	{ |
| 38 | 	register uintmax_t	accum;	/* accumulates converted value */ | 39 | 	register uintmax_t	accum;	/* accumulates converted value */ |
| ... | @@ -116,6 +117,16 @@ wcstoimax(const wchar_t * __restrict__ nptr, wchar_t ** __restrict__ endptr, int | ... | @@ -116,6 +117,16 @@ wcstoimax(const wchar_t * __restrict__ nptr, wchar_t ** __restrict__ endptr, int |
| 116 | 	else | 117 | 	else |
| 117 | 		return (intmax_t)(minus ? -accum : accum); | 118 | 		return (intmax_t)(minus ? -accum : accum); |
| 118 | 	} | 119 | 	} |
| 120 | intmax_t (__cdecl *__MINGW_IMP_SYMBOL(wcstoimax))(const wchar_t * __restrict__, wchar_t ** __restrict__, int) = wcstoimax; | ||
| 119 | 121 | ||
| 120 | long long __attribute__ ((alias ("wcstoimax"))) | 122 | long long __attribute__ ((alias ("wcstoimax"))) |
| 123 | __cdecl | ||
| 121 | wcstoll (const wchar_t* __restrict__ nptr, wchar_t ** __restrict__ endptr, int base); | 124 | wcstoll (const wchar_t* __restrict__ nptr, wchar_t ** __restrict__ endptr, int base); |
| 125 | extern long long __attribute__ ((alias (__MINGW64_STRINGIFY(__MINGW_IMP_SYMBOL(wcstoimax))))) | ||
| 126 | (__cdecl *__MINGW_IMP_SYMBOL(wcstoll))(const wchar_t * __restrict__, wchar_t ** __restrict__, int); | ||
| 127 | |||
| 128 | long long __attribute__ ((alias ("wcstoimax"))) | ||
| 129 | __cdecl | ||
| 130 | _wcstoi64 (const wchar_t* __restrict__ nptr, wchar_t ** __restrict__ endptr, int base); | ||
| 131 | extern long long __attribute__ ((alias (__MINGW64_STRINGIFY(__MINGW_IMP_SYMBOL(wcstoimax))))) | ||
| 132 | (__cdecl *__MINGW_IMP_SYMBOL(_wcstoi64))(const wchar_t * __restrict__, wchar_t ** __restrict__, int); |
lib/libc/mingw/misc/wcstoumax.c+11| ... | @@ -33,6 +33,7 @@ | ... | @@ -33,6 +33,7 @@ |
| 33 | #define valid(n, b)	((n) >= 0 && (n) < (b)) | 33 | #define valid(n, b)	((n) >= 0 && (n) < (b)) |
| 34 | 34 | ||
| 35 | uintmax_t | 35 | uintmax_t |
| 36 | __cdecl | ||
| 36 | wcstoumax(const wchar_t * __restrict__ nptr, wchar_t ** __restrict__ endptr, int base) | 37 | wcstoumax(const wchar_t * __restrict__ nptr, wchar_t ** __restrict__ endptr, int base) |
| 37 | 	{ | 38 | 	{ |
| 38 | 	register uintmax_t	accum;	/* accumulates converted value */ | 39 | 	register uintmax_t	accum;	/* accumulates converted value */ |
| ... | @@ -110,6 +111,16 @@ wcstoumax(const wchar_t * __restrict__ nptr, wchar_t ** __restrict__ endptr, int | ... | @@ -110,6 +111,16 @@ wcstoumax(const wchar_t * __restrict__ nptr, wchar_t ** __restrict__ endptr, int |
| 110 | 	else | 111 | 	else |
| 111 | 		return minus ? -accum : accum;	/* (yes!) */ | 112 | 		return minus ? -accum : accum;	/* (yes!) */ |
| 112 | 	} | 113 | 	} |
| 114 | uintmax_t (__cdecl *__MINGW_IMP_SYMBOL(wcstoumax))(const wchar_t * __restrict__, wchar_t ** __restrict__, int) = wcstoumax; | ||
| 113 | 115 | ||
| 114 | unsigned long long __attribute__ ((alias ("wcstoumax"))) | 116 | unsigned long long __attribute__ ((alias ("wcstoumax"))) |
| 117 | __cdecl | ||
| 115 | wcstoull (const wchar_t* __restrict__ nptr, wchar_t ** __restrict__ endptr, int base); | 118 | wcstoull (const wchar_t* __restrict__ nptr, wchar_t ** __restrict__ endptr, int base); |
| 119 | extern unsigned long long __attribute__ ((alias (__MINGW64_STRINGIFY(__MINGW_IMP_SYMBOL(wcstoumax))))) | ||
| 120 | (__cdecl *__MINGW_IMP_SYMBOL(wcstoull))(const wchar_t * __restrict__, wchar_t ** __restrict__, int); | ||
| 121 | |||
| 122 | unsigned long long __attribute__ ((alias ("wcstoumax"))) | ||
| 123 | __cdecl | ||
| 124 | _wcstoui64 (const wchar_t* __restrict__ nptr, wchar_t ** __restrict__ endptr, int base); | ||
| 125 | extern unsigned long long __attribute__ ((alias (__MINGW64_STRINGIFY(__MINGW_IMP_SYMBOL(wcstoumax))))) | ||
| 126 | (__cdecl *__MINGW_IMP_SYMBOL(_wcstoui64))(const wchar_t * __restrict__, wchar_t ** __restrict__, int); |
lib/libc/mingw/stdio/_fstat.c deleted-52| ... | @@ -1,52 +0,0 @@ | ||
| 1 | #define __CRT__NO_INLINE | ||
| 2 | #include <sys/stat.h> | ||
| 3 | |||
| 4 | /* FIXME: Relying on _USE_32BIT_TIME_T, which is a user-macro, | ||
| 5 | during CRT compilation is plainly broken. Need an appropriate | ||
| 6 | implementation to provide users the ability of compiling the | ||
| 7 | CRT only with 32-bit time_t behavior. */ | ||
| 8 | #if defined(_USE_32BIT_TIME_T) | ||
| 9 | int __cdecl | ||
| 10 | fstat(int _Desc,struct stat *_Stat) | ||
| 11 | { | ||
| 12 | struct _stat32 st; | ||
| 13 | int ret=_fstat32(_Desc,&st); | ||
| 14 | if (ret == -1) { | ||
| 15 | memset(_Stat,0,sizeof(struct stat)); | ||
| 16 | return -1; | ||
| 17 | } | ||
| 18 | /* struct stat and struct _stat32 | ||
| 19 | are the same for this case. */ | ||
| 20 | memcpy(_Stat, &st, sizeof(struct _stat32)); | ||
| 21 | return ret; | ||
| 22 | } | ||
| 23 | #else | ||
| 24 | int __cdecl | ||
| 25 | fstat(int _Desc,struct stat *_Stat) | ||
| 26 | { | ||
| 27 | struct _stat64 st; | ||
| 28 | int ret=_fstat64(_Desc,&st); | ||
| 29 | if (ret == -1) { | ||
| 30 | memset(_Stat,0,sizeof(struct stat)); | ||
| 31 | return -1; | ||
| 32 | } | ||
| 33 | /* struct stat and struct _stat64i32 | ||
| 34 | are the same for this case. */ | ||
| 35 | _Stat->st_dev=st.st_dev; | ||
| 36 | _Stat->st_ino=st.st_ino; | ||
| 37 | _Stat->st_mode=st.st_mode; | ||
| 38 | _Stat->st_nlink=st.st_nlink; | ||
| 39 | _Stat->st_uid=st.st_uid; | ||
| 40 | _Stat->st_gid=st.st_gid; | ||
| 41 | _Stat->st_rdev=st.st_rdev; | ||
| 42 | _Stat->st_size=(_off_t) st.st_size; | ||
| 43 | _Stat->st_atime=st.st_atime; | ||
| 44 | _Stat->st_mtime=st.st_mtime; | ||
| 45 | _Stat->st_ctime=st.st_ctime; | ||
| 46 | return ret; | ||
| 47 | } | ||
| 48 | #endif | ||
| 49 | |||
| 50 | /* Add __imp__fstat and __imp__stat symbols. */ | ||
| 51 | int (*__MINGW_IMP_SYMBOL(fstat))(int, struct stat *) = &fstat; | ||
| 52 | |||
lib/libc/mingw/stdio/_ftime.c deleted-19| ... | @@ -1,19 +0,0 @@ | ||
| 1 | #define __CRT__NO_INLINE | ||
| 2 | #include <sys/stat.h> | ||
| 3 | #include <sys/timeb.h> | ||
| 4 | |||
| 5 | /* FIXME: Relying on _USE_32BIT_TIME_T, which is a user-macro, | ||
| 6 | during CRT compilation is plainly broken. Need an appropriate | ||
| 7 | implementation to provide users the ability of compiling the | ||
| 8 | CRT only with 32-bit time_t behavior. */ | ||
| 9 | #if defined(_USE_32BIT_TIME_T) | ||
| 10 | void __cdecl ftime (struct timeb *b) | ||
| 11 | { | ||
| 12 | return _ftime ((struct __timeb32 *)b); | ||
| 13 | } | ||
| 14 | #else | ||
| 15 | void __cdecl ftime (struct timeb *b) | ||
| 16 | { | ||
| 17 | _ftime64((struct __timeb64 *)b); | ||
| 18 | } | ||
| 19 | #endif | ||
lib/libc/mingw/stdio/fgetpos64.c deleted-5| ... | @@ -1,5 +0,0 @@ | ||
| 1 | #include <stdio.h> | ||
| 2 | |||
| 3 | int __cdecl fgetpos64(FILE * __restrict__ _File ,fpos_t * __restrict__ _Pos){ | ||
| 4 | return fgetpos(_File, _Pos); | ||
| 5 | } | ||
lib/libc/mingw/stdio/fsetpos64.c deleted-5| ... | @@ -1,5 +0,0 @@ | ||
| 1 | #include <stdio.h> | ||
| 2 | |||
| 3 | int __cdecl fsetpos64(FILE *_File,const fpos_t *_Pos){ /* fsetpos already 64bit */ | ||
| 4 | return fsetpos(_File,_Pos); | ||
| 5 | } | ||
lib/libc/mingw/stdio/ftruncate64.c+15-15| ... | @@ -123,7 +123,7 @@ static LPWSTR xp_getfilepath(const HANDLE f, const LARGE_INTEGER fsize){ | ... | @@ -123,7 +123,7 @@ static LPWSTR xp_getfilepath(const HANDLE f, const LARGE_INTEGER fsize){ |
| 123 | if (temp) free(temp); | 123 | if (temp) free(temp); |
| 124 | if (pMem) UnmapViewOfFile(pMem); | 124 | if (pMem) UnmapViewOfFile(pMem); |
| 125 | if (hFileMap) CloseHandle(hFileMap); | 125 | if (hFileMap) CloseHandle(hFileMap); |
| 126 | _set_errno(EBADF); | 126 | errno = EBADF; |
| 127 | return NULL; | 127 | return NULL; |
| 128 | } | 128 | } |
| 129 | #endif /* _CHECK_SPACE_BY_PSAPI_METHOD_ */ | 129 | #endif /* _CHECK_SPACE_BY_PSAPI_METHOD_ */ |
| ... | @@ -142,7 +142,7 @@ checkfreespace (const HANDLE f, const ULONGLONG requiredspace) | ... | @@ -142,7 +142,7 @@ checkfreespace (const HANDLE f, const ULONGLONG requiredspace) |
| 142 | check = GetFileSizeEx (f, &currentsize); | 142 | check = GetFileSizeEx (f, &currentsize); |
| 143 | if (!check) | 143 | if (!check) |
| 144 | { | 144 | { |
| 145 | _set_errno(EBADF); | 145 | errno = EBADF; |
| 146 | return -1; /* Error checking file size */ | 146 | return -1; /* Error checking file size */ |
| 147 | } | 147 | } |
| 148 | 148 | ||
| ... | @@ -159,19 +159,19 @@ checkfreespace (const HANDLE f, const ULONGLONG requiredspace) | ... | @@ -159,19 +159,19 @@ checkfreespace (const HANDLE f, const ULONGLONG requiredspace) |
| 159 | check = GetFinalPathNameByHandleW(f,filepath,0,FILE_NAME_NORMALIZED|VOLUME_NAME_GUID); | 159 | check = GetFinalPathNameByHandleW(f,filepath,0,FILE_NAME_NORMALIZED|VOLUME_NAME_GUID); |
| 160 | err = GetLastError(); | 160 | err = GetLastError(); |
| 161 | if (err == ERROR_PATH_NOT_FOUND || err == ERROR_INVALID_PARAMETER) { | 161 | if (err == ERROR_PATH_NOT_FOUND || err == ERROR_INVALID_PARAMETER) { |
| 162 | _set_errno(EINVAL); | 162 | errno = EINVAL; |
| 163 | return -1; /* IO error */ | 163 | return -1; /* IO error */ |
| 164 | } | 164 | } |
| 165 | filepath = calloc(check + 1,sizeof(wchar_t)); | 165 | filepath = calloc(check + 1,sizeof(wchar_t)); |
| 166 | if (!filepath) { | 166 | if (!filepath) { |
| 167 | _set_errno(EBADF); | 167 | errno = EBADF; |
| 168 | return -1; /* Out of memory */ | 168 | return -1; /* Out of memory */ |
| 169 | } | 169 | } |
| 170 | check = GetFinalPathNameByHandleW(f,filepath,check,FILE_NAME_NORMALIZED|VOLUME_NAME_GUID); | 170 | check = GetFinalPathNameByHandleW(f,filepath,check,FILE_NAME_NORMALIZED|VOLUME_NAME_GUID); |
| 171 | /* FIXME: last error was set to error 87 (0x57) | 171 | /* FIXME: last error was set to error 87 (0x57) |
| 172 | "The parameter is incorrect." for some reason but works out */ | 172 | "The parameter is incorrect." for some reason but works out */ |
| 173 | if (!check) { | 173 | if (!check) { |
| 174 | _set_errno(EBADF); | 174 | errno = EBADF; |
| 175 | return -1; /* Error resolving filename */ | 175 | return -1; /* Error resolving filename */ |
| 176 | } | 176 | } |
| 177 | #endif /* _CHECK_SPACE_BY_VISTA_METHOD_ */ | 177 | #endif /* _CHECK_SPACE_BY_VISTA_METHOD_ */ |
| ... | @@ -185,21 +185,21 @@ checkfreespace (const HANDLE f, const ULONGLONG requiredspace) | ... | @@ -185,21 +185,21 @@ checkfreespace (const HANDLE f, const ULONGLONG requiredspace) |
| 185 | free(filepath); | 185 | free(filepath); |
| 186 | filepath = NULL; | 186 | filepath = NULL; |
| 187 | if (!dirpath) { | 187 | if (!dirpath) { |
| 188 | _set_errno(EBADF); | 188 | errno = EBADF; |
| 189 | return -1; /* Out of memory */ | 189 | return -1; /* Out of memory */ |
| 190 | } | 190 | } |
| 191 | #endif /* _CHECK_SPACE_BY_PSAPI_METHOD_ */ | 191 | #endif /* _CHECK_SPACE_BY_PSAPI_METHOD_ */ |
| 192 | 192 | ||
| 193 | #if _CHECK_SPACE_BY_VOLUME_METHOD_ | 193 | #if _CHECK_SPACE_BY_VOLUME_METHOD_ |
| 194 | if(!GetFileInformationByHandle(f,&fileinfo)) { | 194 | if(!GetFileInformationByHandle(f,&fileinfo)) { |
| 195 | _set_errno(EINVAL); | 195 | errno = EINVAL; |
| 196 | return -1; /* Resolution failure */ | 196 | return -1; /* Resolution failure */ |
| 197 | } | 197 | } |
| 198 | 198 | ||
| 199 | volumeid = calloc(51,sizeof(wchar_t)); | 199 | volumeid = calloc(51,sizeof(wchar_t)); |
| 200 | volumepath = calloc(MAX_PATH+2,sizeof(wchar_t)); | 200 | volumepath = calloc(MAX_PATH+2,sizeof(wchar_t)); |
| 201 | if(!volumeid || !volumepath) { | 201 | if(!volumeid || !volumepath) { |
| 202 | _set_errno(EBADF); | 202 | errno = EBADF; |
| 203 | return -1; /* Out of memory */ | 203 | return -1; /* Out of memory */ |
| 204 | } | 204 | } |
| 205 | 205 | ||
| ... | @@ -226,14 +226,14 @@ checkfreespace (const HANDLE f, const ULONGLONG requiredspace) | ... | @@ -226,14 +226,14 @@ checkfreespace (const HANDLE f, const ULONGLONG requiredspace) |
| 226 | //wprintf(L"freespace %I64u\n",freespace); | 226 | //wprintf(L"freespace %I64u\n",freespace); |
| 227 | free(dirpath); | 227 | free(dirpath); |
| 228 | if(!check) { | 228 | if(!check) { |
| 229 | _set_errno(EFBIG); | 229 | errno = EFBIG; |
| 230 | return -1; /* Error getting free space */ | 230 | return -1; /* Error getting free space */ |
| 231 | } | 231 | } |
| 232 | 232 | ||
| 233 | /* Check space requirements */ | 233 | /* Check space requirements */ |
| 234 | if ((requiredspace - currentsize.QuadPart) > freespace.QuadPart) | 234 | if ((requiredspace - currentsize.QuadPart) > freespace.QuadPart) |
| 235 | { | 235 | { |
| 236 | _set_errno(EFBIG); /* File too big for disk */ | 236 | errno = EFBIG; /* File too big for disk */ |
| 237 | return -1; | 237 | return -1; |
| 238 | } /* We have enough space to truncate/expand */ | 238 | } /* We have enough space to truncate/expand */ |
| 239 | return 0; | 239 | return 0; |
| ... | @@ -258,7 +258,7 @@ int ftruncate64(int __fd, _off64_t __length) { | ... | @@ -258,7 +258,7 @@ int ftruncate64(int __fd, _off64_t __length) { |
| 258 | 258 | ||
| 259 | f = (HANDLE)_get_osfhandle(__fd); | 259 | f = (HANDLE)_get_osfhandle(__fd); |
| 260 | if (f == INVALID_HANDLE_VALUE || (GetFileType(f) != FILE_TYPE_DISK)) { | 260 | if (f == INVALID_HANDLE_VALUE || (GetFileType(f) != FILE_TYPE_DISK)) { |
| 261 | _set_errno(EBADF); | 261 | errno = EBADF; |
| 262 | return -1; | 262 | return -1; |
| 263 | } | 263 | } |
| 264 | 264 | ||
| ... | @@ -279,13 +279,13 @@ int ftruncate64(int __fd, _off64_t __length) { | ... | @@ -279,13 +279,13 @@ int ftruncate64(int __fd, _off64_t __length) { |
| 279 | if (check == INVALID_SET_FILE_POINTER && quad.LowPart != INVALID_SET_FILE_POINTER) { | 279 | if (check == INVALID_SET_FILE_POINTER && quad.LowPart != INVALID_SET_FILE_POINTER) { |
| 280 | switch (GetLastError()) { | 280 | switch (GetLastError()) { |
| 281 | case ERROR_NEGATIVE_SEEK: | 281 | case ERROR_NEGATIVE_SEEK: |
| 282 | _set_errno(EFBIG); /* file too big? */ | 282 | errno = EFBIG; /* file too big? */ |
| 283 | return -1; | 283 | return -1; |
| 284 | case INVALID_SET_FILE_POINTER: | 284 | case INVALID_SET_FILE_POINTER: |
| 285 | _set_errno(EINVAL); /* shouldn't happen */ | 285 | errno = EINVAL; /* shouldn't happen */ |
| 286 | return -1; | 286 | return -1; |
| 287 | default: | 287 | default: |
| 288 | _set_errno(EINVAL); /* shouldn't happen */ | 288 | errno = EINVAL; /* shouldn't happen */ |
| 289 | return -1; | 289 | return -1; |
| 290 | } | 290 | } |
| 291 | } | 291 | } |
| ... | @@ -302,7 +302,7 @@ int ftruncate64(int __fd, _off64_t __length) { | ... | @@ -302,7 +302,7 @@ int ftruncate64(int __fd, _off64_t __length) { |
| 302 | return ret; | 302 | return ret; |
| 303 | 303 | ||
| 304 | errorout: | 304 | errorout: |
| 305 | _set_errno(EINVAL); | 305 | errno = EINVAL; |
| 306 | return -1; | 306 | return -1; |
| 307 | } | 307 | } |
| 308 | 308 |
lib/libc/mingw/stdio/truncate.c+4-4| ... | @@ -7,9 +7,9 @@ int truncate(const char *pathname, _off_t len){ | ... | @@ -7,9 +7,9 @@ int truncate(const char *pathname, _off_t len){ |
| 7 | int fd = _open(pathname,_O_BINARY|_O_RDWR); | 7 | int fd = _open(pathname,_O_BINARY|_O_RDWR); |
| 8 | if (fd == -1) return fd; | 8 | if (fd == -1) return fd; |
| 9 | ret = ftruncate(fd,len); | 9 | ret = ftruncate(fd,len); |
| 10 | _get_errno(&err); | 10 | err = errno; |
| 11 | _close(fd); | 11 | _close(fd); |
| 12 | _set_errno(err); | 12 | errno = err; |
| 13 | return ret; | 13 | return ret; |
| 14 | } | 14 | } |
| 15 | 15 | ||
| ... | @@ -18,8 +18,8 @@ int truncate64(const char *pathname, _off64_t len){ | ... | @@ -18,8 +18,8 @@ int truncate64(const char *pathname, _off64_t len){ |
| 18 | int fd = _open(pathname,_O_BINARY|_O_RDWR); | 18 | int fd = _open(pathname,_O_BINARY|_O_RDWR); |
| 19 | if (fd == -1) return fd; | 19 | if (fd == -1) return fd; |
| 20 | ret = ftruncate64(fd,len); | 20 | ret = ftruncate64(fd,len); |
| 21 | _get_errno(&err); | 21 | err = errno; |
| 22 | _close(fd); | 22 | _close(fd); |
| 23 | _set_errno(err); | 23 | errno = err; |
| 24 | return ret; | 24 | return ret; |
| 25 | } | 25 | } |
lib/libc/mingw/stdio/ucrt__scprintf.c created+21| ... | @@ -0,0 +1,21 @@ | ||
| 1 | /** | ||
| 2 | * This file has no copyright assigned and is placed in the Public Domain. | ||
| 3 | * This file is part of the mingw-w64 runtime package. | ||
| 4 | * No warranty is given; refer to the file DISCLAIMER.PD within this package. | ||
| 5 | */ | ||
| 6 | |||
| 7 | #undef __MSVCRT_VERSION__ | ||
| 8 | #define _UCRT | ||
| 9 | #include <stdio.h> | ||
| 10 | #include <stdarg.h> | ||
| 11 | |||
| 12 | int __cdecl _scprintf(const char * __restrict__ _Format, ...) | ||
| 13 | { | ||
| 14 | int ret; | ||
| 15 | va_list _ArgList; | ||
| 16 | va_start(_ArgList, _Format); | ||
| 17 | ret = __stdio_common_vsprintf(_CRT_INTERNAL_LOCAL_PRINTF_OPTIONS | _CRT_INTERNAL_PRINTF_STANDARD_SNPRINTF_BEHAVIOR, NULL, 0, _Format, NULL, _ArgList); | ||
| 18 | va_end(_ArgList); | ||
| 19 | return ret; | ||
| 20 | } | ||
| 21 | int __cdecl (*__MINGW_IMP_SYMBOL(_scprintf))(const char *__restrict__, ...) = _scprintf; | ||
lib/libc/mingw/stdio/ucrt__snprintf.c created+21| ... | @@ -0,0 +1,21 @@ | ||
| 1 | /** | ||
| 2 | * This file has no copyright assigned and is placed in the Public Domain. | ||
| 3 | * This file is part of the mingw-w64 runtime package. | ||
| 4 | * No warranty is given; refer to the file DISCLAIMER.PD within this package. | ||
| 5 | */ | ||
| 6 | |||
| 7 | #undef __MSVCRT_VERSION__ | ||
| 8 | #define _UCRT | ||
| 9 | #include <stdio.h> | ||
| 10 | #include <stdarg.h> | ||
| 11 | |||
| 12 | int __cdecl _snprintf(char * __restrict__ _Dest, size_t _Count, const char * __restrict__ _Format, ...) | ||
| 13 | { | ||
| 14 | int ret; | ||
| 15 | va_list _Args; | ||
| 16 | va_start(_Args, _Format); | ||
| 17 | ret = __stdio_common_vsprintf(_CRT_INTERNAL_LOCAL_PRINTF_OPTIONS | _CRT_INTERNAL_PRINTF_LEGACY_VSPRINTF_NULL_TERMINATION, _Dest, _Count, _Format, NULL, _Args); | ||
| 18 | va_end(_Args); | ||
| 19 | return ret; | ||
| 20 | } | ||
| 21 | int __cdecl (*__MINGW_IMP_SYMBOL(_snprintf))(char *__restrict__, size_t, const char *__restrict__, ...) = _snprintf; | ||
lib/libc/mingw/stdio/ucrt__snscanf.c created+21| ... | @@ -0,0 +1,21 @@ | ||
| 1 | /** | ||
| 2 | * This file has no copyright assigned and is placed in the Public Domain. | ||
| 3 | * This file is part of the mingw-w64 runtime package. | ||
| 4 | * No warranty is given; refer to the file DISCLAIMER.PD within this package. | ||
| 5 | */ | ||
| 6 | |||
| 7 | #undef __MSVCRT_VERSION__ | ||
| 8 | #define _UCRT | ||
| 9 | #include <stdio.h> | ||
| 10 | #include <stdarg.h> | ||
| 11 | |||
| 12 | int __cdecl _snscanf(const char * __restrict__ _Src, size_t _MaxCount, const char * __restrict__ _Format, ...) | ||
| 13 | { | ||
| 14 | int ret; | ||
| 15 | va_list _ArgList; | ||
| 16 | va_start(_ArgList, _Format); | ||
| 17 | ret = __stdio_common_vsscanf(0, _Src, _MaxCount, _Format, NULL, _ArgList); | ||
| 18 | va_end(_ArgList); | ||
| 19 | return ret; | ||
| 20 | } | ||
| 21 | int __cdecl (*__MINGW_IMP_SYMBOL(_snscanf))(const char *__restrict__, size_t, const char * __restrict__, ...) = _snscanf; | ||
lib/libc/mingw/stdio/ucrt__snwprintf.c+1-1| ... | @@ -30,7 +30,7 @@ int __cdecl _snwprintf(wchar_t * restrict _Dest, size_t _Count, const wchar_t * | ... | @@ -30,7 +30,7 @@ int __cdecl _snwprintf(wchar_t * restrict _Dest, size_t _Count, const wchar_t * |
| 30 | va_list ap; | 30 | va_list ap; |
| 31 | int ret; | 31 | int ret; |
| 32 | va_start(ap, _Format); | 32 | va_start(ap, _Format); |
| 33 | ret = vsnwprintf(_Dest, _Count, _Format, ap); | 33 | ret = __stdio_common_vswprintf(_CRT_INTERNAL_LOCAL_PRINTF_OPTIONS | _CRT_INTERNAL_PRINTF_LEGACY_VSPRINTF_NULL_TERMINATION, _Dest, _Count, _Format, NULL, ap); |
| 34 | va_end(ap); | 34 | va_end(ap); |
| 35 | return ret; | 35 | return ret; |
| 36 | } | 36 | } |
lib/libc/mingw/stdio/ucrt__vscprintf.c+1-1| ... | @@ -10,6 +10,6 @@ | ... | @@ -10,6 +10,6 @@ |
| 10 | 10 | ||
| 11 | int __cdecl _vscprintf(const char * __restrict__ _Format, va_list _ArgList) | 11 | int __cdecl _vscprintf(const char * __restrict__ _Format, va_list _ArgList) |
| 12 | { | 12 | { |
| 13 | return __stdio_common_vsprintf(_CRT_INTERNAL_PRINTF_STANDARD_SNPRINTF_BEHAVIOR, NULL, 0, _Format, NULL, _ArgList); | 13 | return __stdio_common_vsprintf(_CRT_INTERNAL_LOCAL_PRINTF_OPTIONS | _CRT_INTERNAL_PRINTF_STANDARD_SNPRINTF_BEHAVIOR, NULL, 0, _Format, NULL, _ArgList); |
| 14 | } | 14 | } |
| 15 | int __cdecl (*__MINGW_IMP_SYMBOL(_vscprintf))(const char *__restrict__, va_list) = _vscprintf; | 15 | int __cdecl (*__MINGW_IMP_SYMBOL(_vscprintf))(const char *__restrict__, va_list) = _vscprintf; |
lib/libc/mingw/stdio/ucrt__vsnprintf.c+1-1| ... | @@ -10,6 +10,6 @@ | ... | @@ -10,6 +10,6 @@ |
| 10 | 10 | ||
| 11 | int __cdecl _vsnprintf(char * __restrict__ _Dest,size_t _Count,const char * __restrict__ _Format,va_list _Args) __MINGW_ATTRIB_DEPRECATED_SEC_WARN | 11 | int __cdecl _vsnprintf(char * __restrict__ _Dest,size_t _Count,const char * __restrict__ _Format,va_list _Args) __MINGW_ATTRIB_DEPRECATED_SEC_WARN |
| 12 | { | 12 | { |
| 13 | return __stdio_common_vsprintf(_CRT_INTERNAL_PRINTF_LEGACY_VSPRINTF_NULL_TERMINATION, _Dest, _Count, _Format, NULL, _Args); | 13 | return __stdio_common_vsprintf(_CRT_INTERNAL_LOCAL_PRINTF_OPTIONS | _CRT_INTERNAL_PRINTF_LEGACY_VSPRINTF_NULL_TERMINATION, _Dest, _Count, _Format, NULL, _Args); |
| 14 | } | 14 | } |
| 15 | int __cdecl (*__MINGW_IMP_SYMBOL(_vsnprintf))(char *__restrict__, size_t, const char *__restrict__, va_list) = _vsnprintf; | 15 | int __cdecl (*__MINGW_IMP_SYMBOL(_vsnprintf))(char *__restrict__, size_t, const char *__restrict__, va_list) = _vsnprintf; |
lib/libc/mingw/stdio/ucrt_fprintf.c+1-1| ... | @@ -13,7 +13,7 @@ int __cdecl fprintf(FILE * __restrict__ _File,const char * __restrict__ _Format, | ... | @@ -13,7 +13,7 @@ int __cdecl fprintf(FILE * __restrict__ _File,const char * __restrict__ _Format, |
| 13 | __builtin_va_list ap; | 13 | __builtin_va_list ap; |
| 14 | int ret; | 14 | int ret; |
| 15 | __builtin_va_start(ap, _Format); | 15 | __builtin_va_start(ap, _Format); |
| 16 | ret = __stdio_common_vfprintf(0, _File, _Format, NULL, ap); | 16 | ret = __stdio_common_vfprintf(_CRT_INTERNAL_LOCAL_PRINTF_OPTIONS, _File, _Format, NULL, ap); |
| 17 | __builtin_va_end(ap); | 17 | __builtin_va_end(ap); |
| 18 | return ret; | 18 | return ret; |
| 19 | } | 19 | } |
lib/libc/mingw/stdio/ucrt_ms_fwprintf.c created+24| ... | @@ -0,0 +1,24 @@ | ||
| 1 | /** | ||
| 2 | * This file has no copyright assigned and is placed in the Public Domain. | ||
| 3 | * This file is part of the mingw-w64 runtime package. | ||
| 4 | * No warranty is given; refer to the file DISCLAIMER.PD within this package. | ||
| 5 | */ | ||
| 6 | |||
| 7 | #undef __MSVCRT_VERSION__ | ||
| 8 | #define _UCRT | ||
| 9 | |||
| 10 | #include <stdio.h> | ||
| 11 | #include <stdarg.h> | ||
| 12 | |||
| 13 | // This is called for wchar cases with __USE_MINGW_ANSI_STDIO enabled (where the | ||
| 14 | // char case just uses fputc). | ||
| 15 | int __cdecl __ms_fwprintf(FILE *file, const wchar_t *fmt, ...) | ||
| 16 | { | ||
| 17 | va_list ap; | ||
| 18 | int ret; | ||
| 19 | va_start(ap, fmt); | ||
| 20 | ret = __stdio_common_vfwprintf(_CRT_INTERNAL_PRINTF_LEGACY_WIDE_SPECIFIERS, file, fmt, NULL, ap); | ||
| 21 | va_end(ap); | ||
| 22 | return ret; | ||
| 23 | } | ||
| 24 | int __cdecl (*__MINGW_IMP_SYMBOL(__ms_fwprintf))(FILE *, const wchar_t *, ...) = __ms_fwprintf; | ||
lib/libc/mingw/stdio/ucrt_printf.c+1-1| ... | @@ -13,7 +13,7 @@ int __cdecl printf(const char * __restrict__ _Format,...) | ... | @@ -13,7 +13,7 @@ int __cdecl printf(const char * __restrict__ _Format,...) |
| 13 | __builtin_va_list ap; | 13 | __builtin_va_list ap; |
| 14 | int ret; | 14 | int ret; |
| 15 | __builtin_va_start(ap, _Format); | 15 | __builtin_va_start(ap, _Format); |
| 16 | ret = __stdio_common_vfprintf(0, stdout, _Format, NULL, ap); | 16 | ret = __stdio_common_vfprintf(_CRT_INTERNAL_LOCAL_PRINTF_OPTIONS, stdout, _Format, NULL, ap); |
| 17 | __builtin_va_end(ap); | 17 | __builtin_va_end(ap); |
| 18 | return ret; | 18 | return ret; |
| 19 | } | 19 | } |
lib/libc/mingw/stdio/ucrt_snprintf.c+1-1| ... | @@ -13,7 +13,7 @@ int __cdecl snprintf (char * __restrict__ __stream, size_t __n, const char * __r | ... | @@ -13,7 +13,7 @@ int __cdecl snprintf (char * __restrict__ __stream, size_t __n, const char * __r |
| 13 | __builtin_va_list ap; | 13 | __builtin_va_list ap; |
| 14 | int ret; | 14 | int ret; |
| 15 | __builtin_va_start(ap, __format); | 15 | __builtin_va_start(ap, __format); |
| 16 | ret = __stdio_common_vsprintf(_CRT_INTERNAL_PRINTF_STANDARD_SNPRINTF_BEHAVIOR, __stream, __n, __format, NULL, ap); | 16 | ret = __stdio_common_vsprintf(_CRT_INTERNAL_LOCAL_PRINTF_OPTIONS | _CRT_INTERNAL_PRINTF_STANDARD_SNPRINTF_BEHAVIOR, __stream, __n, __format, NULL, ap); |
| 17 | __builtin_va_end(ap); | 17 | __builtin_va_end(ap); |
| 18 | return ret; | 18 | return ret; |
| 19 | } | 19 | } |
lib/libc/mingw/stdio/ucrt_sprintf.c+1-1| ... | @@ -13,7 +13,7 @@ int __cdecl sprintf(char * __restrict__ _Dest,const char * __restrict__ _Format, | ... | @@ -13,7 +13,7 @@ int __cdecl sprintf(char * __restrict__ _Dest,const char * __restrict__ _Format, |
| 13 | __builtin_va_list ap; | 13 | __builtin_va_list ap; |
| 14 | int ret; | 14 | int ret; |
| 15 | __builtin_va_start(ap, _Format); | 15 | __builtin_va_start(ap, _Format); |
| 16 | ret = __stdio_common_vsprintf(_CRT_INTERNAL_PRINTF_STANDARD_SNPRINTF_BEHAVIOR, _Dest, (size_t)-1, _Format, NULL, ap); | 16 | ret = __stdio_common_vsprintf(_CRT_INTERNAL_LOCAL_PRINTF_OPTIONS | _CRT_INTERNAL_PRINTF_STANDARD_SNPRINTF_BEHAVIOR, _Dest, (size_t)-1, _Format, NULL, ap); |
| 17 | __builtin_va_end(ap); | 17 | __builtin_va_end(ap); |
| 18 | return ret; | 18 | return ret; |
| 19 | } | 19 | } |
lib/libc/mingw/stdio/ucrt_vfprintf.c+1-1| ... | @@ -10,6 +10,6 @@ | ... | @@ -10,6 +10,6 @@ |
| 10 | 10 | ||
| 11 | int __cdecl vfprintf(FILE * __restrict__ _File,const char * __restrict__ _Format,va_list _ArgList) | 11 | int __cdecl vfprintf(FILE * __restrict__ _File,const char * __restrict__ _Format,va_list _ArgList) |
| 12 | { | 12 | { |
| 13 | return __stdio_common_vfprintf(0, _File, _Format, NULL, _ArgList); | 13 | return __stdio_common_vfprintf(_CRT_INTERNAL_LOCAL_PRINTF_OPTIONS, _File, _Format, NULL, _ArgList); |
| 14 | } | 14 | } |
| 15 | int __cdecl (*__MINGW_IMP_SYMBOL(vfprintf))(FILE *__restrict__, const char *__restrict__, va_list) = vfprintf; | 15 | int __cdecl (*__MINGW_IMP_SYMBOL(vfprintf))(FILE *__restrict__, const char *__restrict__, va_list) = vfprintf; |
lib/libc/mingw/stdio/ucrt_vprintf.c+1-1| ... | @@ -10,6 +10,6 @@ | ... | @@ -10,6 +10,6 @@ |
| 10 | 10 | ||
| 11 | int __cdecl vprintf(const char * __restrict__ _Format,va_list _ArgList) | 11 | int __cdecl vprintf(const char * __restrict__ _Format,va_list _ArgList) |
| 12 | { | 12 | { |
| 13 | return __stdio_common_vfprintf(0, stdout, _Format, NULL, _ArgList); | 13 | return __stdio_common_vfprintf(_CRT_INTERNAL_LOCAL_PRINTF_OPTIONS, stdout, _Format, NULL, _ArgList); |
| 14 | } | 14 | } |
| 15 | int __cdecl (*__MINGW_IMP_SYMBOL(vprintf))(const char *__restrict__, va_list) = vprintf; | 15 | int __cdecl (*__MINGW_IMP_SYMBOL(vprintf))(const char *__restrict__, va_list) = vprintf; |
lib/libc/mingw/stdio/ucrt_vsnprintf.c+1-1| ... | @@ -10,6 +10,6 @@ | ... | @@ -10,6 +10,6 @@ |
| 10 | 10 | ||
| 11 | int __cdecl vsnprintf (char * __restrict__ __stream, size_t __n, const char * __restrict__ __format, va_list __local_argv) | 11 | int __cdecl vsnprintf (char * __restrict__ __stream, size_t __n, const char * __restrict__ __format, va_list __local_argv) |
| 12 | { | 12 | { |
| 13 | return __stdio_common_vsprintf(_CRT_INTERNAL_PRINTF_STANDARD_SNPRINTF_BEHAVIOR, __stream, __n, __format, NULL, __local_argv); | 13 | return __stdio_common_vsprintf(_CRT_INTERNAL_LOCAL_PRINTF_OPTIONS | _CRT_INTERNAL_PRINTF_STANDARD_SNPRINTF_BEHAVIOR, __stream, __n, __format, NULL, __local_argv); |
| 14 | } | 14 | } |
| 15 | int __cdecl (*__MINGW_IMP_SYMBOL(vsnprintf))(char *__restrict__, size_t, const char *__restrict__, va_list) = vsnprintf; | 15 | int __cdecl (*__MINGW_IMP_SYMBOL(vsnprintf))(char *__restrict__, size_t, const char *__restrict__, va_list) = vsnprintf; |
lib/libc/mingw/stdio/ucrt_vsprintf.c+1-1| ... | @@ -10,6 +10,6 @@ | ... | @@ -10,6 +10,6 @@ |
| 10 | 10 | ||
| 11 | int __cdecl vsprintf(char * __restrict__ _Dest,const char * __restrict__ _Format,va_list _Args) __MINGW_ATTRIB_DEPRECATED_SEC_WARN | 11 | int __cdecl vsprintf(char * __restrict__ _Dest,const char * __restrict__ _Format,va_list _Args) __MINGW_ATTRIB_DEPRECATED_SEC_WARN |
| 12 | { | 12 | { |
| 13 | return __stdio_common_vsprintf(_CRT_INTERNAL_PRINTF_STANDARD_SNPRINTF_BEHAVIOR, _Dest, (size_t)-1, _Format, NULL, _Args); | 13 | return __stdio_common_vsprintf(_CRT_INTERNAL_LOCAL_PRINTF_OPTIONS | _CRT_INTERNAL_PRINTF_STANDARD_SNPRINTF_BEHAVIOR, _Dest, (size_t)-1, _Format, NULL, _Args); |
| 14 | } | 14 | } |
| 15 | int __cdecl (*__MINGW_IMP_SYMBOL(vsprintf))(char *__restrict__, const char *__restrict__, va_list) = vsprintf; | 15 | int __cdecl (*__MINGW_IMP_SYMBOL(vsprintf))(char *__restrict__, const char *__restrict__, va_list) = vsprintf; |
lib/libc/mingw/string/ucrt__wcstok.c created+14| ... | @@ -0,0 +1,14 @@ | ||
| 1 | /** | ||
| 2 | * This file has no copyright assigned and is placed in the Public Domain. | ||
| 3 | * This file is part of the mingw-w64 runtime package. | ||
| 4 | * No warranty is given; refer to the file DISCLAIMER.PD within this package. | ||
| 5 | */ | ||
| 6 | |||
| 7 | #include <wchar.h> | ||
| 8 | |||
| 9 | wchar_t *__cdecl _wcstok(wchar_t *restrict str, const wchar_t *restrict delim) | ||
| 10 | { | ||
| 11 | /* NULL as a third param can be specified only for UCRT version of wcstok() */ | ||
| 12 | return wcstok(str, delim, NULL); | ||
| 13 | } | ||
| 14 | wchar_t *(__cdecl *__MINGW_IMP_SYMBOL(_wcstok))(wchar_t *restrict, const wchar_t *restrict) = _wcstok; | ||
lib/libc/mingw/winpthreads/barrier.c created+246| ... | @@ -0,0 +1,246 @@ | ||
| 1 | /* | ||
| 2 | Copyright (c) 2011-2016 mingw-w64 project | ||
| 3 | |||
| 4 | Permission is hereby granted, free of charge, to any person obtaining a | ||
| 5 | copy of this software and associated documentation files (the "Software"), | ||
| 6 | to deal in the Software without restriction, including without limitation | ||
| 7 | the rights to use, copy, modify, merge, publish, distribute, sublicense, | ||
| 8 | and/or sell copies of the Software, and to permit persons to whom the | ||
| 9 | Software is furnished to do so, subject to the following conditions: | ||
| 10 | |||
| 11 | The above copyright notice and this permission notice shall be included in | ||
| 12 | all copies or substantial portions of the Software. | ||
| 13 | |||
| 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
| 15 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
| 16 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
| 17 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
| 18 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||
| 19 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||
| 20 | DEALINGS IN THE SOFTWARE. | ||
| 21 | */ | ||
| 22 | |||
| 23 | #include <windows.h> | ||
| 24 | #include <stdio.h> | ||
| 25 | #include <malloc.h> | ||
| 26 | #include "pthread.h" | ||
| 27 | #include "barrier.h" | ||
| 28 | #include "ref.h" | ||
| 29 | #include "misc.h" | ||
| 30 | |||
| 31 | static pthread_spinlock_t barrier_global = PTHREAD_SPINLOCK_INITIALIZER; | ||
| 32 | |||
| 33 | static WINPTHREADS_ATTRIBUTE((noinline)) int | ||
| 34 | barrier_unref(volatile pthread_barrier_t *barrier, int res) | ||
| 35 | { | ||
| 36 | pthread_spin_lock(&barrier_global); | ||
| 37 | #ifdef WINPTHREAD_DBG | ||
| 38 | assert((((barrier_t *)*barrier)->valid == LIFE_BARRIER) && (((barrier_t *)*barrier)->busy > 0)); | ||
| 39 | #endif | ||
| 40 | ((barrier_t *)*barrier)->busy -= 1; | ||
| 41 | pthread_spin_unlock(&barrier_global); | ||
| 42 | return res; | ||
| 43 | } | ||
| 44 | |||
| 45 | static WINPTHREADS_ATTRIBUTE((noinline)) int barrier_ref(volatile pthread_barrier_t *barrier) | ||
| 46 | { | ||
| 47 | int r = 0; | ||
| 48 | pthread_spin_lock(&barrier_global); | ||
| 49 | |||
| 50 | if (!barrier || !*barrier || ((barrier_t *)*barrier)->valid != LIFE_BARRIER) r = EINVAL; | ||
| 51 | else { | ||
| 52 | ((barrier_t *)*barrier)->busy += 1; | ||
| 53 | } | ||
| 54 | |||
| 55 | pthread_spin_unlock(&barrier_global); | ||
| 56 | |||
| 57 | return r; | ||
| 58 | } | ||
| 59 | |||
| 60 | static WINPTHREADS_ATTRIBUTE((noinline)) int | ||
| 61 | barrier_ref_destroy(volatile pthread_barrier_t *barrier, pthread_barrier_t *bDestroy) | ||
| 62 | { | ||
| 63 | int r = 0; | ||
| 64 | |||
| 65 | *bDestroy = NULL; | ||
| 66 | pthread_spin_lock(&barrier_global); | ||
| 67 | |||
| 68 | if (!barrier || !*barrier || ((barrier_t *)*barrier)->valid != LIFE_BARRIER) r = EINVAL; | ||
| 69 | else { | ||
| 70 | barrier_t *b_ = (barrier_t *)*barrier; | ||
| 71 | if (b_->busy) r = EBUSY; | ||
| 72 | else { | ||
| 73 | *bDestroy = *barrier; | ||
| 74 | *barrier = NULL; | ||
| 75 | } | ||
| 76 | } | ||
| 77 | |||
| 78 | pthread_spin_unlock(&barrier_global); | ||
| 79 | return r; | ||
| 80 | } | ||
| 81 | |||
| 82 | static WINPTHREADS_ATTRIBUTE((noinline)) void | ||
| 83 | barrier_ref_set (volatile pthread_barrier_t *barrier, void *v) | ||
| 84 | { | ||
| 85 | pthread_spin_lock(&barrier_global); | ||
| 86 | *barrier = v; | ||
| 87 | pthread_spin_unlock(&barrier_global); | ||
| 88 | } | ||
| 89 | |||
| 90 | int pthread_barrier_destroy(pthread_barrier_t *b_) | ||
| 91 | { | ||
| 92 | pthread_barrier_t bDestroy; | ||
| 93 | barrier_t *b; | ||
| 94 | int r; | ||
| 95 | |||
| 96 | while ((r = barrier_ref_destroy(b_,&bDestroy)) == EBUSY) | ||
| 97 | Sleep(0); | ||
| 98 | |||
| 99 | if (r) | ||
| 100 | return r; | ||
| 101 | |||
| 102 | b = (barrier_t *)bDestroy; | ||
| 103 | |||
| 104 | pthread_mutex_lock(&b->m); | ||
| 105 | |||
| 106 | if (sem_destroy(&b->sems[0]) != 0) | ||
| 107 | { | ||
| 108 | /* Could this happen? */ | ||
| 109 | *b_ = bDestroy; | ||
| 110 | pthread_mutex_unlock (&b->m); | ||
| 111 | return EBUSY; | ||
| 112 | } | ||
| 113 | if (sem_destroy(&b->sems[1]) != 0) | ||
| 114 | { | ||
| 115 | sem_init (&b->sems[0], b->share, 0); | ||
| 116 | *b_ = bDestroy; | ||
| 117 | pthread_mutex_unlock (&b->m); | ||
| 118 | return -1; | ||
| 119 | } | ||
| 120 | pthread_mutex_unlock(&b->m); | ||
| 121 | if(pthread_mutex_destroy(&b->m) != 0) { | ||
| 122 | sem_init (&b->sems[0], b->share, 0); | ||
| 123 | sem_init (&b->sems[1], b->share, 0); | ||
| 124 | *b_ = bDestroy; | ||
| 125 | return -1; | ||
| 126 | } | ||
| 127 | b->valid = DEAD_BARRIER; | ||
| 128 | free(bDestroy); | ||
| 129 | return 0; | ||
| 130 | |||
| 131 | } | ||
| 132 | |||
| 133 | int | ||
| 134 | pthread_barrier_init (pthread_barrier_t *b_, const void *attr, | ||
| 135 | 		 unsigned int count) | ||
| 136 | { | ||
| 137 | barrier_t *b; | ||
| 138 | |||
| 139 | if (!count || !b_) | ||
| 140 | return EINVAL; | ||
| 141 | |||
| 142 | if ((b = (pthread_barrier_t)calloc(1,sizeof(*b))) == NULL) | ||
| 143 | return ENOMEM; | ||
| 144 | if (!attr || *((int **)attr) == NULL) | ||
| 145 | b->share = PTHREAD_PROCESS_PRIVATE; | ||
| 146 | else | ||
| 147 | memcpy (&b->share, *((void **) attr), sizeof (int)); | ||
| 148 | b->total = count; | ||
| 149 | b->count = count; | ||
| 150 | b->valid = LIFE_BARRIER; | ||
| 151 | b->sel = 0; | ||
| 152 | |||
| 153 | if (pthread_mutex_init(&b->m, NULL) != 0) | ||
| 154 | { | ||
| 155 | free (b); | ||
| 156 | return ENOMEM; | ||
| 157 | } | ||
| 158 | |||
| 159 | if (sem_init(&b->sems[0], b->share, 0) != 0) | ||
| 160 | { | ||
| 161 | pthread_mutex_destroy(&b->m); | ||
| 162 | free (b); | ||
| 163 | return ENOMEM; | ||
| 164 | } | ||
| 165 | if (sem_init(&b->sems[1], b->share, 0) != 0) | ||
| 166 | { | ||
| 167 | pthread_mutex_destroy(&b->m); | ||
| 168 | sem_destroy(&b->sems[0]); | ||
| 169 | free (b); | ||
| 170 | return ENOMEM; | ||
| 171 | } | ||
| 172 | barrier_ref_set (b_,b); | ||
| 173 | |||
| 174 | return 0; | ||
| 175 | } | ||
| 176 | |||
| 177 | int pthread_barrier_wait(pthread_barrier_t *b_) | ||
| 178 | { | ||
| 179 | long sel; | ||
| 180 | int r, e, rslt; | ||
| 181 | barrier_t *b; | ||
| 182 | |||
| 183 | r = barrier_ref(b_); | ||
| 184 | if(r) return r; | ||
| 185 | |||
| 186 | b = (barrier_t *)*b_; | ||
| 187 | |||
| 188 | if ((r = pthread_mutex_lock(&b->m)) != 0) return barrier_unref(b_,EINVAL); | ||
| 189 | sel = b->sel; | ||
| 190 | InterlockedDecrement((long*)&b->total); | ||
| 191 | if (b->total == 0) | ||
| 192 | { | ||
| 193 | b->total = b->count; | ||
| 194 | b->sel = (sel != 0 ? 0 : 1); | ||
| 195 | e = 1; | ||
| 196 | rslt = PTHREAD_BARRIER_SERIAL_THREAD; | ||
| 197 | r = (b->count > 1 ? sem_post_multiple (&b->sems[sel], b->count - 1) : 0); | ||
| 198 | } | ||
| 199 | else { e = 0; rslt= 0; } | ||
| 200 | pthread_mutex_unlock(&b->m); | ||
| 201 | if (!e) | ||
| 202 | r = sem_wait(&b->sems[sel]); | ||
| 203 | |||
| 204 | if (!r) r = rslt; | ||
| 205 | return barrier_unref(b_,r); | ||
| 206 | } | ||
| 207 | |||
| 208 | int pthread_barrierattr_init(void **attr) | ||
| 209 | { | ||
| 210 | int *p; | ||
| 211 | |||
| 212 | if ((p = (int *) calloc (1, sizeof (int))) == NULL) | ||
| 213 | return ENOMEM; | ||
| 214 | |||
| 215 | *p = PTHREAD_PROCESS_PRIVATE; | ||
| 216 | *attr = p; | ||
| 217 | |||
| 218 | return 0; | ||
| 219 | } | ||
| 220 | |||
| 221 | int pthread_barrierattr_destroy(void **attr) | ||
| 222 | { | ||
| 223 | void *p; | ||
| 224 | if (!attr || (p = *attr) == NULL) | ||
| 225 | return EINVAL; | ||
| 226 | *attr = NULL; | ||
| 227 | free (p); | ||
| 228 | return 0; | ||
| 229 | } | ||
| 230 | |||
| 231 | int pthread_barrierattr_setpshared(void **attr, int s) | ||
| 232 | { | ||
| 233 | if (!attr || *attr == NULL | ||
| 234 | || (s != PTHREAD_PROCESS_SHARED && s != PTHREAD_PROCESS_PRIVATE)) | ||
| 235 | return EINVAL; | ||
| 236 | memcpy (*attr, &s, sizeof (int)); | ||
| 237 | return 0; | ||
| 238 | } | ||
| 239 | |||
| 240 | int pthread_barrierattr_getpshared(void **attr, int *s) | ||
| 241 | { | ||
| 242 | if (!attr || !s || *attr == NULL) | ||
| 243 | return EINVAL; | ||
| 244 | memcpy (s, *attr, sizeof (int)); | ||
| 245 | return 0; | ||
| 246 | } | ||
lib/libc/mingw/winpthreads/barrier.h created+52| ... | @@ -0,0 +1,52 @@ | ||
| 1 | /* | ||
| 2 | Copyright (c) 2011-2016 mingw-w64 project | ||
| 3 | |||
| 4 | Permission is hereby granted, free of charge, to any person obtaining a | ||
| 5 | copy of this software and associated documentation files (the "Software"), | ||
| 6 | to deal in the Software without restriction, including without limitation | ||
| 7 | the rights to use, copy, modify, merge, publish, distribute, sublicense, | ||
| 8 | and/or sell copies of the Software, and to permit persons to whom the | ||
| 9 | Software is furnished to do so, subject to the following conditions: | ||
| 10 | |||
| 11 | The above copyright notice and this permission notice shall be included in | ||
| 12 | all copies or substantial portions of the Software. | ||
| 13 | |||
| 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
| 15 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
| 16 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
| 17 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
| 18 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||
| 19 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||
| 20 | DEALINGS IN THE SOFTWARE. | ||
| 21 | */ | ||
| 22 | |||
| 23 | #ifndef WIN_PTHREADS_BARRIER_H | ||
| 24 | #define WIN_PTHREADS_BARRIER_H | ||
| 25 | |||
| 26 | #define LIFE_BARRIER 0xBAB1FEED | ||
| 27 | #define DEAD_BARRIER 0xDEADB00F | ||
| 28 | |||
| 29 | #define _PTHREAD_BARRIER_FLAG (1<<30) | ||
| 30 | |||
| 31 | #define CHECK_BARRIER(b) \ | ||
| 32 | do { \ | ||
| 33 | if (!(b) || ( ((barrier_t *)(*b))->valid != (unsigned int)LIFE_BARRIER ) ) \ | ||
| 34 | return EINVAL; \ | ||
| 35 | } while (0) | ||
| 36 | |||
| 37 | #include "semaphore.h" | ||
| 38 | |||
| 39 | typedef struct barrier_t barrier_t; | ||
| 40 | struct barrier_t | ||
| 41 | { | ||
| 42 | int valid; | ||
| 43 | int busy; | ||
| 44 | int count; | ||
| 45 | int total; | ||
| 46 | int share; | ||
| 47 | long sel; | ||
| 48 | pthread_mutex_t m; | ||
| 49 | sem_t sems[2]; | ||
| 50 | }; | ||
| 51 | |||
| 52 | #endif | ||
lib/libc/mingw/winpthreads/clock.c created+257| ... | @@ -0,0 +1,257 @@ | ||
| 1 | /** | ||
| 2 | * This file has no copyright assigned and is placed in the Public Domain. | ||
| 3 | * This file is part of the w64 mingw-runtime package. | ||
| 4 | * No warranty is given; refer to the file DISCLAIMER.PD within this package. | ||
| 5 | */ | ||
| 6 | |||
| 7 | #include <errno.h> | ||
| 8 | #include <stdint.h> | ||
| 9 | #include <time.h> | ||
| 10 | #include <windows.h> | ||
| 11 | #ifndef IN_WINPTHREAD | ||
| 12 | #define IN_WINPTHREAD 1 | ||
| 13 | #endif | ||
| 14 | #include "pthread.h" | ||
| 15 | #include "pthread_time.h" | ||
| 16 | #include "misc.h" | ||
| 17 | |||
| 18 | #define POW10_7 10000000 | ||
| 19 | #define POW10_9 1000000000 | ||
| 20 | |||
| 21 | /* Number of 100ns-seconds between the beginning of the Windows epoch | ||
| 22 | * (Jan. 1, 1601) and the Unix epoch (Jan. 1, 1970) | ||
| 23 | */ | ||
| 24 | #define DELTA_EPOCH_IN_100NS INT64_C(116444736000000000) | ||
| 25 | |||
| 26 | static WINPTHREADS_INLINE int lc_set_errno(int result) | ||
| 27 | { | ||
| 28 | if (result != 0) { | ||
| 29 | errno = result; | ||
| 30 | return -1; | ||
| 31 | } | ||
| 32 | return 0; | ||
| 33 | } | ||
| 34 | |||
| 35 | /** | ||
| 36 | * Get the resolution of the specified clock clock_id and | ||
| 37 | * stores it in the struct timespec pointed to by res. | ||
| 38 | * @param clock_id The clock_id argument is the identifier of the particular | ||
| 39 | * clock on which to act. The following clocks are supported: | ||
| 40 | * <pre> | ||
| 41 | * CLOCK_REALTIME System-wide real-time clock. Setting this clock | ||
| 42 | * requires appropriate privileges. | ||
| 43 | * CLOCK_MONOTONIC Clock that cannot be set and represents monotonic | ||
| 44 | * time since some unspecified starting point. | ||
| 45 | * CLOCK_PROCESS_CPUTIME_ID High-resolution per-process timer from the CPU. | ||
| 46 | * CLOCK_THREAD_CPUTIME_ID Thread-specific CPU-time clock. | ||
| 47 | * </pre> | ||
| 48 | * @param res The pointer to a timespec structure to receive the time | ||
| 49 | * resolution. | ||
| 50 | * @return If the function succeeds, the return value is 0. | ||
| 51 | * If the function fails, the return value is -1, | ||
| 52 | * with errno set to indicate the error. | ||
| 53 | */ | ||
| 54 | int clock_getres(clockid_t clock_id, struct timespec *res) | ||
| 55 | { | ||
| 56 | clockid_t id = clock_id; | ||
| 57 | |||
| 58 | if (id == CLOCK_REALTIME && _pthread_get_system_time_best_as_file_time == GetSystemTimeAsFileTime) | ||
| 59 | id = CLOCK_REALTIME_COARSE; /* GetSystemTimePreciseAsFileTime() not available */ | ||
| 60 | |||
| 61 | switch(id) { | ||
| 62 | case CLOCK_REALTIME: | ||
| 63 | case CLOCK_MONOTONIC: | ||
| 64 | { | ||
| 65 | LARGE_INTEGER pf; | ||
| 66 | |||
| 67 | if (QueryPerformanceFrequency(&pf) == 0) | ||
| 68 | return lc_set_errno(EINVAL); | ||
| 69 | |||
| 70 | res->tv_sec = 0; | ||
| 71 | res->tv_nsec = (int) ((POW10_9 + (pf.QuadPart >> 1)) / pf.QuadPart); | ||
| 72 | if (res->tv_nsec < 1) | ||
| 73 | res->tv_nsec = 1; | ||
| 74 | |||
| 75 | return 0; | ||
| 76 | } | ||
| 77 | |||
| 78 | case CLOCK_REALTIME_COARSE: | ||
| 79 | case CLOCK_PROCESS_CPUTIME_ID: | ||
| 80 | case CLOCK_THREAD_CPUTIME_ID: | ||
| 81 | { | ||
| 82 | DWORD timeAdjustment, timeIncrement; | ||
| 83 | BOOL isTimeAdjustmentDisabled; | ||
| 84 | |||
| 85 | (void) GetSystemTimeAdjustment(&timeAdjustment, &timeIncrement, &isTimeAdjustmentDisabled); | ||
| 86 | res->tv_sec = 0; | ||
| 87 | res->tv_nsec = timeIncrement * 100; | ||
| 88 | |||
| 89 | return 0; | ||
| 90 | } | ||
| 91 | default: | ||
| 92 | break; | ||
| 93 | } | ||
| 94 | |||
| 95 | return lc_set_errno(EINVAL); | ||
| 96 | } | ||
| 97 | |||
| 98 | /** | ||
| 99 | * Get the time of the specified clock clock_id and stores it in the struct | ||
| 100 | * timespec pointed to by tp. | ||
| 101 | * @param clock_id The clock_id argument is the identifier of the particular | ||
| 102 | * clock on which to act. The following clocks are supported: | ||
| 103 | * <pre> | ||
| 104 | * CLOCK_REALTIME System-wide real-time clock. Setting this clock | ||
| 105 | * requires appropriate privileges. | ||
| 106 | * CLOCK_MONOTONIC Clock that cannot be set and represents monotonic | ||
| 107 | * time since some unspecified starting point. | ||
| 108 | * CLOCK_PROCESS_CPUTIME_ID High-resolution per-process timer from the CPU. | ||
| 109 | * CLOCK_THREAD_CPUTIME_ID Thread-specific CPU-time clock. | ||
| 110 | * </pre> | ||
| 111 | * @param tp The pointer to a timespec structure to receive the time. | ||
| 112 | * @return If the function succeeds, the return value is 0. | ||
| 113 | * If the function fails, the return value is -1, | ||
| 114 | * with errno set to indicate the error. | ||
| 115 | */ | ||
| 116 | int clock_gettime(clockid_t clock_id, struct timespec *tp) | ||
| 117 | { | ||
| 118 | unsigned __int64 t; | ||
| 119 | LARGE_INTEGER pf, pc; | ||
| 120 | union { | ||
| 121 | unsigned __int64 u64; | ||
| 122 | FILETIME ft; | ||
| 123 | } ct, et, kt, ut; | ||
| 124 | |||
| 125 | switch(clock_id) { | ||
| 126 | case CLOCK_REALTIME: | ||
| 127 | { | ||
| 128 | _pthread_get_system_time_best_as_file_time(&ct.ft); | ||
| 129 | t = ct.u64 - DELTA_EPOCH_IN_100NS; | ||
| 130 | tp->tv_sec = t / POW10_7; | ||
| 131 | tp->tv_nsec = ((int) (t % POW10_7)) * 100; | ||
| 132 | |||
| 133 | return 0; | ||
| 134 | } | ||
| 135 | |||
| 136 | case CLOCK_REALTIME_COARSE: | ||
| 137 | { | ||
| 138 | GetSystemTimeAsFileTime(&ct.ft); | ||
| 139 | t = ct.u64 - DELTA_EPOCH_IN_100NS; | ||
| 140 | tp->tv_sec = t / POW10_7; | ||
| 141 | tp->tv_nsec = ((int) (t % POW10_7)) * 100; | ||
| 142 | |||
| 143 | return 0; | ||
| 144 | } | ||
| 145 | |||
| 146 | case CLOCK_MONOTONIC: | ||
| 147 | { | ||
| 148 | if (QueryPerformanceFrequency(&pf) == 0) | ||
| 149 | return lc_set_errno(EINVAL); | ||
| 150 | |||
| 151 | if (QueryPerformanceCounter(&pc) == 0) | ||
| 152 | return lc_set_errno(EINVAL); | ||
| 153 | |||
| 154 | tp->tv_sec = pc.QuadPart / pf.QuadPart; | ||
| 155 | tp->tv_nsec = (int) (((pc.QuadPart % pf.QuadPart) * POW10_9 + (pf.QuadPart >> 1)) / pf.QuadPart); | ||
| 156 | if (tp->tv_nsec >= POW10_9) { | ||
| 157 | tp->tv_sec ++; | ||
| 158 | tp->tv_nsec -= POW10_9; | ||
| 159 | } | ||
| 160 | |||
| 161 | return 0; | ||
| 162 | } | ||
| 163 | |||
| 164 | case CLOCK_PROCESS_CPUTIME_ID: | ||
| 165 | { | ||
| 166 | if(0 == GetProcessTimes(GetCurrentProcess(), &ct.ft, &et.ft, &kt.ft, &ut.ft)) | ||
| 167 | return lc_set_errno(EINVAL); | ||
| 168 | t = kt.u64 + ut.u64; | ||
| 169 | tp->tv_sec = t / POW10_7; | ||
| 170 | tp->tv_nsec = ((int) (t % POW10_7)) * 100; | ||
| 171 | |||
| 172 | return 0; | ||
| 173 | } | ||
| 174 | |||
| 175 | case CLOCK_THREAD_CPUTIME_ID: | ||
| 176 | { | ||
| 177 | if(0 == GetThreadTimes(GetCurrentThread(), &ct.ft, &et.ft, &kt.ft, &ut.ft)) | ||
| 178 | return lc_set_errno(EINVAL); | ||
| 179 | t = kt.u64 + ut.u64; | ||
| 180 | tp->tv_sec = t / POW10_7; | ||
| 181 | tp->tv_nsec = ((int) (t % POW10_7)) * 100; | ||
| 182 | |||
| 183 | return 0; | ||
| 184 | } | ||
| 185 | |||
| 186 | default: | ||
| 187 | break; | ||
| 188 | } | ||
| 189 | |||
| 190 | return lc_set_errno(EINVAL); | ||
| 191 | } | ||
| 192 | |||
| 193 | /** | ||
| 194 | * Sleep for the specified time. | ||
| 195 | * @param clock_id This argument should always be CLOCK_REALTIME (0). | ||
| 196 | * @param flags 0 for relative sleep interval, others for absolute waking up. | ||
| 197 | * @param request The desired sleep interval or absolute waking up time. | ||
| 198 | * @param remain The remain amount of time to sleep. | ||
| 199 | * The current implemention just ignore it. | ||
| 200 | * @return If the function succeeds, the return value is 0. | ||
| 201 | * If the function fails, the return value is -1, | ||
| 202 | * with errno set to indicate the error. | ||
| 203 | */ | ||
| 204 | int clock_nanosleep(clockid_t clock_id, int flags, | ||
| 205 | const struct timespec *request, | ||
| 206 | struct timespec *remain) | ||
| 207 | { | ||
| 208 | struct timespec tp; | ||
| 209 | |||
| 210 | if (clock_id != CLOCK_REALTIME) | ||
| 211 | return lc_set_errno(EINVAL); | ||
| 212 | |||
| 213 | if (flags == 0) | ||
| 214 | return nanosleep(request, remain); | ||
| 215 | |||
| 216 | /* TIMER_ABSTIME = 1 */ | ||
| 217 | clock_gettime(CLOCK_REALTIME, &tp); | ||
| 218 | |||
| 219 | tp.tv_sec = request->tv_sec - tp.tv_sec; | ||
| 220 | tp.tv_nsec = request->tv_nsec - tp.tv_nsec; | ||
| 221 | if (tp.tv_nsec < 0) { | ||
| 222 | tp.tv_nsec += POW10_9; | ||
| 223 | tp.tv_sec --; | ||
| 224 | } | ||
| 225 | |||
| 226 | return nanosleep(&tp, remain); | ||
| 227 | } | ||
| 228 | |||
| 229 | /** | ||
| 230 | * Set the time of the specified clock clock_id. | ||
| 231 | * @param clock_id This argument should always be CLOCK_REALTIME (0). | ||
| 232 | * @param tp The requested time. | ||
| 233 | * @return If the function succeeds, the return value is 0. | ||
| 234 | * If the function fails, the return value is -1, | ||
| 235 | * with errno set to indicate the error. | ||
| 236 | */ | ||
| 237 | int clock_settime(clockid_t clock_id, const struct timespec *tp) | ||
| 238 | { | ||
| 239 | SYSTEMTIME st; | ||
| 240 | |||
| 241 | union { | ||
| 242 | unsigned __int64 u64; | ||
| 243 | FILETIME ft; | ||
| 244 | } t; | ||
| 245 | |||
| 246 | if (clock_id != CLOCK_REALTIME) | ||
| 247 | return lc_set_errno(EINVAL); | ||
| 248 | |||
| 249 | t.u64 = tp->tv_sec * (__int64) POW10_7 + tp->tv_nsec / 100 + DELTA_EPOCH_IN_100NS; | ||
| 250 | if (FileTimeToSystemTime(&t.ft, &st) == 0) | ||
| 251 | return lc_set_errno(EINVAL); | ||
| 252 | |||
| 253 | if (SetSystemTime(&st) == 0) | ||
| 254 | return lc_set_errno(EPERM); | ||
| 255 | |||
| 256 | return 0; | ||
| 257 | } | ||
lib/libc/mingw/winpthreads/cond.c created+755| ... | @@ -0,0 +1,755 @@ | ||
| 1 | /* | ||
| 2 | Copyright (c) 2011-2016 mingw-w64 project | ||
| 3 | |||
| 4 | Permission is hereby granted, free of charge, to any person obtaining a | ||
| 5 | copy of this software and associated documentation files (the "Software"), | ||
| 6 | to deal in the Software without restriction, including without limitation | ||
| 7 | the rights to use, copy, modify, merge, publish, distribute, sublicense, | ||
| 8 | and/or sell copies of the Software, and to permit persons to whom the | ||
| 9 | Software is furnished to do so, subject to the following conditions: | ||
| 10 | |||
| 11 | The above copyright notice and this permission notice shall be included in | ||
| 12 | all copies or substantial portions of the Software. | ||
| 13 | |||
| 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
| 15 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
| 16 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
| 17 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
| 18 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||
| 19 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||
| 20 | DEALINGS IN THE SOFTWARE. | ||
| 21 | */ | ||
| 22 | |||
| 23 | /* | ||
| 24 | * Posix Condition Variables for Microsoft Windows. | ||
| 25 | * 22-9-2010 Partly based on the ACE framework implementation. | ||
| 26 | */ | ||
| 27 | #include <windows.h> | ||
| 28 | #include <stdio.h> | ||
| 29 | #include <malloc.h> | ||
| 30 | #include <time.h> | ||
| 31 | #include "pthread.h" | ||
| 32 | #include "pthread_time.h" | ||
| 33 | #include "ref.h" | ||
| 34 | #include "cond.h" | ||
| 35 | #include "thread.h" | ||
| 36 | #include "misc.h" | ||
| 37 | #include "winpthread_internal.h" | ||
| 38 | |||
| 39 | #include "pthread_compat.h" | ||
| 40 | |||
| 41 | int __pthread_shallcancel (void); | ||
| 42 | |||
| 43 | static int do_sema_b_wait (HANDLE sema, int nointerrupt, DWORD timeout,CRITICAL_SECTION *cs, LONG *val); | ||
| 44 | static int do_sema_b_release(HANDLE sema, LONG count,CRITICAL_SECTION *cs, LONG *val); | ||
| 45 | static void cleanup_wait(void *arg); | ||
| 46 | |||
| 47 | typedef struct sCondWaitHelper { | ||
| 48 | cond_t *c; | ||
| 49 | pthread_mutex_t *external_mutex; | ||
| 50 | int *r; | ||
| 51 | } sCondWaitHelper; | ||
| 52 | |||
| 53 | int do_sema_b_wait_intern (HANDLE sema, int nointerrupt, DWORD timeout); | ||
| 54 | |||
| 55 | #ifdef WINPTHREAD_DBG | ||
| 56 | static int print_state = 0; | ||
| 57 | static FILE *fo; | ||
| 58 | void cond_print_set(int state, FILE *f) | ||
| 59 | { | ||
| 60 | if (f) fo = f; | ||
| 61 | if (!fo) fo = stdout; | ||
| 62 | print_state = state; | ||
| 63 | } | ||
| 64 | |||
| 65 | void cond_print(volatile pthread_cond_t *c, char *txt) | ||
| 66 | { | ||
| 67 | if (!print_state) return; | ||
| 68 | cond_t *c_ = (cond_t *)*c; | ||
| 69 | if (c_ == NULL) { | ||
| 70 | fprintf(fo,"C%p %lu %s\n",(void *)*c,GetCurrentThreadId(),txt); | ||
| 71 | } else { | ||
| 72 | fprintf(fo,"C%p %lu V=%0X w=%ld %s\n", | ||
| 73 | (void *)*c, | ||
| 74 | GetCurrentThreadId(), | ||
| 75 | (int)c_->valid, | ||
| 76 | c_->waiters_count_, | ||
| 77 | txt | ||
| 78 | ); | ||
| 79 | } | ||
| 80 | } | ||
| 81 | #endif | ||
| 82 | |||
| 83 | static pthread_spinlock_t cond_locked = PTHREAD_SPINLOCK_INITIALIZER; | ||
| 84 | |||
| 85 | static int | ||
| 86 | cond_static_init (pthread_cond_t *c) | ||
| 87 | { | ||
| 88 | int r = 0; | ||
| 89 | |||
| 90 | pthread_spin_lock (&cond_locked); | ||
| 91 | if (c == NULL) | ||
| 92 | r = EINVAL; | ||
| 93 | else if (*c == PTHREAD_COND_INITIALIZER) | ||
| 94 | r = pthread_cond_init (c, NULL); | ||
| 95 | else | ||
| 96 | /* We assume someone was faster ... */ | ||
| 97 | r = 0; | ||
| 98 | pthread_spin_unlock (&cond_locked); | ||
| 99 | return r; | ||
| 100 | } | ||
| 101 | |||
| 102 | int | ||
| 103 | pthread_condattr_destroy (pthread_condattr_t *a) | ||
| 104 | { | ||
| 105 | if (!a) | ||
| 106 | return EINVAL; | ||
| 107 | *a = 0; | ||
| 108 | return 0; | ||
| 109 | } | ||
| 110 | |||
| 111 | int | ||
| 112 | pthread_condattr_init (pthread_condattr_t *a) | ||
| 113 | { | ||
| 114 | if (!a) | ||
| 115 | return EINVAL; | ||
| 116 | *a = 0; | ||
| 117 | return 0; | ||
| 118 | } | ||
| 119 | |||
| 120 | int | ||
| 121 | pthread_condattr_getpshared (const pthread_condattr_t *a, int *s) | ||
| 122 | { | ||
| 123 | if (!a || !s) | ||
| 124 | return EINVAL; | ||
| 125 | *s = *a; | ||
| 126 | return 0; | ||
| 127 | } | ||
| 128 | |||
| 129 | int | ||
| 130 | pthread_condattr_getclock (const pthread_condattr_t *a, clockid_t *clock_id) | ||
| 131 | { | ||
| 132 | if (!a || !clock_id) | ||
| 133 | return EINVAL; | ||
| 134 | *clock_id = 0; | ||
| 135 | return 0; | ||
| 136 | } | ||
| 137 | |||
| 138 | int | ||
| 139 | pthread_condattr_setclock(pthread_condattr_t *a, clockid_t clock_id) | ||
| 140 | { | ||
| 141 | if (!a || clock_id != 0) | ||
| 142 | return EINVAL; | ||
| 143 | return 0; | ||
| 144 | } | ||
| 145 | |||
| 146 | int | ||
| 147 | __pthread_clock_nanosleep (clockid_t clock_id, int flags, const struct timespec *rqtp, | ||
| 148 | 			 struct timespec *rmtp) | ||
| 149 | { | ||
| 150 | unsigned long long tick, tick2; | ||
| 151 | unsigned long long delay; | ||
| 152 | DWORD dw; | ||
| 153 | |||
| 154 | if (clock_id != CLOCK_REALTIME | ||
| 155 | && clock_id != CLOCK_MONOTONIC | ||
| 156 | && clock_id != CLOCK_PROCESS_CPUTIME_ID) | ||
| 157 | return EINVAL; | ||
| 158 | if ((flags & TIMER_ABSTIME) != 0) | ||
| 159 | delay = _pthread_rel_time_in_ms (rqtp); | ||
| 160 | else | ||
| 161 | delay = _pthread_time_in_ms_from_timespec (rqtp); | ||
| 162 | do | ||
| 163 | { | ||
| 164 | dw = (DWORD) (delay >= 99999ULL ? 99999ULL : delay); | ||
| 165 | tick = _pthread_time_in_ms (); | ||
| 166 | pthread_delay_np_ms (dw); | ||
| 167 | tick2 = _pthread_time_in_ms (); | ||
| 168 | tick2 -= tick; | ||
| 169 | if (tick2 >= delay) | ||
| 170 | delay = 0; | ||
| 171 | else | ||
| 172 | delay -= tick2; | ||
| 173 | } | ||
| 174 | while (delay != 0ULL); | ||
| 175 | if (rmtp) | ||
| 176 | memset (rmtp, 0, sizeof (*rmtp)); | ||
| 177 | return 0; | ||
| 178 | } | ||
| 179 | |||
| 180 | int | ||
| 181 | pthread_condattr_setpshared (pthread_condattr_t *a, int s) | ||
| 182 | { | ||
| 183 | if (!a || (s != PTHREAD_PROCESS_SHARED && s != PTHREAD_PROCESS_PRIVATE)) | ||
| 184 | return EINVAL; | ||
| 185 | if (s == PTHREAD_PROCESS_SHARED) | ||
| 186 | { | ||
| 187 | *a = PTHREAD_PROCESS_PRIVATE; | ||
| 188 | return ENOSYS; | ||
| 189 | } | ||
| 190 | *a = s; | ||
| 191 | return 0; | ||
| 192 | } | ||
| 193 | |||
| 194 | int | ||
| 195 | pthread_cond_init (pthread_cond_t *c, const pthread_condattr_t *a) | ||
| 196 | { | ||
| 197 | cond_t *_c; | ||
| 198 | int r = 0; | ||
| 199 | |||
| 200 | if (!c) | ||
| 201 | return EINVAL; | ||
| 202 | if (a && *a == PTHREAD_PROCESS_SHARED) | ||
| 203 | return ENOSYS; | ||
| 204 | |||
| 205 | if ((_c = calloc(1, sizeof(*_c))) == NULL) | ||
| 206 | return ENOMEM; | ||
| 207 | |||
| 208 | _c->valid = DEAD_COND; | ||
| 209 | _c->busy = 0; | ||
| 210 | _c->waiters_count_ = 0; | ||
| 211 | _c->waiters_count_gone_ = 0; | ||
| 212 | _c->waiters_count_unblock_ = 0; | ||
| 213 | |||
| 214 | _c->sema_q = CreateSemaphore (NULL, /* no security */ | ||
| 215 | 0, /* initially 0 */ | ||
| 216 | 0x7fffffff, /* max count */ | ||
| 217 | NULL); /* unnamed */ | ||
| 218 | _c->sema_b = CreateSemaphore (NULL, /* no security */ | ||
| 219 | 0, /* initially 0 */ | ||
| 220 | 0x7fffffff, /* max count */ | ||
| 221 | NULL); | ||
| 222 | if (_c->sema_q == NULL || _c->sema_b == NULL) { | ||
| 223 | if (_c->sema_q != NULL) | ||
| 224 | 	CloseHandle (_c->sema_q); | ||
| 225 | if (_c->sema_b != NULL) | ||
| 226 | 	CloseHandle (_c->sema_b); | ||
| 227 | free (_c); | ||
| 228 | r = EAGAIN; | ||
| 229 | } else { | ||
| 230 | InitializeCriticalSection(&_c->waiters_count_lock_); | ||
| 231 | InitializeCriticalSection(&_c->waiters_b_lock_); | ||
| 232 | InitializeCriticalSection(&_c->waiters_q_lock_); | ||
| 233 | _c->value_q = 0; | ||
| 234 | _c->value_b = 1; | ||
| 235 | } | ||
| 236 | if (!r) | ||
| 237 | { | ||
| 238 | _c->valid = LIFE_COND; | ||
| 239 | *c = (pthread_cond_t)_c; | ||
| 240 | } | ||
| 241 | else | ||
| 242 | *c = (pthread_cond_t)NULL; | ||
| 243 | return r; | ||
| 244 | } | ||
| 245 | |||
| 246 | int | ||
| 247 | pthread_cond_destroy (pthread_cond_t *c) | ||
| 248 | { | ||
| 249 | cond_t *_c; | ||
| 250 | int r; | ||
| 251 | if (!c || !*c) | ||
| 252 | return EINVAL; | ||
| 253 | if (*c == PTHREAD_COND_INITIALIZER) | ||
| 254 | { | ||
| 255 | pthread_spin_lock (&cond_locked); | ||
| 256 | if (*c == PTHREAD_COND_INITIALIZER) | ||
| 257 | { | ||
| 258 | 	*c = (pthread_cond_t)NULL; | ||
| 259 | 	r = 0; | ||
| 260 | } | ||
| 261 | else | ||
| 262 | 	r = EBUSY; | ||
| 263 | pthread_spin_unlock (&cond_locked); | ||
| 264 | return r; | ||
| 265 | } | ||
| 266 | _c = (cond_t *) *c; | ||
| 267 | r = do_sema_b_wait(_c->sema_b, 0, INFINITE,&_c->waiters_b_lock_,&_c->value_b); | ||
| 268 | if (r != 0) | ||
| 269 | return r; | ||
| 270 | if (!TryEnterCriticalSection (&_c->waiters_count_lock_)) | ||
| 271 | { | ||
| 272 | do_sema_b_release (_c->sema_b, 1,&_c->waiters_b_lock_,&_c->value_b); | ||
| 273 | return EBUSY; | ||
| 274 | } | ||
| 275 | if (_c->waiters_count_ > _c->waiters_count_gone_) | ||
| 276 | { | ||
| 277 | r = do_sema_b_release (_c->sema_b, 1,&_c->waiters_b_lock_,&_c->value_b); | ||
| 278 | if (!r) r = EBUSY; | ||
| 279 | LeaveCriticalSection(&_c->waiters_count_lock_); | ||
| 280 | return r; | ||
| 281 | } | ||
| 282 | *c = (pthread_cond_t)NULL; | ||
| 283 | do_sema_b_release (_c->sema_b, 1,&_c->waiters_b_lock_,&_c->value_b); | ||
| 284 | |||
| 285 | if (!CloseHandle (_c->sema_q) && !r) | ||
| 286 | r = EINVAL; | ||
| 287 | if (!CloseHandle (_c->sema_b) && !r) | ||
| 288 | r = EINVAL; | ||
| 289 | LeaveCriticalSection (&_c->waiters_count_lock_); | ||
| 290 | DeleteCriticalSection(&_c->waiters_count_lock_); | ||
| 291 | DeleteCriticalSection(&_c->waiters_b_lock_); | ||
| 292 | DeleteCriticalSection(&_c->waiters_q_lock_); | ||
| 293 | _c->valid = DEAD_COND; | ||
| 294 | free(_c); | ||
| 295 | return 0; | ||
| 296 | } | ||
| 297 | |||
| 298 | int | ||
| 299 | pthread_cond_signal (pthread_cond_t *c) | ||
| 300 | { | ||
| 301 | cond_t *_c; | ||
| 302 | int r; | ||
| 303 | |||
| 304 | if (!c || !*c) | ||
| 305 | return EINVAL; | ||
| 306 | _c = (cond_t *)*c; | ||
| 307 | if (_c == (cond_t *)PTHREAD_COND_INITIALIZER) | ||
| 308 | return 0; | ||
| 309 | else if (_c->valid != (unsigned int)LIFE_COND) | ||
| 310 | return EINVAL; | ||
| 311 | |||
| 312 | EnterCriticalSection (&_c->waiters_count_lock_); | ||
| 313 | /* If there aren't any waiters, then this is a no-op. */ | ||
| 314 | if (_c->waiters_count_unblock_ != 0) | ||
| 315 | { | ||
| 316 | if (_c->waiters_count_ == 0) | ||
| 317 | { | ||
| 318 | 	LeaveCriticalSection (&_c->waiters_count_lock_); | ||
| 319 | 	/* pthread_testcancel(); */ | ||
| 320 | 	return 0; | ||
| 321 | } | ||
| 322 | _c->waiters_count_ -= 1; | ||
| 323 | _c->waiters_count_unblock_ += 1; | ||
| 324 | } | ||
| 325 | else if (_c->waiters_count_ > _c->waiters_count_gone_) | ||
| 326 | { | ||
| 327 | r = do_sema_b_wait (_c->sema_b, 1, INFINITE,&_c->waiters_b_lock_,&_c->value_b); | ||
| 328 | if (r != 0) | ||
| 329 | { | ||
| 330 | 	LeaveCriticalSection (&_c->waiters_count_lock_); | ||
| 331 | 	/* pthread_testcancel(); */ | ||
| 332 | 	return r; | ||
| 333 | } | ||
| 334 | if (_c->waiters_count_gone_ != 0) | ||
| 335 | { | ||
| 336 | 	_c->waiters_count_ -= _c->waiters_count_gone_; | ||
| 337 | 	_c->waiters_count_gone_ = 0; | ||
| 338 | } | ||
| 339 | _c->waiters_count_ -= 1; | ||
| 340 | _c->waiters_count_unblock_ = 1; | ||
| 341 | } | ||
| 342 | else | ||
| 343 | { | ||
| 344 | LeaveCriticalSection (&_c->waiters_count_lock_); | ||
| 345 | /* pthread_testcancel(); */ | ||
| 346 | return 0; | ||
| 347 | } | ||
| 348 | LeaveCriticalSection (&_c->waiters_count_lock_); | ||
| 349 | r = do_sema_b_release(_c->sema_q, 1,&_c->waiters_q_lock_,&_c->value_q); | ||
| 350 | /* pthread_testcancel(); */ | ||
| 351 | return r; | ||
| 352 | } | ||
| 353 | |||
| 354 | int | ||
| 355 | pthread_cond_broadcast (pthread_cond_t *c) | ||
| 356 | { | ||
| 357 | cond_t *_c; | ||
| 358 | int r; | ||
| 359 | int relCnt = 0; | ||
| 360 | |||
| 361 | if (!c || !*c) | ||
| 362 | return EINVAL; | ||
| 363 | _c = (cond_t *)*c; | ||
| 364 | if (_c == (cond_t*)PTHREAD_COND_INITIALIZER) | ||
| 365 | return 0; | ||
| 366 | else if (_c->valid != (unsigned int)LIFE_COND) | ||
| 367 | return EINVAL; | ||
| 368 | |||
| 369 | EnterCriticalSection (&_c->waiters_count_lock_); | ||
| 370 | /* If there aren't any waiters, then this is a no-op. */ | ||
| 371 | if (_c->waiters_count_unblock_ != 0) | ||
| 372 | { | ||
| 373 | if (_c->waiters_count_ == 0) | ||
| 374 | { | ||
| 375 | 	LeaveCriticalSection (&_c->waiters_count_lock_); | ||
| 376 | 	/* pthread_testcancel(); */ | ||
| 377 | 	return 0; | ||
| 378 | } | ||
| 379 | relCnt = _c->waiters_count_; | ||
| 380 | _c->waiters_count_ = 0; | ||
| 381 | _c->waiters_count_unblock_ += relCnt; | ||
| 382 | } | ||
| 383 | else if (_c->waiters_count_ > _c->waiters_count_gone_) | ||
| 384 | { | ||
| 385 | r = do_sema_b_wait (_c->sema_b, 1, INFINITE,&_c->waiters_b_lock_,&_c->value_b); | ||
| 386 | if (r != 0) | ||
| 387 | { | ||
| 388 | 	LeaveCriticalSection (&_c->waiters_count_lock_); | ||
| 389 | 	/* pthread_testcancel(); */ | ||
| 390 | 	return r; | ||
| 391 | } | ||
| 392 | if (_c->waiters_count_gone_ != 0) | ||
| 393 | { | ||
| 394 | 	_c->waiters_count_ -= _c->waiters_count_gone_; | ||
| 395 | 	_c->waiters_count_gone_ = 0; | ||
| 396 | } | ||
| 397 | relCnt = _c->waiters_count_; | ||
| 398 | _c->waiters_count_ = 0; | ||
| 399 | _c->waiters_count_unblock_ = relCnt; | ||
| 400 | } | ||
| 401 | else | ||
| 402 | { | ||
| 403 | LeaveCriticalSection (&_c->waiters_count_lock_); | ||
| 404 | /* pthread_testcancel(); */ | ||
| 405 | return 0; | ||
| 406 | } | ||
| 407 | LeaveCriticalSection (&_c->waiters_count_lock_); | ||
| 408 | r = do_sema_b_release(_c->sema_q, relCnt,&_c->waiters_q_lock_,&_c->value_q); | ||
| 409 | /* pthread_testcancel(); */ | ||
| 410 | return r; | ||
| 411 | } | ||
| 412 | |||
| 413 | int | ||
| 414 | pthread_cond_wait (pthread_cond_t *c, pthread_mutex_t *external_mutex) | ||
| 415 | { | ||
| 416 | sCondWaitHelper ch; | ||
| 417 | cond_t *_c; | ||
| 418 | int r; | ||
| 419 | |||
| 420 | /* pthread_testcancel(); */ | ||
| 421 | |||
| 422 | if (!c || *c == (pthread_cond_t)NULL) | ||
| 423 | return EINVAL; | ||
| 424 | _c = (cond_t *)*c; | ||
| 425 | if (*c == PTHREAD_COND_INITIALIZER) | ||
| 426 | { | ||
| 427 | r = cond_static_init(c); | ||
| 428 | if (r != 0 && r != EBUSY) | ||
| 429 | return r; | ||
| 430 | _c = (cond_t *) *c; | ||
| 431 | } else if (_c->valid != (unsigned int)LIFE_COND) | ||
| 432 | return EINVAL; | ||
| 433 | |||
| 434 | tryagain: | ||
| 435 | r = do_sema_b_wait (_c->sema_b, 0, INFINITE,&_c->waiters_b_lock_,&_c->value_b); | ||
| 436 | if (r != 0) | ||
| 437 | return r; | ||
| 438 | |||
| 439 | if (!TryEnterCriticalSection (&_c->waiters_count_lock_)) | ||
| 440 | { | ||
| 441 | r = do_sema_b_release (_c->sema_b, 1,&_c->waiters_b_lock_,&_c->value_b); | ||
| 442 | if (r != 0) | ||
| 443 | return r; | ||
| 444 | sched_yield(); | ||
| 445 | goto tryagain; | ||
| 446 | } | ||
| 447 | |||
| 448 | _c->waiters_count_++; | ||
| 449 | LeaveCriticalSection(&_c->waiters_count_lock_); | ||
| 450 | r = do_sema_b_release (_c->sema_b, 1,&_c->waiters_b_lock_,&_c->value_b); | ||
| 451 | if (r != 0) | ||
| 452 | return r; | ||
| 453 | |||
| 454 | ch.c = _c; | ||
| 455 | ch.r = &r; | ||
| 456 | ch.external_mutex = external_mutex; | ||
| 457 | |||
| 458 | pthread_cleanup_push(cleanup_wait, (void *) &ch); | ||
| 459 | r = pthread_mutex_unlock(external_mutex); | ||
| 460 | if (!r) | ||
| 461 | r = do_sema_b_wait (_c->sema_q, 0, INFINITE,&_c->waiters_q_lock_,&_c->value_q); | ||
| 462 | |||
| 463 | pthread_cleanup_pop(1); | ||
| 464 | return r; | ||
| 465 | } | ||
| 466 | |||
| 467 | static int | ||
| 468 | pthread_cond_timedwait_impl (pthread_cond_t *c, pthread_mutex_t *external_mutex, const struct timespec *t, int rel) | ||
| 469 | { | ||
| 470 | sCondWaitHelper ch; | ||
| 471 | DWORD dwr; | ||
| 472 | int r; | ||
| 473 | cond_t *_c; | ||
| 474 | |||
| 475 | /* pthread_testcancel(); */ | ||
| 476 | |||
| 477 | if (!c || !*c) | ||
| 478 | return EINVAL; | ||
| 479 | _c = (cond_t *)*c; | ||
| 480 | if (_c == (cond_t *)PTHREAD_COND_INITIALIZER) | ||
| 481 | { | ||
| 482 | r = cond_static_init(c); | ||
| 483 | if (r && r != EBUSY) | ||
| 484 | return r; | ||
| 485 | _c = (cond_t *) *c; | ||
| 486 | } else if ((_c)->valid != (unsigned int)LIFE_COND) | ||
| 487 | return EINVAL; | ||
| 488 | |||
| 489 | if (rel == 0) | ||
| 490 | { | ||
| 491 | dwr = dwMilliSecs(_pthread_rel_time_in_ms(t)); | ||
| 492 | } | ||
| 493 | else | ||
| 494 | { | ||
| 495 | dwr = dwMilliSecs(_pthread_time_in_ms_from_timespec(t)); | ||
| 496 | } | ||
| 497 | |||
| 498 | tryagain: | ||
| 499 | r = do_sema_b_wait (_c->sema_b, 0, INFINITE,&_c->waiters_b_lock_,&_c->value_b); | ||
| 500 | if (r != 0) | ||
| 501 | return r; | ||
| 502 | |||
| 503 | if (!TryEnterCriticalSection (&_c->waiters_count_lock_)) | ||
| 504 | { | ||
| 505 | r = do_sema_b_release (_c->sema_b, 1,&_c->waiters_b_lock_,&_c->value_b); | ||
| 506 | if (r != 0) | ||
| 507 | return r; | ||
| 508 | sched_yield(); | ||
| 509 | goto tryagain; | ||
| 510 | } | ||
| 511 | |||
| 512 | _c->waiters_count_++; | ||
| 513 | LeaveCriticalSection(&_c->waiters_count_lock_); | ||
| 514 | r = do_sema_b_release (_c->sema_b, 1,&_c->waiters_b_lock_,&_c->value_b); | ||
| 515 | if (r != 0) | ||
| 516 | return r; | ||
| 517 | |||
| 518 | ch.c = _c; | ||
| 519 | ch.r = &r; | ||
| 520 | ch.external_mutex = external_mutex; | ||
| 521 | { | ||
| 522 | pthread_cleanup_push(cleanup_wait, (void *) &ch); | ||
| 523 | |||
| 524 | r = pthread_mutex_unlock(external_mutex); | ||
| 525 | if (!r) | ||
| 526 | r = do_sema_b_wait (_c->sema_q, 0, dwr,&_c->waiters_q_lock_,&_c->value_q); | ||
| 527 | |||
| 528 | pthread_cleanup_pop(1); | ||
| 529 | } | ||
| 530 | return r; | ||
| 531 | } | ||
| 532 | |||
| 533 | int | ||
| 534 | pthread_cond_timedwait(pthread_cond_t *c, pthread_mutex_t *m, const struct timespec *t) | ||
| 535 | { | ||
| 536 | return pthread_cond_timedwait_impl(c, m, t, 0); | ||
| 537 | } | ||
| 538 | |||
| 539 | int | ||
| 540 | pthread_cond_timedwait_relative_np(pthread_cond_t *c, pthread_mutex_t *m, const struct timespec *t) | ||
| 541 | { | ||
| 542 | return pthread_cond_timedwait_impl(c, m, t, 1); | ||
| 543 | } | ||
| 544 | |||
| 545 | static void | ||
| 546 | cleanup_wait (void *arg) | ||
| 547 | { | ||
| 548 | int n, r; | ||
| 549 | sCondWaitHelper *ch = (sCondWaitHelper *) arg; | ||
| 550 | cond_t *_c; | ||
| 551 | |||
| 552 | _c = ch->c; | ||
| 553 | EnterCriticalSection (&_c->waiters_count_lock_); | ||
| 554 | n = _c->waiters_count_unblock_; | ||
| 555 | if (n != 0) | ||
| 556 | _c->waiters_count_unblock_ -= 1; | ||
| 557 | else if ((INT_MAX/2) - 1 == _c->waiters_count_gone_) | ||
| 558 | { | ||
| 559 | _c->waiters_count_gone_ += 1; | ||
| 560 | r = do_sema_b_wait (_c->sema_b, 1, INFINITE,&_c->waiters_b_lock_,&_c->value_b); | ||
| 561 | if (r != 0) | ||
| 562 | { | ||
| 563 | LeaveCriticalSection(&_c->waiters_count_lock_); | ||
| 564 | ch->r[0] = r; | ||
| 565 | return; | ||
| 566 | } | ||
| 567 | _c->waiters_count_ -= _c->waiters_count_gone_; | ||
| 568 | r = do_sema_b_release (_c->sema_b, 1,&_c->waiters_b_lock_,&_c->value_b); | ||
| 569 | if (r != 0) | ||
| 570 | { | ||
| 571 | LeaveCriticalSection(&_c->waiters_count_lock_); | ||
| 572 | ch->r[0] = r; | ||
| 573 | return; | ||
| 574 | } | ||
| 575 | _c->waiters_count_gone_ = 0; | ||
| 576 | } | ||
| 577 | else | ||
| 578 | _c->waiters_count_gone_ += 1; | ||
| 579 | LeaveCriticalSection (&_c->waiters_count_lock_); | ||
| 580 | |||
| 581 | if (n == 1) | ||
| 582 | { | ||
| 583 | r = do_sema_b_release (_c->sema_b, 1,&_c->waiters_b_lock_,&_c->value_b); | ||
| 584 | if (r != 0) | ||
| 585 | { | ||
| 586 | ch->r[0] = r; | ||
| 587 | return; | ||
| 588 | } | ||
| 589 | } | ||
| 590 | r = pthread_mutex_lock(ch->external_mutex); | ||
| 591 | if (r != 0) | ||
| 592 | ch->r[0] = r; | ||
| 593 | } | ||
| 594 | |||
| 595 | static int | ||
| 596 | do_sema_b_wait (HANDLE sema, int nointerrupt, DWORD timeout,CRITICAL_SECTION *cs, LONG *val) | ||
| 597 | { | ||
| 598 | int r; | ||
| 599 | LONG v; | ||
| 600 | EnterCriticalSection(cs); | ||
| 601 | InterlockedDecrement(val); | ||
| 602 | v = val[0]; | ||
| 603 | LeaveCriticalSection(cs); | ||
| 604 | if (v >= 0) | ||
| 605 | return 0; | ||
| 606 | r = do_sema_b_wait_intern (sema, nointerrupt, timeout); | ||
| 607 | EnterCriticalSection(cs); | ||
| 608 | if (r != 0) | ||
| 609 | InterlockedIncrement(val); | ||
| 610 | LeaveCriticalSection(cs); | ||
| 611 | return r; | ||
| 612 | } | ||
| 613 | |||
| 614 | int | ||
| 615 | do_sema_b_wait_intern (HANDLE sema, int nointerrupt, DWORD timeout) | ||
| 616 | { | ||
| 617 | HANDLE arr[2]; | ||
| 618 | DWORD maxH = 1; | ||
| 619 | int r = 0; | ||
| 620 | DWORD res, dt; | ||
| 621 | if (nointerrupt == 1) | ||
| 622 | { | ||
| 623 | res = _pthread_wait_for_single_object(sema, timeout); | ||
| 624 | switch (res) { | ||
| 625 | case WAIT_TIMEOUT: | ||
| 626 | 	r = ETIMEDOUT; | ||
| 627 | 	break; | ||
| 628 | case WAIT_ABANDONED: | ||
| 629 | 	r = EPERM; | ||
| 630 | 	break; | ||
| 631 | case WAIT_OBJECT_0: | ||
| 632 | 	break; | ||
| 633 | default: | ||
| 634 | 	/*We can only return EINVAL though it might not be posix compliant */ | ||
| 635 | 	r = EINVAL; | ||
| 636 | } | ||
| 637 | if (r != 0 && r != EINVAL && WaitForSingleObject(sema, 0) == WAIT_OBJECT_0) | ||
| 638 | r = 0; | ||
| 639 | return r; | ||
| 640 | } | ||
| 641 | arr[0] = sema; | ||
| 642 | arr[1] = (HANDLE) pthread_getevent (); | ||
| 643 | if (arr[1] != NULL) maxH += 1; | ||
| 644 | if (maxH == 2) | ||
| 645 | { | ||
| 646 | redo: | ||
| 647 | res = _pthread_wait_for_multiple_objects(maxH, arr, 0, timeout); | ||
| 648 | switch (res) { | ||
| 649 | case WAIT_TIMEOUT: | ||
| 650 | 	 r = ETIMEDOUT; | ||
| 651 | 	 break; | ||
| 652 | case (WAIT_OBJECT_0 + 1): | ||
| 653 | ResetEvent(arr[1]); | ||
| 654 | if (nointerrupt != 2) | ||
| 655 | 	 { | ||
| 656 | pthread_testcancel(); | ||
| 657 | return EINVAL; | ||
| 658 | 	 } | ||
| 659 | 	 pthread_testcancel (); | ||
| 660 | 	 goto redo; | ||
| 661 | case WAIT_ABANDONED: | ||
| 662 | 	 r = EPERM; | ||
| 663 | 	 break; | ||
| 664 | case WAIT_OBJECT_0: | ||
| 665 | r = 0; | ||
| 666 | 	 break; | ||
| 667 | default: | ||
| 668 | 	 /*We can only return EINVAL though it might not be posix compliant */ | ||
| 669 | 	 r = EINVAL; | ||
| 670 | } | ||
| 671 | if (r != 0 && r != EINVAL && WaitForSingleObject(arr[0], 0) == WAIT_OBJECT_0) | ||
| 672 | 	r = 0; | ||
| 673 | if (r != 0 && nointerrupt != 2 && __pthread_shallcancel ()) | ||
| 674 | 	return EINVAL; | ||
| 675 | return r; | ||
| 676 | } | ||
| 677 | if (timeout == INFINITE) | ||
| 678 | { | ||
| 679 | do { | ||
| 680 | res = _pthread_wait_for_single_object(sema, 40); | ||
| 681 | switch (res) { | ||
| 682 | case WAIT_TIMEOUT: | ||
| 683 | 	 r = ETIMEDOUT; | ||
| 684 | 	 break; | ||
| 685 | case WAIT_ABANDONED: | ||
| 686 | 	 r = EPERM; | ||
| 687 | 	 break; | ||
| 688 | case WAIT_OBJECT_0: | ||
| 689 | r = 0; | ||
| 690 | 	 break; | ||
| 691 | default: | ||
| 692 | 	 /*We can only return EINVAL though it might not be posix compliant */ | ||
| 693 | 	 r = EINVAL; | ||
| 694 | } | ||
| 695 | if (r != 0 && __pthread_shallcancel ()) | ||
| 696 | { | ||
| 697 | 	if (nointerrupt != 2) | ||
| 698 | 	 pthread_testcancel(); | ||
| 699 | 	return EINVAL; | ||
| 700 | } | ||
| 701 | } while (r == ETIMEDOUT); | ||
| 702 | if (r != 0 && r != EINVAL && WaitForSingleObject(sema, 0) == WAIT_OBJECT_0) | ||
| 703 | r = 0; | ||
| 704 | return r; | ||
| 705 | } | ||
| 706 | dt = 20; | ||
| 707 | do { | ||
| 708 | if (dt > timeout) dt = timeout; | ||
| 709 | res = _pthread_wait_for_single_object(sema, dt); | ||
| 710 | switch (res) { | ||
| 711 | case WAIT_TIMEOUT: | ||
| 712 | 	r = ETIMEDOUT; | ||
| 713 | 	break; | ||
| 714 | case WAIT_ABANDONED: | ||
| 715 | 	r = EPERM; | ||
| 716 | 	break; | ||
| 717 | case WAIT_OBJECT_0: | ||
| 718 | 	r = 0; | ||
| 719 | 	break; | ||
| 720 | default: | ||
| 721 | 	/*We can only return EINVAL though it might not be posix compliant */ | ||
| 722 | 	r = EINVAL; | ||
| 723 | } | ||
| 724 | timeout -= dt; | ||
| 725 | if (timeout != 0 && r != 0 && __pthread_shallcancel ()) | ||
| 726 | return EINVAL; | ||
| 727 | } while (r == ETIMEDOUT && timeout != 0); | ||
| 728 | if (r != 0 && r == ETIMEDOUT && WaitForSingleObject(sema, 0) == WAIT_OBJECT_0) | ||
| 729 | r = 0; | ||
| 730 | if (r != 0 && nointerrupt != 2) | ||
| 731 | pthread_testcancel(); | ||
| 732 | return r; | ||
| 733 | } | ||
| 734 | |||
| 735 | static int | ||
| 736 | do_sema_b_release(HANDLE sema, LONG count,CRITICAL_SECTION *cs, LONG *val) | ||
| 737 | { | ||
| 738 | int wc; | ||
| 739 | EnterCriticalSection(cs); | ||
| 740 | if (((long long) val[0] + (long long) count) > (long long) 0x7fffffffLL) | ||
| 741 | { | ||
| 742 | LeaveCriticalSection(cs); | ||
| 743 | return ERANGE; | ||
| 744 | } | ||
| 745 | wc = -val[0]; | ||
| 746 | InterlockedExchangeAdd(val, count); | ||
| 747 | if (wc <= 0 || ReleaseSemaphore(sema, (wc < count ? wc : count), NULL)) | ||
| 748 | { | ||
| 749 | LeaveCriticalSection(cs); | ||
| 750 | return 0; | ||
| 751 | } | ||
| 752 | InterlockedExchangeAdd(val, -count); | ||
| 753 | LeaveCriticalSection(cs); | ||
| 754 | return EINVAL; | ||
| 755 | } | ||
lib/libc/mingw/winpthreads/cond.h created+63| ... | @@ -0,0 +1,63 @@ | ||
| 1 | /* | ||
| 2 | Copyright (c) 2011-2016 mingw-w64 project | ||
| 3 | |||
| 4 | Permission is hereby granted, free of charge, to any person obtaining a | ||
| 5 | copy of this software and associated documentation files (the "Software"), | ||
| 6 | to deal in the Software without restriction, including without limitation | ||
| 7 | the rights to use, copy, modify, merge, publish, distribute, sublicense, | ||
| 8 | and/or sell copies of the Software, and to permit persons to whom the | ||
| 9 | Software is furnished to do so, subject to the following conditions: | ||
| 10 | |||
| 11 | The above copyright notice and this permission notice shall be included in | ||
| 12 | all copies or substantial portions of the Software. | ||
| 13 | |||
| 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
| 15 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
| 16 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
| 17 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
| 18 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||
| 19 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||
| 20 | DEALINGS IN THE SOFTWARE. | ||
| 21 | */ | ||
| 22 | |||
| 23 | #ifndef WIN_PTHREADS_COND_H | ||
| 24 | #define WIN_PTHREADS_COND_H | ||
| 25 | |||
| 26 | #include <windows.h> | ||
| 27 | |||
| 28 | #define CHECK_COND(c) \ | ||
| 29 | do { \ | ||
| 30 | if (!(c) || !*c || (*c == PTHREAD_COND_INITIALIZER) \ | ||
| 31 | || ( ((cond_t *)(*c))->valid != (unsigned int)LIFE_COND ) ) \ | ||
| 32 | return EINVAL; \ | ||
| 33 | } while (0) | ||
| 34 | |||
| 35 | #define LIFE_COND 0xC0BAB1FD | ||
| 36 | #define DEAD_COND 0xC0DEADBF | ||
| 37 | |||
| 38 | #define STATIC_COND_INITIALIZER(x)		((pthread_cond_t)(x) == ((pthread_cond_t)PTHREAD_COND_INITIALIZER)) | ||
| 39 | |||
| 40 | typedef struct cond_t cond_t; | ||
| 41 | struct cond_t | ||
| 42 | { | ||
| 43 | unsigned int valid; | ||
| 44 | int busy; | ||
| 45 | LONG waiters_count_; /* Number of waiting threads. */ | ||
| 46 | LONG waiters_count_unblock_; /* Number of waiting threads whitch can be unblocked. */ | ||
| 47 | LONG waiters_count_gone_; /* Number of waiters which are gone. */ | ||
| 48 | CRITICAL_SECTION waiters_count_lock_; /* Serialize access to <waiters_count_>. */ | ||
| 49 | CRITICAL_SECTION waiters_q_lock_; /* Serialize access to sema_q. */ | ||
| 50 | LONG value_q; | ||
| 51 | CRITICAL_SECTION waiters_b_lock_; /* Serialize access to sema_b. */ | ||
| 52 | LONG value_b; | ||
| 53 | HANDLE sema_q; /* Semaphore used to queue up threads waiting for the condition to | ||
| 54 | become signaled. */ | ||
| 55 | HANDLE sema_b; /* Semaphore used to queue up threads waiting for the condition which | ||
| 56 | became signaled. */ | ||
| 57 | }; | ||
| 58 | |||
| 59 | void cond_print_set(int state, FILE *f); | ||
| 60 | |||
| 61 | void cond_print(volatile pthread_cond_t *c, char *txt); | ||
| 62 | |||
| 63 | #endif | ||
lib/libc/mingw/winpthreads/misc.c created+205| ... | @@ -0,0 +1,205 @@ | ||
| 1 | /* | ||
| 2 | Copyright (c) 2011-2016 mingw-w64 project | ||
| 3 | |||
| 4 | Permission is hereby granted, free of charge, to any person obtaining a | ||
| 5 | copy of this software and associated documentation files (the "Software"), | ||
| 6 | to deal in the Software without restriction, including without limitation | ||
| 7 | the rights to use, copy, modify, merge, publish, distribute, sublicense, | ||
| 8 | and/or sell copies of the Software, and to permit persons to whom the | ||
| 9 | Software is furnished to do so, subject to the following conditions: | ||
| 10 | |||
| 11 | The above copyright notice and this permission notice shall be included in | ||
| 12 | all copies or substantial portions of the Software. | ||
| 13 | |||
| 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
| 15 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
| 16 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
| 17 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
| 18 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||
| 19 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||
| 20 | DEALINGS IN THE SOFTWARE. | ||
| 21 | */ | ||
| 22 | |||
| 23 | #include <windows.h> | ||
| 24 | #include "pthread.h" | ||
| 25 | #include "misc.h" | ||
| 26 | |||
| 27 | void (WINAPI *_pthread_get_system_time_best_as_file_time) (LPFILETIME) = NULL; | ||
| 28 | static ULONGLONG (WINAPI *_pthread_get_tick_count_64) (VOID); | ||
| 29 | HRESULT (WINAPI *_pthread_set_thread_description) (HANDLE, PCWSTR) = NULL; | ||
| 30 | |||
| 31 | #if defined(__GNUC__) || defined(__clang__) | ||
| 32 | __attribute__((constructor(0))) | ||
| 33 | #endif | ||
| 34 | static void winpthreads_init(void) | ||
| 35 | { | ||
| 36 | HMODULE mod = GetModuleHandleA("kernel32.dll"); | ||
| 37 | if (mod) | ||
| 38 | { | ||
| 39 | _pthread_get_tick_count_64 = | ||
| 40 | (ULONGLONG (WINAPI *)(VOID))(void*) GetProcAddress(mod, "GetTickCount64"); | ||
| 41 | |||
| 42 | /* <1us precision on Windows 10 */ | ||
| 43 | _pthread_get_system_time_best_as_file_time = | ||
| 44 | (void (WINAPI *)(LPFILETIME))(void*) GetProcAddress(mod, "GetSystemTimePreciseAsFileTime"); | ||
| 45 | } | ||
| 46 | |||
| 47 | if (!_pthread_get_system_time_best_as_file_time) | ||
| 48 | /* >15ms precision on Windows 10 */ | ||
| 49 | _pthread_get_system_time_best_as_file_time = GetSystemTimeAsFileTime; | ||
| 50 | |||
| 51 | mod = GetModuleHandleA("kernelbase.dll"); | ||
| 52 | if (mod) | ||
| 53 | { | ||
| 54 | _pthread_set_thread_description = | ||
| 55 | (HRESULT (WINAPI *)(HANDLE, PCWSTR))(void*) GetProcAddress(mod, "SetThreadDescription"); | ||
| 56 | } | ||
| 57 | } | ||
| 58 | |||
| 59 | #if defined(_MSC_VER) && !defined(__clang__) | ||
| 60 | /* Force a reference to __xc_t to prevent whole program optimization | ||
| 61 | * from discarding the variable. */ | ||
| 62 | |||
| 63 | /* On x86, symbols are prefixed with an underscore. */ | ||
| 64 | # if defined(_M_IX86) | ||
| 65 | # pragma comment(linker, "/include:___xc_t") | ||
| 66 | # else | ||
| 67 | # pragma comment(linker, "/include:__xc_t") | ||
| 68 | # endif | ||
| 69 | |||
| 70 | #pragma section(".CRT$XCT", long, read) | ||
| 71 | __declspec(allocate(".CRT$XCT")) | ||
| 72 | extern const _PVFV __xc_t; | ||
| 73 | const _PVFV __xc_t = winpthreads_init; | ||
| 74 | #endif | ||
| 75 | |||
| 76 | unsigned long long _pthread_time_in_ms(void) | ||
| 77 | { | ||
| 78 | FILETIME ft; | ||
| 79 | |||
| 80 | GetSystemTimeAsFileTime(&ft); | ||
| 81 | return (((unsigned long long)ft.dwHighDateTime << 32) + ft.dwLowDateTime | ||
| 82 | - 0x19DB1DED53E8000ULL) / 10000ULL; | ||
| 83 | } | ||
| 84 | |||
| 85 | unsigned long long _pthread_time_in_ms_from_timespec(const struct timespec *ts) | ||
| 86 | { | ||
| 87 | unsigned long long t = (unsigned long long) ts->tv_sec * 1000LL; | ||
| 88 | /* The +999999 is here to ensure that the division always rounds up */ | ||
| 89 | t += (unsigned long long) (ts->tv_nsec + 999999) / 1000000; | ||
| 90 | |||
| 91 | return t; | ||
| 92 | } | ||
| 93 | |||
| 94 | unsigned long long _pthread_rel_time_in_ms(const struct timespec *ts) | ||
| 95 | { | ||
| 96 | unsigned long long t1 = _pthread_time_in_ms_from_timespec(ts); | ||
| 97 | unsigned long long t2 = _pthread_time_in_ms(); | ||
| 98 | |||
| 99 | /* Prevent underflow */ | ||
| 100 | if (t1 < t2) return 0; | ||
| 101 | return t1 - t2; | ||
| 102 | } | ||
| 103 | |||
| 104 | static unsigned long long | ||
| 105 | _pthread_get_tick_count (long long *frequency) | ||
| 106 | { | ||
| 107 | if (_pthread_get_tick_count_64 != NULL) | ||
| 108 | return _pthread_get_tick_count_64 (); | ||
| 109 | |||
| 110 | LARGE_INTEGER freq, timestamp; | ||
| 111 | |||
| 112 | if (*frequency == 0) | ||
| 113 | { | ||
| 114 | if (QueryPerformanceFrequency (&freq)) | ||
| 115 | *frequency = freq.QuadPart; | ||
| 116 | else | ||
| 117 | *frequency = -1; | ||
| 118 | } | ||
| 119 | |||
| 120 | if (*frequency > 0 && QueryPerformanceCounter (&timestamp)) | ||
| 121 | return timestamp.QuadPart / (*frequency / 1000); | ||
| 122 | |||
| 123 | /* Fallback */ | ||
| 124 | return GetTickCount (); | ||
| 125 | } | ||
| 126 | |||
| 127 | /* A wrapper around WaitForSingleObject() that ensures that | ||
| 128 | * the wait function does not time out before the time | ||
| 129 | * actually runs out. This is needed because WaitForSingleObject() | ||
| 130 | * might have poor accuracy, returning earlier than expected. | ||
| 131 | * On the other hand, returning a bit *later* than expected | ||
| 132 | * is acceptable in a preemptive multitasking environment. | ||
| 133 | */ | ||
| 134 | unsigned long | ||
| 135 | _pthread_wait_for_single_object (void *handle, unsigned long timeout) | ||
| 136 | { | ||
| 137 | DWORD result; | ||
| 138 | unsigned long long start_time, end_time; | ||
| 139 | unsigned long wait_time; | ||
| 140 | long long frequency = 0; | ||
| 141 | |||
| 142 | if (timeout == INFINITE || timeout == 0) | ||
| 143 | return WaitForSingleObject ((HANDLE) handle, (DWORD) timeout); | ||
| 144 | |||
| 145 | start_time = _pthread_get_tick_count (&frequency); | ||
| 146 | end_time = start_time + timeout; | ||
| 147 | wait_time = timeout; | ||
| 148 | |||
| 149 | do | ||
| 150 | { | ||
| 151 | unsigned long long current_time; | ||
| 152 | |||
| 153 | result = WaitForSingleObject ((HANDLE) handle, (DWORD) wait_time); | ||
| 154 | if (result != WAIT_TIMEOUT) | ||
| 155 | break; | ||
| 156 | |||
| 157 | current_time = _pthread_get_tick_count (&frequency); | ||
| 158 | if (current_time >= end_time) | ||
| 159 | break; | ||
| 160 | |||
| 161 | wait_time = (DWORD) (end_time - current_time); | ||
| 162 | } while (TRUE); | ||
| 163 | |||
| 164 | return result; | ||
| 165 | } | ||
| 166 | |||
| 167 | /* A wrapper around WaitForMultipleObjects() that ensures that | ||
| 168 | * the wait function does not time out before the time | ||
| 169 | * actually runs out. This is needed because WaitForMultipleObjects() | ||
| 170 | * might have poor accuracy, returning earlier than expected. | ||
| 171 | * On the other hand, returning a bit *later* than expected | ||
| 172 | * is acceptable in a preemptive multitasking environment. | ||
| 173 | */ | ||
| 174 | unsigned long | ||
| 175 | _pthread_wait_for_multiple_objects (unsigned long count, void **handles, unsigned int all, unsigned long timeout) | ||
| 176 | { | ||
| 177 | DWORD result; | ||
| 178 | unsigned long long start_time, end_time; | ||
| 179 | unsigned long wait_time; | ||
| 180 | long long frequency = 0; | ||
| 181 | |||
| 182 | if (timeout == INFINITE || timeout == 0) | ||
| 183 | return WaitForMultipleObjects ((DWORD) count, (HANDLE *) handles, all, (DWORD) timeout); | ||
| 184 | |||
| 185 | start_time = _pthread_get_tick_count (&frequency); | ||
| 186 | end_time = start_time + timeout; | ||
| 187 | wait_time = timeout; | ||
| 188 | |||
| 189 | do | ||
| 190 | { | ||
| 191 | unsigned long long current_time; | ||
| 192 | |||
| 193 | result = WaitForMultipleObjects ((DWORD) count, (HANDLE *) handles, all, (DWORD) wait_time); | ||
| 194 | if (result != WAIT_TIMEOUT) | ||
| 195 | break; | ||
| 196 | |||
| 197 | current_time = _pthread_get_tick_count (&frequency); | ||
| 198 | if (current_time >= end_time) | ||
| 199 | break; | ||
| 200 | |||
| 201 | wait_time = (DWORD) (end_time - current_time); | ||
| 202 | } while (TRUE); | ||
| 203 | |||
| 204 | return result; | ||
| 205 | } | ||
lib/libc/mingw/winpthreads/misc.h created+127| ... | @@ -0,0 +1,127 @@ | ||
| 1 | /* | ||
| 2 | Copyright (c) 2011-2016 mingw-w64 project | ||
| 3 | |||
| 4 | Permission is hereby granted, free of charge, to any person obtaining a | ||
| 5 | copy of this software and associated documentation files (the "Software"), | ||
| 6 | to deal in the Software without restriction, including without limitation | ||
| 7 | the rights to use, copy, modify, merge, publish, distribute, sublicense, | ||
| 8 | and/or sell copies of the Software, and to permit persons to whom the | ||
| 9 | Software is furnished to do so, subject to the following conditions: | ||
| 10 | |||
| 11 | The above copyright notice and this permission notice shall be included in | ||
| 12 | all copies or substantial portions of the Software. | ||
| 13 | |||
| 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
| 15 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
| 16 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
| 17 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
| 18 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||
| 19 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||
| 20 | DEALINGS IN THE SOFTWARE. | ||
| 21 | */ | ||
| 22 | |||
| 23 | #ifndef WIN_PTHREADS_MISC_H | ||
| 24 | #define WIN_PTHREADS_MISC_H | ||
| 25 | |||
| 26 | #include "pthread_compat.h" | ||
| 27 | |||
| 28 | #ifndef assert | ||
| 29 | |||
| 30 | #ifndef ASSERT_TRACE | ||
| 31 | # define ASSERT_TRACE 0 | ||
| 32 | #else | ||
| 33 | # undef ASSERT_TRACE | ||
| 34 | # define ASSERT_TRACE 0 | ||
| 35 | #endif | ||
| 36 | |||
| 37 | # define assert(e) \ | ||
| 38 | ((e) ? ((ASSERT_TRACE) ? fprintf(stderr, \ | ||
| 39 | "Assertion succeeded: (%s), file %s, line %d\n", \ | ||
| 40 | #e, __FILE__, (int) __LINE__), \ | ||
| 41 | fflush(stderr) : \ | ||
| 42 | 0) : \ | ||
| 43 | (fprintf(stderr, "Assertion failed: (%s), file %s, line %d\n", \ | ||
| 44 | #e, __FILE__, (int) __LINE__), exit(1), 0)) | ||
| 45 | |||
| 46 | # define fixme(e) \ | ||
| 47 | ((e) ? ((ASSERT_TRACE) ? fprintf(stderr, \ | ||
| 48 | "Assertion succeeded: (%s), file %s, line %d\n", \ | ||
| 49 | #e, __FILE__, (int) __LINE__), \ | ||
| 50 | fflush(stderr) : \ | ||
| 51 | 0) : \ | ||
| 52 | (fprintf(stderr, "FIXME: (%s), file %s, line %d\n", \ | ||
| 53 | #e, __FILE__, (int) __LINE__), 0, 0)) | ||
| 54 | |||
| 55 | #endif | ||
| 56 | |||
| 57 | #define PTR2INT(x)	((int)(uintptr_t)(x)) | ||
| 58 | |||
| 59 | #if SIZE_MAX>UINT_MAX | ||
| 60 | typedef long long LONGBAG; | ||
| 61 | #else | ||
| 62 | typedef long LONGBAG; | ||
| 63 | #endif | ||
| 64 | |||
| 65 | #if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) | ||
| 66 | #undef GetHandleInformation | ||
| 67 | #define GetHandleInformation(h,f) (1) | ||
| 68 | #endif | ||
| 69 | |||
| 70 | #define CHECK_HANDLE(h) \ | ||
| 71 | do { \ | ||
| 72 | DWORD dwFlags; \ | ||
| 73 | if (!(h) || ((h) == INVALID_HANDLE_VALUE) || !GetHandleInformation((h), &dwFlags)) \ | ||
| 74 | return EINVAL; \ | ||
| 75 | } while (0) | ||
| 76 | |||
| 77 | #define CHECK_PTR(p) do { if (!(p)) return EINVAL; } while (0) | ||
| 78 | |||
| 79 | #define UPD_RESULT(x,r) do { int _r = (x); (r) = (r) ? (r) : _r; } while (0) | ||
| 80 | |||
| 81 | #define CHECK_THREAD(t) \ | ||
| 82 | do { \ | ||
| 83 | CHECK_PTR(t); \ | ||
| 84 | CHECK_HANDLE((t)->h); \ | ||
| 85 | } while (0) | ||
| 86 | |||
| 87 | #define CHECK_OBJECT(o, e) \ | ||
| 88 | do { \ | ||
| 89 | DWORD dwFlags; \ | ||
| 90 | if (!(o)) return e; \ | ||
| 91 | if (!((o)->h) || (((o)->h) == INVALID_HANDLE_VALUE) || !GetHandleInformation(((o)->h), &dwFlags)) \ | ||
| 92 | return e; \ | ||
| 93 | } while (0) | ||
| 94 | |||
| 95 | #define VALID(x) if (!(p)) return EINVAL; | ||
| 96 | |||
| 97 | /* ms can be 64 bit, solve wrap-around issues: */ | ||
| 98 | static WINPTHREADS_INLINE unsigned long dwMilliSecs(unsigned long long ms) | ||
| 99 | { | ||
| 100 | if (ms >= 0xffffffffULL) return 0xfffffffful; | ||
| 101 | return (unsigned long) ms; | ||
| 102 | } | ||
| 103 | |||
| 104 | unsigned long long _pthread_time_in_ms(void); | ||
| 105 | unsigned long long _pthread_time_in_ms_from_timespec(const struct timespec *ts); | ||
| 106 | unsigned long long _pthread_rel_time_in_ms(const struct timespec *ts); | ||
| 107 | unsigned long _pthread_wait_for_single_object (void *handle, unsigned long timeout); | ||
| 108 | unsigned long _pthread_wait_for_multiple_objects (unsigned long count, void **handles, unsigned int all, unsigned long timeout); | ||
| 109 | |||
| 110 | extern void (WINAPI *_pthread_get_system_time_best_as_file_time) (LPFILETIME); | ||
| 111 | extern HRESULT (WINAPI *_pthread_set_thread_description) (HANDLE, PCWSTR); | ||
| 112 | |||
| 113 | #if defined(__GNUC__) || defined(__clang__) | ||
| 114 | #define likely(cond) __builtin_expect((cond) != 0, 1) | ||
| 115 | #define unlikely(cond) __builtin_expect((cond) != 0, 0) | ||
| 116 | #else | ||
| 117 | #define likely(cond) (cond) | ||
| 118 | #define unlikely(cond) (cond) | ||
| 119 | #endif | ||
| 120 | |||
| 121 | #if defined(__GNUC__) || defined(__clang__) | ||
| 122 | #define UNREACHABLE() __builtin_unreachable() | ||
| 123 | #elif defined(_MSC_VER) | ||
| 124 | #define UNREACHABLE() __assume(0) | ||
| 125 | #endif | ||
| 126 | |||
| 127 | #endif | ||
lib/libc/mingw/winpthreads/mutex.c created+381| ... | @@ -0,0 +1,381 @@ | ||
| 1 | /* | ||
| 2 | Copyright (c) 2011, 2014 mingw-w64 project | ||
| 3 | Copyright (c) 2015 Intel Corporation | ||
| 4 | |||
| 5 | Permission is hereby granted, free of charge, to any person obtaining a | ||
| 6 | copy of this software and associated documentation files (the "Software"), | ||
| 7 | to deal in the Software without restriction, including without limitation | ||
| 8 | the rights to use, copy, modify, merge, publish, distribute, sublicense, | ||
| 9 | and/or sell copies of the Software, and to permit persons to whom the | ||
| 10 | Software is furnished to do so, subject to the following conditions: | ||
| 11 | |||
| 12 | The above copyright notice and this permission notice shall be included in | ||
| 13 | all copies or substantial portions of the Software. | ||
| 14 | |||
| 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
| 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
| 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
| 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
| 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||
| 20 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||
| 21 | DEALINGS IN THE SOFTWARE. | ||
| 22 | */ | ||
| 23 | |||
| 24 | #include <windows.h> | ||
| 25 | #include <stdio.h> | ||
| 26 | #include <malloc.h> | ||
| 27 | #include <stdbool.h> | ||
| 28 | #include "pthread.h" | ||
| 29 | #include "misc.h" | ||
| 30 | |||
| 31 | typedef enum { | ||
| 32 | Unlocked, /* Not locked. */ | ||
| 33 | Locked, /* Locked but without waiters. */ | ||
| 34 | Waiting, /* Locked, may have waiters. */ | ||
| 35 | } mutex_state_t; | ||
| 36 | |||
| 37 | typedef enum { | ||
| 38 | Normal, | ||
| 39 | Errorcheck, | ||
| 40 | Recursive, | ||
| 41 | } mutex_type_t; | ||
| 42 | |||
| 43 | /* The heap-allocated part of a mutex. */ | ||
| 44 | typedef struct { | ||
| 45 | mutex_state_t state; | ||
| 46 | mutex_type_t type; | ||
| 47 | HANDLE event; /* Auto-reset event, or NULL if not yet allocated. */ | ||
| 48 | unsigned rec_lock; /* For recursive mutexes, the number of times the | ||
| 49 | mutex has been locked in excess by the same thread. */ | ||
| 50 | volatile DWORD owner; /* For recursive and error-checking mutexes, the | ||
| 51 | ID of the owning thread if the mutex is locked. */ | ||
| 52 | } mutex_impl_t; | ||
| 53 | |||
| 54 | /* Whether a mutex is still a static initializer (not a pointer to | ||
| 55 | a mutex_impl_t). */ | ||
| 56 | static bool | ||
| 57 | is_static_initializer(pthread_mutex_t m) | ||
| 58 | { | ||
| 59 | /* Treat 0 as a static initializer as well (for normal mutexes), | ||
| 60 | to tolerate sloppy code in libgomp. (We should rather fix that code!) */ | ||
| 61 | intptr_t v = (intptr_t)m; | ||
| 62 | return v >= -3 && v <= 0; | ||
| 63 | /* Should be simple: | ||
| 64 | return (uintptr_t)m >= (uintptr_t)-3; */ | ||
| 65 | } | ||
| 66 | |||
| 67 | /* Create and return the implementation part of a mutex from a static | ||
| 68 | initialiser. Return NULL on out-of-memory error. */ | ||
| 69 | static WINPTHREADS_ATTRIBUTE((noinline)) mutex_impl_t * | ||
| 70 | mutex_impl_init(pthread_mutex_t *m, mutex_impl_t *mi) | ||
| 71 | { | ||
| 72 | mutex_impl_t *new_mi = malloc(sizeof(mutex_impl_t)); | ||
| 73 | if (new_mi == NULL) | ||
| 74 | return NULL; | ||
| 75 | new_mi->state = Unlocked; | ||
| 76 | new_mi->type = (mi == (void *)PTHREAD_RECURSIVE_MUTEX_INITIALIZER ? Recursive | ||
| 77 | : mi == (void *)PTHREAD_ERRORCHECK_MUTEX_INITIALIZER ? Errorcheck | ||
| 78 | : Normal); | ||
| 79 | new_mi->event = NULL; | ||
| 80 | new_mi->rec_lock = 0; | ||
| 81 | new_mi->owner = (DWORD)-1; | ||
| 82 | if (InterlockedCompareExchangePointer((PVOID volatile *)m, new_mi, mi) == mi) { | ||
| 83 | return new_mi; | ||
| 84 | } else { | ||
| 85 | /* Someone created the struct before us. */ | ||
| 86 | free(new_mi); | ||
| 87 | return (mutex_impl_t *)*m; | ||
| 88 | } | ||
| 89 | } | ||
| 90 | |||
| 91 | /* Return the implementation part of a mutex, creating it if necessary. | ||
| 92 | Return NULL on out-of-memory error. */ | ||
| 93 | static inline mutex_impl_t * | ||
| 94 | mutex_impl(pthread_mutex_t *m) | ||
| 95 | { | ||
| 96 | mutex_impl_t *mi = (mutex_impl_t *)*m; | ||
| 97 | if (is_static_initializer((pthread_mutex_t)mi)) { | ||
| 98 | return mutex_impl_init(m, mi); | ||
| 99 | } else { | ||
| 100 | /* mi cannot be null here; avoid a test in the fast path. */ | ||
| 101 | if (mi == NULL) | ||
| 102 | UNREACHABLE(); | ||
| 103 | return mi; | ||
| 104 | } | ||
| 105 | } | ||
| 106 | |||
| 107 | /* Lock a mutex. Give up after 'timeout' ms (with ETIMEDOUT), | ||
| 108 | or never if timeout=INFINITE. */ | ||
| 109 | static inline int | ||
| 110 | pthread_mutex_lock_intern (pthread_mutex_t *m, DWORD timeout) | ||
| 111 | { | ||
| 112 | mutex_impl_t *mi = mutex_impl(m); | ||
| 113 | if (mi == NULL) | ||
| 114 | return ENOMEM; | ||
| 115 | mutex_state_t old_state = InterlockedExchange((long *)&mi->state, Locked); | ||
| 116 | if (unlikely(old_state != Unlocked)) { | ||
| 117 | /* The mutex is already locked. */ | ||
| 118 | |||
| 119 | if (mi->type != Normal) { | ||
| 120 | /* Recursive or Errorcheck */ | ||
| 121 | if (mi->owner == GetCurrentThreadId()) { | ||
| 122 | /* FIXME: A recursive mutex should not need two atomic ops when locking | ||
| 123 | recursively. We could rewrite by doing compare-and-swap instead of | ||
| 124 | test-and-set the first time, but it would lead to more code | ||
| 125 | duplication and add a conditional branch to the critical path. */ | ||
| 126 | InterlockedCompareExchange((long *)&mi->state, old_state, Locked); | ||
| 127 | if (mi->type == Recursive) { | ||
| 128 | mi->rec_lock++; | ||
| 129 | return 0; | ||
| 130 | } else { | ||
| 131 | /* type == Errorcheck */ | ||
| 132 | return EDEADLK; | ||
| 133 | } | ||
| 134 | } | ||
| 135 | } | ||
| 136 | |||
| 137 | /* Make sure there is an event object on which to wait. */ | ||
| 138 | if (mi->event == NULL) { | ||
| 139 | /* Make an auto-reset event object. */ | ||
| 140 | HANDLE ev = CreateEvent(NULL, false, false, NULL); | ||
| 141 | if (ev == NULL) { | ||
| 142 | switch (GetLastError()) { | ||
| 143 | case ERROR_ACCESS_DENIED: | ||
| 144 | return EPERM; | ||
| 145 | default: | ||
| 146 | return ENOMEM; /* Probably accurate enough. */ | ||
| 147 | } | ||
| 148 | } | ||
| 149 | if (InterlockedCompareExchangePointer(&mi->event, ev, NULL) != NULL) { | ||
| 150 | /* Someone created the event before us. */ | ||
| 151 | CloseHandle(ev); | ||
| 152 | } | ||
| 153 | } | ||
| 154 | |||
| 155 | /* At this point, mi->event is non-NULL. */ | ||
| 156 | |||
| 157 | while (InterlockedExchange((long *)&mi->state, Waiting) != Unlocked) { | ||
| 158 | /* For timed locking attempts, it is possible (although unlikely) | ||
| 159 | that we are woken up but someone else grabs the lock before us, | ||
| 160 | and we have to go back to sleep again. In that case, the total | ||
| 161 | wait may be longer than expected. */ | ||
| 162 | |||
| 163 | unsigned r = _pthread_wait_for_single_object(mi->event, timeout); | ||
| 164 | switch (r) { | ||
| 165 | case WAIT_TIMEOUT: | ||
| 166 | return ETIMEDOUT; | ||
| 167 | case WAIT_OBJECT_0: | ||
| 168 | break; | ||
| 169 | default: | ||
| 170 | return EINVAL; | ||
| 171 | } | ||
| 172 | } | ||
| 173 | } | ||
| 174 | |||
| 175 | if (mi->type != Normal) | ||
| 176 | mi->owner = GetCurrentThreadId(); | ||
| 177 | |||
| 178 | return 0; | ||
| 179 | } | ||
| 180 | |||
| 181 | int | ||
| 182 | pthread_mutex_lock (pthread_mutex_t *m) | ||
| 183 | { | ||
| 184 | return pthread_mutex_lock_intern (m, INFINITE); | ||
| 185 | } | ||
| 186 | |||
| 187 | int pthread_mutex_timedlock(pthread_mutex_t *m, const struct timespec *ts) | ||
| 188 | { | ||
| 189 | unsigned long long patience; | ||
| 190 | if (ts != NULL) { | ||
| 191 | unsigned long long end = _pthread_time_in_ms_from_timespec(ts); | ||
| 192 | unsigned long long now = _pthread_time_in_ms(); | ||
| 193 | patience = end > now ? end - now : 0; | ||
| 194 | if (patience > 0xffffffff) | ||
| 195 | patience = INFINITE; | ||
| 196 | } else { | ||
| 197 | patience = INFINITE; | ||
| 198 | } | ||
| 199 | return pthread_mutex_lock_intern(m, patience); | ||
| 200 | } | ||
| 201 | |||
| 202 | int pthread_mutex_unlock(pthread_mutex_t *m) | ||
| 203 | { | ||
| 204 | /* Here m might an initialiser of an error-checking or recursive mutex, in | ||
| 205 | which case the behaviour is well-defined, so we can't skip this check. */ | ||
| 206 | mutex_impl_t *mi = mutex_impl(m); | ||
| 207 | if (mi == NULL) | ||
| 208 | return ENOMEM; | ||
| 209 | |||
| 210 | if (unlikely(mi->type != Normal)) { | ||
| 211 | if (mi->state == Unlocked) | ||
| 212 | return EINVAL; | ||
| 213 | if (mi->owner != GetCurrentThreadId()) | ||
| 214 | return EPERM; | ||
| 215 | if (mi->rec_lock > 0) { | ||
| 216 | mi->rec_lock--; | ||
| 217 | return 0; | ||
| 218 | } | ||
| 219 | mi->owner = (DWORD)-1; | ||
| 220 | } | ||
| 221 | if (unlikely(InterlockedExchange((long *)&mi->state, Unlocked) == Waiting)) { | ||
| 222 | if (!SetEvent(mi->event)) | ||
| 223 | return EPERM; | ||
| 224 | } | ||
| 225 | return 0; | ||
| 226 | } | ||
| 227 | |||
| 228 | int pthread_mutex_trylock(pthread_mutex_t *m) | ||
| 229 | { | ||
| 230 | mutex_impl_t *mi = mutex_impl(m); | ||
| 231 | if (mi == NULL) | ||
| 232 | return ENOMEM; | ||
| 233 | |||
| 234 | if (InterlockedCompareExchange((long *)&mi->state, Locked, Unlocked) == Unlocked) { | ||
| 235 | if (mi->type != Normal) | ||
| 236 | mi->owner = GetCurrentThreadId(); | ||
| 237 | return 0; | ||
| 238 | } else { | ||
| 239 | if (mi->type == Recursive && mi->owner == GetCurrentThreadId()) { | ||
| 240 | mi->rec_lock++; | ||
| 241 | return 0; | ||
| 242 | } | ||
| 243 | return EBUSY; | ||
| 244 | } | ||
| 245 | } | ||
| 246 | |||
| 247 | int | ||
| 248 | pthread_mutex_init (pthread_mutex_t *m, const pthread_mutexattr_t *a) | ||
| 249 | { | ||
| 250 | pthread_mutex_t init = PTHREAD_MUTEX_INITIALIZER; | ||
| 251 | if (a != NULL) { | ||
| 252 | int pshared; | ||
| 253 | if (pthread_mutexattr_getpshared(a, &pshared) == 0 | ||
| 254 | && pshared == PTHREAD_PROCESS_SHARED) | ||
| 255 | return ENOSYS; | ||
| 256 | |||
| 257 | int type; | ||
| 258 | if (pthread_mutexattr_gettype(a, &type) == 0) { | ||
| 259 | switch (type) { | ||
| 260 | case PTHREAD_MUTEX_ERRORCHECK: | ||
| 261 | init = PTHREAD_ERRORCHECK_MUTEX_INITIALIZER; | ||
| 262 | break; | ||
| 263 | case PTHREAD_MUTEX_RECURSIVE: | ||
| 264 | init = PTHREAD_RECURSIVE_MUTEX_INITIALIZER; | ||
| 265 | break; | ||
| 266 | default: | ||
| 267 | init = PTHREAD_MUTEX_INITIALIZER; | ||
| 268 | break; | ||
| 269 | } | ||
| 270 | } | ||
| 271 | } | ||
| 272 | *m = init; | ||
| 273 | return 0; | ||
| 274 | } | ||
| 275 | |||
| 276 | int pthread_mutex_destroy (pthread_mutex_t *m) | ||
| 277 | { | ||
| 278 | mutex_impl_t *mi = (mutex_impl_t *)*m; | ||
| 279 | if (!is_static_initializer((pthread_mutex_t)mi)) { | ||
| 280 | if (mi->event != NULL) | ||
| 281 | CloseHandle(mi->event); | ||
| 282 | free(mi); | ||
| 283 | /* Sabotage attempts to re-use the mutex before initialising it again. */ | ||
| 284 | *m = (pthread_mutex_t)NULL; | ||
| 285 | } | ||
| 286 | |||
| 287 | return 0; | ||
| 288 | } | ||
| 289 | |||
| 290 | int pthread_mutexattr_init(pthread_mutexattr_t *a) | ||
| 291 | { | ||
| 292 | *a = PTHREAD_MUTEX_NORMAL | (PTHREAD_PROCESS_PRIVATE << 3); | ||
| 293 | return 0; | ||
| 294 | } | ||
| 295 | |||
| 296 | int pthread_mutexattr_destroy(pthread_mutexattr_t *a) | ||
| 297 | { | ||
| 298 | if (!a) | ||
| 299 | return EINVAL; | ||
| 300 | |||
| 301 | return 0; | ||
| 302 | } | ||
| 303 | |||
| 304 | int pthread_mutexattr_gettype(const pthread_mutexattr_t *a, int *type) | ||
| 305 | { | ||
| 306 | if (!a || !type) | ||
| 307 | return EINVAL; | ||
| 308 | 	 | ||
| 309 | *type = *a & 3; | ||
| 310 | |||
| 311 | return 0; | ||
| 312 | } | ||
| 313 | |||
| 314 | int pthread_mutexattr_settype(pthread_mutexattr_t *a, int type) | ||
| 315 | { | ||
| 316 | if (!a || (type != PTHREAD_MUTEX_NORMAL && type != PTHREAD_MUTEX_RECURSIVE && type != PTHREAD_MUTEX_ERRORCHECK)) | ||
| 317 | return EINVAL; | ||
| 318 | *a &= ~3; | ||
| 319 | *a |= type; | ||
| 320 | |||
| 321 | return 0; | ||
| 322 | } | ||
| 323 | |||
| 324 | int pthread_mutexattr_getpshared(const pthread_mutexattr_t *a, int *type) | ||
| 325 | { | ||
| 326 | if (!a || !type) | ||
| 327 | return EINVAL; | ||
| 328 | *type = (*a & 4 ? PTHREAD_PROCESS_SHARED : PTHREAD_PROCESS_PRIVATE); | ||
| 329 | |||
| 330 | return 0; | ||
| 331 | } | ||
| 332 | |||
| 333 | int pthread_mutexattr_setpshared(pthread_mutexattr_t * a, int type) | ||
| 334 | { | ||
| 335 | int r = 0; | ||
| 336 | if (!a || (type != PTHREAD_PROCESS_SHARED | ||
| 337 | 	&& type != PTHREAD_PROCESS_PRIVATE)) | ||
| 338 | return EINVAL; | ||
| 339 | if (type == PTHREAD_PROCESS_SHARED) | ||
| 340 | { | ||
| 341 | type = PTHREAD_PROCESS_PRIVATE; | ||
| 342 | r = ENOSYS; | ||
| 343 | } | ||
| 344 | type = (type == PTHREAD_PROCESS_SHARED ? 4 : 0); | ||
| 345 | |||
| 346 | *a &= ~4; | ||
| 347 | *a |= type; | ||
| 348 | |||
| 349 | return r; | ||
| 350 | } | ||
| 351 | |||
| 352 | int pthread_mutexattr_getprotocol(const pthread_mutexattr_t *a, int *type) | ||
| 353 | { | ||
| 354 | *type = *a & (8 + 16); | ||
| 355 | |||
| 356 | return 0; | ||
| 357 | } | ||
| 358 | |||
| 359 | int pthread_mutexattr_setprotocol(pthread_mutexattr_t *a, int type) | ||
| 360 | { | ||
| 361 | if ((type & (8 + 16)) != 8 + 16) return EINVAL; | ||
| 362 | |||
| 363 | *a &= ~(8 + 16); | ||
| 364 | *a |= type; | ||
| 365 | |||
| 366 | return 0; | ||
| 367 | } | ||
| 368 | |||
| 369 | int pthread_mutexattr_getprioceiling(const pthread_mutexattr_t *a, int * prio) | ||
| 370 | { | ||
| 371 | *prio = *a / PTHREAD_PRIO_MULT; | ||
| 372 | return 0; | ||
| 373 | } | ||
| 374 | |||
| 375 | int pthread_mutexattr_setprioceiling(pthread_mutexattr_t *a, int prio) | ||
| 376 | { | ||
| 377 | *a &= (PTHREAD_PRIO_MULT - 1); | ||
| 378 | *a += prio * PTHREAD_PRIO_MULT; | ||
| 379 | |||
| 380 | return 0; | ||
| 381 | } | ||
lib/libc/mingw/winpthreads/nanosleep.c created+71| ... | @@ -0,0 +1,71 @@ | ||
| 1 | /** | ||
| 2 | * This file has no copyright assigned and is placed in the Public Domain. | ||
| 3 | * This file is part of the w64 mingw-runtime package. | ||
| 4 | * No warranty is given; refer to the file DISCLAIMER.PD within this package. | ||
| 5 | */ | ||
| 6 | |||
| 7 | #include <errno.h> | ||
| 8 | #include <time.h> | ||
| 9 | #include <windows.h> | ||
| 10 | #include "pthread.h" | ||
| 11 | #include "pthread_time.h" | ||
| 12 | #include "winpthread_internal.h" | ||
| 13 | |||
| 14 | #define POW10_3 1000 | ||
| 15 | #define POW10_4 10000 | ||
| 16 | #define POW10_6 1000000 | ||
| 17 | #define POW10_9 1000000000 | ||
| 18 | #define MAX_SLEEP_IN_MS 4294967294UL | ||
| 19 | |||
| 20 | /** | ||
| 21 | * Sleep for the specified time. | ||
| 22 | * @param request The desired amount of time to sleep. | ||
| 23 | * @param remain The remain amount of time to sleep. | ||
| 24 | * @return If the function succeeds, the return value is 0. | ||
| 25 | * If the function fails, the return value is -1, | ||
| 26 | * with errno set to indicate the error. | ||
| 27 | */ | ||
| 28 | int nanosleep(const struct timespec *request, struct timespec *remain) | ||
| 29 | { | ||
| 30 | unsigned long ms, rc = 0; | ||
| 31 | unsigned __int64 u64, want, real; | ||
| 32 | |||
| 33 | union { | ||
| 34 | unsigned __int64 ns100; | ||
| 35 | FILETIME ft; | ||
| 36 | } _start, _end; | ||
| 37 | |||
| 38 | if (request->tv_sec < 0 || request->tv_nsec < 0 || request->tv_nsec >= POW10_9) { | ||
| 39 | errno = EINVAL; | ||
| 40 | return -1; | ||
| 41 | } | ||
| 42 | |||
| 43 | if (remain != NULL) GetSystemTimeAsFileTime(&_start.ft); | ||
| 44 | |||
| 45 | want = u64 = request->tv_sec * POW10_3 + request->tv_nsec / POW10_6; | ||
| 46 | while (u64 > 0 && rc == 0) { | ||
| 47 | if (u64 >= MAX_SLEEP_IN_MS) ms = MAX_SLEEP_IN_MS; | ||
| 48 | else ms = (unsigned long) u64; | ||
| 49 | |||
| 50 | u64 -= ms; | ||
| 51 | rc = pthread_delay_np_ms(ms); | ||
| 52 | } | ||
| 53 | |||
| 54 | if (rc != 0) { /* WAIT_IO_COMPLETION (192) */ | ||
| 55 | if (remain != NULL) { | ||
| 56 | GetSystemTimeAsFileTime(&_end.ft); | ||
| 57 | real = (_end.ns100 - _start.ns100) / POW10_4; | ||
| 58 | |||
| 59 | if (real >= want) u64 = 0; | ||
| 60 | else u64 = want - real; | ||
| 61 | |||
| 62 | remain->tv_sec = u64 / POW10_3; | ||
| 63 | remain->tv_nsec = (long) (u64 % POW10_3) * POW10_6; | ||
| 64 | } | ||
| 65 | |||
| 66 | errno = EINTR; | ||
| 67 | return -1; | ||
| 68 | } | ||
| 69 | |||
| 70 | return 0; | ||
| 71 | } | ||
lib/libc/mingw/winpthreads/ref.c created+34| ... | @@ -0,0 +1,34 @@ | ||
| 1 | /* | ||
| 2 | Copyright (c) 2011-2016 mingw-w64 project | ||
| 3 | |||
| 4 | Permission is hereby granted, free of charge, to any person obtaining a | ||
| 5 | copy of this software and associated documentation files (the "Software"), | ||
| 6 | to deal in the Software without restriction, including without limitation | ||
| 7 | the rights to use, copy, modify, merge, publish, distribute, sublicense, | ||
| 8 | and/or sell copies of the Software, and to permit persons to whom the | ||
| 9 | Software is furnished to do so, subject to the following conditions: | ||
| 10 | |||
| 11 | The above copyright notice and this permission notice shall be included in | ||
| 12 | all copies or substantial portions of the Software. | ||
| 13 | |||
| 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
| 15 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
| 16 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
| 17 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
| 18 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||
| 19 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||
| 20 | DEALINGS IN THE SOFTWARE. | ||
| 21 | */ | ||
| 22 | |||
| 23 | #include <windows.h> | ||
| 24 | #include <winternl.h> | ||
| 25 | #include <stdio.h> | ||
| 26 | #include "pthread.h" | ||
| 27 | #include "semaphore.h" | ||
| 28 | #include "rwlock.h" | ||
| 29 | #include "cond.h" | ||
| 30 | #include "barrier.h" | ||
| 31 | #include "sem.h" | ||
| 32 | #include "ref.h" | ||
| 33 | #include "misc.h" | ||
| 34 | |||
lib/libc/mingw/winpthreads/ref.h created+29| ... | @@ -0,0 +1,29 @@ | ||
| 1 | /* | ||
| 2 | Copyright (c) 2011-2016 mingw-w64 project | ||
| 3 | |||
| 4 | Permission is hereby granted, free of charge, to any person obtaining a | ||
| 5 | copy of this software and associated documentation files (the "Software"), | ||
| 6 | to deal in the Software without restriction, including without limitation | ||
| 7 | the rights to use, copy, modify, merge, publish, distribute, sublicense, | ||
| 8 | and/or sell copies of the Software, and to permit persons to whom the | ||
| 9 | Software is furnished to do so, subject to the following conditions: | ||
| 10 | |||
| 11 | The above copyright notice and this permission notice shall be included in | ||
| 12 | all copies or substantial portions of the Software. | ||
| 13 | |||
| 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
| 15 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
| 16 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
| 17 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
| 18 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||
| 19 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||
| 20 | DEALINGS IN THE SOFTWARE. | ||
| 21 | */ | ||
| 22 | |||
| 23 | #ifndef WIN_PTHREADS_REF_H | ||
| 24 | #define WIN_PTHREADS_REF_H | ||
| 25 | #include "pthread.h" | ||
| 26 | #include "semaphore.h" | ||
| 27 | |||
| 28 | #endif | ||
| 29 | |||
lib/libc/mingw/winpthreads/rwlock.c created+537| ... | @@ -0,0 +1,537 @@ | ||
| 1 | /* | ||
| 2 | Copyright (c) 2011-2016 mingw-w64 project | ||
| 3 | |||
| 4 | Permission is hereby granted, free of charge, to any person obtaining a | ||
| 5 | copy of this software and associated documentation files (the "Software"), | ||
| 6 | to deal in the Software without restriction, including without limitation | ||
| 7 | the rights to use, copy, modify, merge, publish, distribute, sublicense, | ||
| 8 | and/or sell copies of the Software, and to permit persons to whom the | ||
| 9 | Software is furnished to do so, subject to the following conditions: | ||
| 10 | |||
| 11 | The above copyright notice and this permission notice shall be included in | ||
| 12 | all copies or substantial portions of the Software. | ||
| 13 | |||
| 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
| 15 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
| 16 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
| 17 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
| 18 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||
| 19 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||
| 20 | DEALINGS IN THE SOFTWARE. | ||
| 21 | */ | ||
| 22 | |||
| 23 | #include <windows.h> | ||
| 24 | #include <stdio.h> | ||
| 25 | #include <malloc.h> | ||
| 26 | #include "pthread.h" | ||
| 27 | #include "thread.h" | ||
| 28 | #include "ref.h" | ||
| 29 | #include "rwlock.h" | ||
| 30 | #include "misc.h" | ||
| 31 | |||
| 32 | static pthread_spinlock_t rwl_global = PTHREAD_SPINLOCK_INITIALIZER; | ||
| 33 | |||
| 34 | static WINPTHREADS_ATTRIBUTE((noinline)) int rwlock_static_init(pthread_rwlock_t *rw); | ||
| 35 | |||
| 36 | static WINPTHREADS_ATTRIBUTE((noinline)) int rwl_unref(volatile pthread_rwlock_t *rwl, int res) | ||
| 37 | { | ||
| 38 | pthread_spin_lock(&rwl_global); | ||
| 39 | #ifdef WINPTHREAD_DBG | ||
| 40 | assert((((rwlock_t *)*rwl)->valid == LIFE_RWLOCK) && (((rwlock_t *)*rwl)->busy > 0)); | ||
| 41 | #endif | ||
| 42 | ((rwlock_t *)*rwl)->busy--; | ||
| 43 | pthread_spin_unlock(&rwl_global); | ||
| 44 | return res; | ||
| 45 | } | ||
| 46 | |||
| 47 | static WINPTHREADS_ATTRIBUTE((noinline)) int rwl_ref(pthread_rwlock_t *rwl, int f ) | ||
| 48 | { | ||
| 49 | int r = 0; | ||
| 50 | if (STATIC_RWL_INITIALIZER(*rwl)) { | ||
| 51 | r = rwlock_static_init(rwl); | ||
| 52 | if (r != 0 && r != EBUSY) | ||
| 53 | return r; | ||
| 54 | } | ||
| 55 | pthread_spin_lock(&rwl_global); | ||
| 56 | |||
| 57 | if (!rwl || !*rwl || ((rwlock_t *)*rwl)->valid != LIFE_RWLOCK) r = EINVAL; | ||
| 58 | else { | ||
| 59 | ((rwlock_t *)*rwl)->busy ++; | ||
| 60 | } | ||
| 61 | |||
| 62 | pthread_spin_unlock(&rwl_global); | ||
| 63 | |||
| 64 | return r; | ||
| 65 | } | ||
| 66 | |||
| 67 | static WINPTHREADS_ATTRIBUTE((noinline)) int rwl_ref_unlock(pthread_rwlock_t *rwl ) | ||
| 68 | { | ||
| 69 | int r = 0; | ||
| 70 | |||
| 71 | pthread_spin_lock(&rwl_global); | ||
| 72 | |||
| 73 | if (!rwl || !*rwl || ((rwlock_t *)*rwl)->valid != LIFE_RWLOCK) r = EINVAL; | ||
| 74 | else if (STATIC_RWL_INITIALIZER(*rwl)) r= EPERM; | ||
| 75 | else { | ||
| 76 | ((rwlock_t *)*rwl)->busy ++; | ||
| 77 | } | ||
| 78 | |||
| 79 | pthread_spin_unlock(&rwl_global); | ||
| 80 | |||
| 81 | return r; | ||
| 82 | } | ||
| 83 | |||
| 84 | static WINPTHREADS_ATTRIBUTE((noinline)) int rwl_ref_destroy(pthread_rwlock_t *rwl, pthread_rwlock_t *rDestroy ) | ||
| 85 | { | ||
| 86 | int r = 0; | ||
| 87 | |||
| 88 | *rDestroy = (pthread_rwlock_t)NULL; | ||
| 89 | pthread_spin_lock(&rwl_global); | ||
| 90 | |||
| 91 | if (!rwl || !*rwl) r = EINVAL; | ||
| 92 | else { | ||
| 93 | rwlock_t *r_ = (rwlock_t *)*rwl; | ||
| 94 | if (STATIC_RWL_INITIALIZER(*rwl)) *rwl = (pthread_rwlock_t)NULL; | ||
| 95 | else if (r_->valid != LIFE_RWLOCK) r = EINVAL; | ||
| 96 | else if (r_->busy) r = EBUSY; | ||
| 97 | else { | ||
| 98 | *rDestroy = *rwl; | ||
| 99 | *rwl = (pthread_rwlock_t)NULL; | ||
| 100 | } | ||
| 101 | } | ||
| 102 | |||
| 103 | pthread_spin_unlock(&rwl_global); | ||
| 104 | return r; | ||
| 105 | } | ||
| 106 | |||
| 107 | static int rwlock_gain_both_locks(rwlock_t *rwlock) | ||
| 108 | { | ||
| 109 | int ret; | ||
| 110 | ret = pthread_mutex_lock(&rwlock->mex); | ||
| 111 | if (ret != 0) | ||
| 112 | return ret; | ||
| 113 | ret = pthread_mutex_lock(&rwlock->mcomplete); | ||
| 114 | if (ret != 0) | ||
| 115 | pthread_mutex_unlock(&rwlock->mex); | ||
| 116 | return ret; | ||
| 117 | } | ||
| 118 | |||
| 119 | static int rwlock_free_both_locks(rwlock_t *rwlock, int last_fail) | ||
| 120 | { | ||
| 121 | int ret, ret2; | ||
| 122 | ret = pthread_mutex_unlock(&rwlock->mcomplete); | ||
| 123 | ret2 = pthread_mutex_unlock(&rwlock->mex); | ||
| 124 | if (last_fail && ret2 != 0) | ||
| 125 | ret = ret2; | ||
| 126 | else if (!last_fail && !ret) | ||
| 127 | ret = ret2; | ||
| 128 | return ret; | ||
| 129 | } | ||
| 130 | |||
| 131 | #ifdef WINPTHREAD_DBG | ||
| 132 | static int print_state = 0; | ||
| 133 | void rwl_print_set(int state) | ||
| 134 | { | ||
| 135 | print_state = state; | ||
| 136 | } | ||
| 137 | |||
| 138 | void rwl_print(volatile pthread_rwlock_t *rwl, char *txt) | ||
| 139 | { | ||
| 140 | if (!print_state) return; | ||
| 141 | rwlock_t *r = (rwlock_t *)*rwl; | ||
| 142 | if (r == NULL) { | ||
| 143 | printf("RWL%p %lu %s\n",(void *)*rwl,GetCurrentThreadId(),txt); | ||
| 144 | } else { | ||
| 145 | printf("RWL%p %lu V=%0X B=%d r=%ld w=%ld L=%p %s\n", | ||
| 146 | (void *)*rwl, | ||
| 147 | GetCurrentThreadId(), | ||
| 148 | (int)r->valid, | ||
| 149 | (int)r->busy, | ||
| 150 | 0L,0L,NULL,txt); | ||
| 151 | } | ||
| 152 | } | ||
| 153 | #endif | ||
| 154 | |||
| 155 | static pthread_spinlock_t cond_locked = PTHREAD_SPINLOCK_INITIALIZER; | ||
| 156 | |||
| 157 | static WINPTHREADS_ATTRIBUTE((noinline)) int rwlock_static_init(pthread_rwlock_t *rw) | ||
| 158 | { | ||
| 159 | int r; | ||
| 160 | pthread_spin_lock(&cond_locked); | ||
| 161 | if (*rw != PTHREAD_RWLOCK_INITIALIZER) | ||
| 162 | { | ||
| 163 | pthread_spin_unlock(&cond_locked); | ||
| 164 | return EINVAL; | ||
| 165 | } | ||
| 166 | r = pthread_rwlock_init (rw, NULL); | ||
| 167 | pthread_spin_unlock(&cond_locked); | ||
| 168 | |||
| 169 | return r; | ||
| 170 | } | ||
| 171 | |||
| 172 | int pthread_rwlock_init (pthread_rwlock_t *rwlock_, const pthread_rwlockattr_t *attr) | ||
| 173 | { | ||
| 174 | rwlock_t *rwlock; | ||
| 175 | int r; | ||
| 176 | |||
| 177 | if(!rwlock_) | ||
| 178 | return EINVAL; | ||
| 179 | *rwlock_ = (pthread_rwlock_t)NULL; | ||
| 180 | if ((rwlock = calloc(1, sizeof(*rwlock))) == NULL) | ||
| 181 | return ENOMEM; | ||
| 182 | rwlock->valid = DEAD_RWLOCK; | ||
| 183 | |||
| 184 | rwlock->nex_count = rwlock->nsh_count = rwlock->ncomplete = 0; | ||
| 185 | if ((r = pthread_mutex_init (&rwlock->mex, NULL)) != 0) | ||
| 186 | { | ||
| 187 | free(rwlock); | ||
| 188 | return r; | ||
| 189 | } | ||
| 190 | if ((r = pthread_mutex_init (&rwlock->mcomplete, NULL)) != 0) | ||
| 191 | { | ||
| 192 | pthread_mutex_destroy(&rwlock->mex); | ||
| 193 | free(rwlock); | ||
| 194 | return r; | ||
| 195 | } | ||
| 196 | if ((r = pthread_cond_init (&rwlock->ccomplete, NULL)) != 0) | ||
| 197 | { | ||
| 198 | pthread_mutex_destroy(&rwlock->mex); | ||
| 199 | pthread_mutex_destroy (&rwlock->mcomplete); | ||
| 200 | free(rwlock); | ||
| 201 | return r; | ||
| 202 | } | ||
| 203 | rwlock->valid = LIFE_RWLOCK; | ||
| 204 | *rwlock_ = (pthread_rwlock_t)rwlock; | ||
| 205 | return r; | ||
| 206 | } | ||
| 207 | |||
| 208 | int pthread_rwlock_destroy (pthread_rwlock_t *rwlock_) | ||
| 209 | { | ||
| 210 | rwlock_t *rwlock; | ||
| 211 | pthread_rwlock_t rDestroy; | ||
| 212 | int r, r2; | ||
| 213 | |||
| 214 | pthread_spin_lock(&cond_locked); | ||
| 215 | r = rwl_ref_destroy(rwlock_,&rDestroy); | ||
| 216 | pthread_spin_unlock(&cond_locked); | ||
| 217 | |||
| 218 | if(r) return r; | ||
| 219 | if(!rDestroy) return 0; /* destroyed a (still) static initialized rwl */ | ||
| 220 | |||
| 221 | rwlock = (rwlock_t *)rDestroy; | ||
| 222 | r = rwlock_gain_both_locks (rwlock); | ||
| 223 | if (r != 0) | ||
| 224 | { | ||
| 225 | *rwlock_ = rDestroy; | ||
| 226 | return r; | ||
| 227 | } | ||
| 228 | if (rwlock->nsh_count > rwlock->ncomplete || rwlock->nex_count > 0) | ||
| 229 | { | ||
| 230 | *rwlock_ = rDestroy; | ||
| 231 | r = rwlock_free_both_locks(rwlock, 1); | ||
| 232 | if (!r) | ||
| 233 | r = EBUSY; | ||
| 234 | return r; | ||
| 235 | } | ||
| 236 | rwlock->valid = DEAD_RWLOCK; | ||
| 237 | r = rwlock_free_both_locks(rwlock, 0); | ||
| 238 | if (r != 0) { *rwlock_ = rDestroy; return r; } | ||
| 239 | |||
| 240 | r = pthread_cond_destroy(&rwlock->ccomplete); | ||
| 241 | r2 = pthread_mutex_destroy(&rwlock->mex); | ||
| 242 | if (!r) r = r2; | ||
| 243 | r2 = pthread_mutex_destroy(&rwlock->mcomplete); | ||
| 244 | if (!r) r = r2; | ||
| 245 | rwlock->valid = DEAD_RWLOCK; | ||
| 246 | free((void *)rDestroy); | ||
| 247 | return 0; | ||
| 248 | } | ||
| 249 | |||
| 250 | int pthread_rwlock_rdlock (pthread_rwlock_t *rwlock_) | ||
| 251 | { | ||
| 252 | rwlock_t *rwlock; | ||
| 253 | int ret; | ||
| 254 | |||
| 255 | /* pthread_testcancel(); */ | ||
| 256 | |||
| 257 | ret = rwl_ref(rwlock_,0); | ||
| 258 | if(ret != 0) return ret; | ||
| 259 | |||
| 260 | rwlock = (rwlock_t *)*rwlock_; | ||
| 261 | |||
| 262 | ret = pthread_mutex_lock(&rwlock->mex); | ||
| 263 | if (ret != 0) return rwl_unref(rwlock_, ret); | ||
| 264 | InterlockedIncrement((long*)&rwlock->nsh_count); | ||
| 265 | if (rwlock->nsh_count == INT_MAX) | ||
| 266 | { | ||
| 267 | ret = pthread_mutex_lock(&rwlock->mcomplete); | ||
| 268 | if (ret != 0) | ||
| 269 | { | ||
| 270 | pthread_mutex_unlock(&rwlock->mex); | ||
| 271 | return rwl_unref(rwlock_,ret); | ||
| 272 | } | ||
| 273 | rwlock->nsh_count -= rwlock->ncomplete; | ||
| 274 | rwlock->ncomplete = 0; | ||
| 275 | ret = rwlock_free_both_locks(rwlock, 0); | ||
| 276 | return rwl_unref(rwlock_, ret); | ||
| 277 | } | ||
| 278 | ret = pthread_mutex_unlock(&rwlock->mex); | ||
| 279 | return rwl_unref(rwlock_, ret); | ||
| 280 | } | ||
| 281 | |||
| 282 | int pthread_rwlock_timedrdlock (pthread_rwlock_t *rwlock_, const struct timespec *ts) | ||
| 283 | { | ||
| 284 | rwlock_t *rwlock; | ||
| 285 | int ret; | ||
| 286 | |||
| 287 | /* pthread_testcancel(); */ | ||
| 288 | |||
| 289 | ret = rwl_ref(rwlock_,0); | ||
| 290 | if(ret != 0) return ret; | ||
| 291 | |||
| 292 | rwlock = (rwlock_t *)*rwlock_; | ||
| 293 | if ((ret = pthread_mutex_timedlock (&rwlock->mex, ts)) != 0) | ||
| 294 | return rwl_unref(rwlock_, ret); | ||
| 295 | InterlockedIncrement(&rwlock->nsh_count); | ||
| 296 | if (rwlock->nsh_count == INT_MAX) | ||
| 297 | { | ||
| 298 | ret = pthread_mutex_timedlock(&rwlock->mcomplete, ts); | ||
| 299 | if (ret != 0) | ||
| 300 | { | ||
| 301 | if (ret == ETIMEDOUT) | ||
| 302 | 	InterlockedIncrement(&rwlock->ncomplete); | ||
| 303 | pthread_mutex_unlock(&rwlock->mex); | ||
| 304 | return rwl_unref(rwlock_, ret); | ||
| 305 | } | ||
| 306 | rwlock->nsh_count -= rwlock->ncomplete; | ||
| 307 | rwlock->ncomplete = 0; | ||
| 308 | ret = rwlock_free_both_locks(rwlock, 0); | ||
| 309 | return rwl_unref(rwlock_, ret); | ||
| 310 | } | ||
| 311 | ret = pthread_mutex_unlock(&rwlock->mex); | ||
| 312 | return rwl_unref(rwlock_, ret); | ||
| 313 | } | ||
| 314 | |||
| 315 | int pthread_rwlock_tryrdlock (pthread_rwlock_t *rwlock_) | ||
| 316 | { | ||
| 317 | rwlock_t *rwlock; | ||
| 318 | int ret; | ||
| 319 | |||
| 320 | ret = rwl_ref(rwlock_,RWL_TRY); | ||
| 321 | if(ret != 0) return ret; | ||
| 322 | |||
| 323 | rwlock = (rwlock_t *)*rwlock_; | ||
| 324 | ret = pthread_mutex_trylock(&rwlock->mex); | ||
| 325 | if (ret != 0) | ||
| 326 | return rwl_unref(rwlock_, ret); | ||
| 327 | InterlockedIncrement(&rwlock->nsh_count); | ||
| 328 | if (rwlock->nsh_count == INT_MAX) | ||
| 329 | { | ||
| 330 | ret = pthread_mutex_lock(&rwlock->mcomplete); | ||
| 331 | if (ret != 0) | ||
| 332 | { | ||
| 333 | pthread_mutex_unlock(&rwlock->mex); | ||
| 334 | return rwl_unref(rwlock_, ret); | ||
| 335 | } | ||
| 336 | rwlock->nsh_count -= rwlock->ncomplete; | ||
| 337 | rwlock->ncomplete = 0; | ||
| 338 | ret = rwlock_free_both_locks(rwlock, 0); | ||
| 339 | return rwl_unref(rwlock_, ret); | ||
| 340 | } | ||
| 341 | ret = pthread_mutex_unlock(&rwlock->mex); | ||
| 342 | return rwl_unref(rwlock_,ret); | ||
| 343 | } | ||
| 344 | |||
| 345 | int pthread_rwlock_trywrlock (pthread_rwlock_t *rwlock_) | ||
| 346 | { | ||
| 347 | rwlock_t *rwlock; | ||
| 348 | int ret; | ||
| 349 | |||
| 350 | ret = rwl_ref(rwlock_,RWL_TRY); | ||
| 351 | if(ret != 0) return ret; | ||
| 352 | |||
| 353 | rwlock = (rwlock_t *)*rwlock_; | ||
| 354 | ret = pthread_mutex_trylock (&rwlock->mex); | ||
| 355 | if (ret != 0) | ||
| 356 | return rwl_unref(rwlock_, ret); | ||
| 357 | ret = pthread_mutex_trylock(&rwlock->mcomplete); | ||
| 358 | if (ret != 0) | ||
| 359 | { | ||
| 360 | int r1 = pthread_mutex_unlock(&rwlock->mex); | ||
| 361 | if (r1 != 0) | ||
| 362 | ret = r1; | ||
| 363 | return rwl_unref(rwlock_, ret); | ||
| 364 | } | ||
| 365 | if (rwlock->nex_count != 0) | ||
| 366 | return rwl_unref(rwlock_, EBUSY); | ||
| 367 | if (rwlock->ncomplete > 0) | ||
| 368 | { | ||
| 369 | rwlock->nsh_count -= rwlock->ncomplete; | ||
| 370 | rwlock->ncomplete = 0; | ||
| 371 | } | ||
| 372 | if (rwlock->nsh_count > 0) | ||
| 373 | { | ||
| 374 | ret = rwlock_free_both_locks(rwlock, 0); | ||
| 375 | if (!ret) | ||
| 376 | ret = EBUSY; | ||
| 377 | return rwl_unref(rwlock_, ret); | ||
| 378 | } | ||
| 379 | rwlock->nex_count = 1; | ||
| 380 | return rwl_unref(rwlock_, 0); | ||
| 381 | } | ||
| 382 | |||
| 383 | int pthread_rwlock_unlock (pthread_rwlock_t *rwlock_) | ||
| 384 | { | ||
| 385 | rwlock_t *rwlock; | ||
| 386 | int ret; | ||
| 387 | |||
| 388 | ret = rwl_ref_unlock(rwlock_); | ||
| 389 | if(ret != 0) return ret; | ||
| 390 | |||
| 391 | rwlock = (rwlock_t *)*rwlock_; | ||
| 392 | if (rwlock->nex_count == 0) | ||
| 393 | { | ||
| 394 | ret = pthread_mutex_lock(&rwlock->mcomplete); | ||
| 395 | if (!ret) | ||
| 396 | { | ||
| 397 | int r1; | ||
| 398 | InterlockedIncrement(&rwlock->ncomplete); | ||
| 399 | if (rwlock->ncomplete == 0) | ||
| 400 | 	ret = pthread_cond_signal(&rwlock->ccomplete); | ||
| 401 | r1 = pthread_mutex_unlock(&rwlock->mcomplete); | ||
| 402 | if (!ret) | ||
| 403 | 	ret = r1; | ||
| 404 | } | ||
| 405 | } | ||
| 406 | else | ||
| 407 | { | ||
| 408 | InterlockedDecrement(&rwlock->nex_count); | ||
| 409 | ret = rwlock_free_both_locks(rwlock, 0); | ||
| 410 | } | ||
| 411 | return rwl_unref(rwlock_, ret); | ||
| 412 | } | ||
| 413 | |||
| 414 | static void st_cancelwrite (void *arg) | ||
| 415 | { | ||
| 416 | rwlock_t *rwlock = (rwlock_t *)arg; | ||
| 417 | |||
| 418 | rwlock->nsh_count = - rwlock->ncomplete; | ||
| 419 | rwlock->ncomplete = 0; | ||
| 420 | rwlock_free_both_locks(rwlock, 0); | ||
| 421 | } | ||
| 422 | |||
| 423 | int pthread_rwlock_wrlock (pthread_rwlock_t *rwlock_) | ||
| 424 | { | ||
| 425 | rwlock_t *rwlock; | ||
| 426 | int ret; | ||
| 427 | |||
| 428 | /* pthread_testcancel(); */ | ||
| 429 | ret = rwl_ref(rwlock_,0); | ||
| 430 | if(ret != 0) return ret; | ||
| 431 | |||
| 432 | rwlock = (rwlock_t *)*rwlock_; | ||
| 433 | ret = rwlock_gain_both_locks(rwlock); | ||
| 434 | if (ret != 0) | ||
| 435 | return rwl_unref(rwlock_,ret); | ||
| 436 | |||
| 437 | if (rwlock->nex_count == 0) | ||
| 438 | { | ||
| 439 | if (rwlock->ncomplete > 0) | ||
| 440 | { | ||
| 441 | rwlock->nsh_count -= rwlock->ncomplete; | ||
| 442 | rwlock->ncomplete = 0; | ||
| 443 | } | ||
| 444 | if (rwlock->nsh_count > 0) | ||
| 445 | { | ||
| 446 | rwlock->ncomplete = -rwlock->nsh_count; | ||
| 447 | pthread_cleanup_push(st_cancelwrite, (void *) rwlock); | ||
| 448 | do { | ||
| 449 | 	ret = pthread_cond_wait(&rwlock->ccomplete, &rwlock->mcomplete); | ||
| 450 | } while (!ret && rwlock->ncomplete < 0); | ||
| 451 | |||
| 452 | pthread_cleanup_pop(!ret ? 0 : 1); | ||
| 453 | if (!ret) | ||
| 454 | 	rwlock->nsh_count = 0; | ||
| 455 | } | ||
| 456 | } | ||
| 457 | if(!ret) | ||
| 458 | InterlockedIncrement((long*)&rwlock->nex_count); | ||
| 459 | return rwl_unref(rwlock_,ret); | ||
| 460 | } | ||
| 461 | |||
| 462 | int pthread_rwlock_timedwrlock (pthread_rwlock_t *rwlock_, const struct timespec *ts) | ||
| 463 | { | ||
| 464 | int ret; | ||
| 465 | rwlock_t *rwlock; | ||
| 466 | |||
| 467 | /* pthread_testcancel(); */ | ||
| 468 | if (!rwlock_ || !ts) | ||
| 469 | return EINVAL; | ||
| 470 | if ((ret = rwl_ref(rwlock_,0)) != 0) | ||
| 471 | return ret; | ||
| 472 | rwlock = (rwlock_t *)*rwlock_; | ||
| 473 | |||
| 474 | ret = pthread_mutex_timedlock(&rwlock->mex, ts); | ||
| 475 | if (ret != 0) | ||
| 476 | return rwl_unref(rwlock_,ret); | ||
| 477 | ret = pthread_mutex_timedlock (&rwlock->mcomplete, ts); | ||
| 478 | if (ret != 0) | ||
| 479 | { | ||
| 480 | pthread_mutex_unlock(&rwlock->mex); | ||
| 481 | return rwl_unref(rwlock_,ret); | ||
| 482 | } | ||
| 483 | if (rwlock->nex_count == 0) | ||
| 484 | { | ||
| 485 | if (rwlock->ncomplete > 0) | ||
| 486 | { | ||
| 487 | rwlock->nsh_count -= rwlock->ncomplete; | ||
| 488 | rwlock->ncomplete = 0; | ||
| 489 | } | ||
| 490 | if (rwlock->nsh_count > 0) | ||
| 491 | { | ||
| 492 | rwlock->ncomplete = -rwlock->nsh_count; | ||
| 493 | pthread_cleanup_push(st_cancelwrite, (void *) rwlock); | ||
| 494 | do { | ||
| 495 | 	ret = pthread_cond_timedwait(&rwlock->ccomplete, &rwlock->mcomplete, ts); | ||
| 496 | } while (rwlock->ncomplete < 0 && !ret); | ||
| 497 | pthread_cleanup_pop(!ret ? 0 : 1); | ||
| 498 | |||
| 499 | if (!ret) | ||
| 500 | 	rwlock->nsh_count = 0; | ||
| 501 | } | ||
| 502 | } | ||
| 503 | if(!ret) | ||
| 504 | InterlockedIncrement((long*)&rwlock->nex_count); | ||
| 505 | return rwl_unref(rwlock_,ret); | ||
| 506 | } | ||
| 507 | |||
| 508 | int pthread_rwlockattr_destroy(pthread_rwlockattr_t *a) | ||
| 509 | { | ||
| 510 | if (!a) | ||
| 511 | return EINVAL; | ||
| 512 | return 0; | ||
| 513 | } | ||
| 514 | |||
| 515 | int pthread_rwlockattr_init(pthread_rwlockattr_t *a) | ||
| 516 | { | ||
| 517 | if (!a) | ||
| 518 | return EINVAL; | ||
| 519 | *a = PTHREAD_PROCESS_PRIVATE; | ||
| 520 | return 0; | ||
| 521 | } | ||
| 522 | |||
| 523 | int pthread_rwlockattr_getpshared(pthread_rwlockattr_t *a, int *s) | ||
| 524 | { | ||
| 525 | if (!a || !s) | ||
| 526 | return EINVAL; | ||
| 527 | *s = *a; | ||
| 528 | return 0; | ||
| 529 | } | ||
| 530 | |||
| 531 | int pthread_rwlockattr_setpshared(pthread_rwlockattr_t *a, int s) | ||
| 532 | { | ||
| 533 | if (!a || (s != PTHREAD_PROCESS_SHARED && s != PTHREAD_PROCESS_PRIVATE)) | ||
| 534 | return EINVAL; | ||
| 535 | *a = s; | ||
| 536 | return 0; | ||
| 537 | } | ||
lib/libc/mingw/winpthreads/rwlock.h created+49| ... | @@ -0,0 +1,49 @@ | ||
| 1 | /* | ||
| 2 | Copyright (c) 2011-2016 mingw-w64 project | ||
| 3 | |||
| 4 | Permission is hereby granted, free of charge, to any person obtaining a | ||
| 5 | copy of this software and associated documentation files (the "Software"), | ||
| 6 | to deal in the Software without restriction, including without limitation | ||
| 7 | the rights to use, copy, modify, merge, publish, distribute, sublicense, | ||
| 8 | and/or sell copies of the Software, and to permit persons to whom the | ||
| 9 | Software is furnished to do so, subject to the following conditions: | ||
| 10 | |||
| 11 | The above copyright notice and this permission notice shall be included in | ||
| 12 | all copies or substantial portions of the Software. | ||
| 13 | |||
| 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
| 15 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
| 16 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
| 17 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
| 18 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||
| 19 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||
| 20 | DEALINGS IN THE SOFTWARE. | ||
| 21 | */ | ||
| 22 | |||
| 23 | #ifndef WIN_PTHREADS_RWLOCK_H | ||
| 24 | #define WIN_PTHREADS_RWLOCK_H | ||
| 25 | |||
| 26 | #define LIFE_RWLOCK 0xBAB1F0ED | ||
| 27 | #define DEAD_RWLOCK 0xDEADB0EF | ||
| 28 | |||
| 29 | #define STATIC_RWL_INITIALIZER(x)		((pthread_rwlock_t)(x) == ((pthread_rwlock_t)PTHREAD_RWLOCK_INITIALIZER)) | ||
| 30 | |||
| 31 | typedef struct rwlock_t rwlock_t; | ||
| 32 | struct rwlock_t { | ||
| 33 | unsigned int valid; | ||
| 34 | int busy; | ||
| 35 | LONG nex_count; /* Exclusive access counter. */ | ||
| 36 | LONG nsh_count; /* Shared access counter. */ | ||
| 37 | LONG ncomplete; /* Shared completed counter. */ | ||
| 38 | pthread_mutex_t mex; /* Exclusive access protection. */ | ||
| 39 | pthread_mutex_t mcomplete; /* Shared completed protection. */ | ||
| 40 | pthread_cond_t ccomplete; /* Shared access completed queue. */ | ||
| 41 | }; | ||
| 42 | |||
| 43 | #define RWL_SET	0x01 | ||
| 44 | #define RWL_TRY	0x02 | ||
| 45 | |||
| 46 | void rwl_print(volatile pthread_rwlock_t *rwl, char *txt); | ||
| 47 | void rwl_print_set(int state); | ||
| 48 | |||
| 49 | #endif | ||
lib/libc/mingw/winpthreads/sched.c created+218| ... | @@ -0,0 +1,218 @@ | ||
| 1 | /* | ||
| 2 | Copyright (c) 2011-2016 mingw-w64 project | ||
| 3 | |||
| 4 | Permission is hereby granted, free of charge, to any person obtaining a | ||
| 5 | copy of this software and associated documentation files (the "Software"), | ||
| 6 | to deal in the Software without restriction, including without limitation | ||
| 7 | the rights to use, copy, modify, merge, publish, distribute, sublicense, | ||
| 8 | and/or sell copies of the Software, and to permit persons to whom the | ||
| 9 | Software is furnished to do so, subject to the following conditions: | ||
| 10 | |||
| 11 | The above copyright notice and this permission notice shall be included in | ||
| 12 | all copies or substantial portions of the Software. | ||
| 13 | |||
| 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
| 15 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
| 16 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
| 17 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
| 18 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||
| 19 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||
| 20 | DEALINGS IN THE SOFTWARE. | ||
| 21 | */ | ||
| 22 | |||
| 23 | #include <windows.h> | ||
| 24 | #include <stdio.h> | ||
| 25 | #include "pthread.h" | ||
| 26 | #include "thread.h" | ||
| 27 | |||
| 28 | #include "misc.h" | ||
| 29 | |||
| 30 | int sched_get_priority_min(int pol) | ||
| 31 | { | ||
| 32 | if (pol < SCHED_MIN || pol > SCHED_MAX) { | ||
| 33 | errno = EINVAL; | ||
| 34 | return -1; | ||
| 35 | } | ||
| 36 | |||
| 37 | return THREAD_PRIORITY_IDLE; | ||
| 38 | } | ||
| 39 | |||
| 40 | int sched_get_priority_max(int pol) | ||
| 41 | { | ||
| 42 | if (pol < SCHED_MIN || pol > SCHED_MAX) { | ||
| 43 | errno = EINVAL; | ||
| 44 | return -1; | ||
| 45 | } | ||
| 46 | |||
| 47 | return THREAD_PRIORITY_TIME_CRITICAL; | ||
| 48 | } | ||
| 49 | |||
| 50 | int pthread_attr_setschedparam(pthread_attr_t *attr, const struct sched_param *p) | ||
| 51 | { | ||
| 52 | int r = 0; | ||
| 53 | |||
| 54 | if (attr == NULL || p == NULL) { | ||
| 55 | return EINVAL; | ||
| 56 | } | ||
| 57 | memcpy(&attr->param, p, sizeof (*p)); | ||
| 58 | return r; | ||
| 59 | } | ||
| 60 | |||
| 61 | int pthread_attr_getschedparam(const pthread_attr_t *attr, struct sched_param *p) | ||
| 62 | { | ||
| 63 | int r = 0; | ||
| 64 | |||
| 65 | if (attr == NULL || p == NULL) { | ||
| 66 | return EINVAL; | ||
| 67 | } | ||
| 68 | memcpy(p, &attr->param, sizeof (*p)); | ||
| 69 | return r; | ||
| 70 | } | ||
| 71 | |||
| 72 | int pthread_attr_setschedpolicy (pthread_attr_t *attr, int pol) | ||
| 73 | { | ||
| 74 | if (!attr || pol < SCHED_MIN || pol > SCHED_MAX) | ||
| 75 | return EINVAL; | ||
| 76 | if (pol != SCHED_OTHER) | ||
| 77 | return ENOTSUP; | ||
| 78 | return 0; | ||
| 79 | } | ||
| 80 | |||
| 81 | int pthread_attr_getschedpolicy (const pthread_attr_t *attr, int *pol) | ||
| 82 | { | ||
| 83 | if (!attr || !pol) | ||
| 84 | return EINVAL; | ||
| 85 | *pol = SCHED_OTHER; | ||
| 86 | return 0; | ||
| 87 | } | ||
| 88 | |||
| 89 | static int pthread_check(pthread_t t) | ||
| 90 | { | ||
| 91 | struct _pthread_v *pv; | ||
| 92 | |||
| 93 | if (!t) | ||
| 94 | return ESRCH; | ||
| 95 | pv = __pth_gpointer_locked (t); | ||
| 96 | if (pv->ended == 0) | ||
| 97 | return 0; | ||
| 98 | CHECK_OBJECT(pv, ESRCH); | ||
| 99 | return 0; | ||
| 100 | } | ||
| 101 | |||
| 102 | int pthread_getschedparam(pthread_t t, int *pol, struct sched_param *p) | ||
| 103 | { | ||
| 104 | int r; | ||
| 105 | //if (!t) | ||
| 106 | // t = pthread_self(); | ||
| 107 | |||
| 108 | if ((r = pthread_check(t)) != 0) | ||
| 109 | { | ||
| 110 | return r; | ||
| 111 | } | ||
| 112 | |||
| 113 | if (!p || !pol) | ||
| 114 | { | ||
| 115 | return EINVAL; | ||
| 116 | } | ||
| 117 | *pol = __pth_gpointer_locked (t)->sched_pol; | ||
| 118 | p->sched_priority = __pth_gpointer_locked (t)->sched.sched_priority; | ||
| 119 | |||
| 120 | return 0; | ||
| 121 | } | ||
| 122 | |||
| 123 | int pthread_setschedparam(pthread_t t, int pol, const struct sched_param *p) | ||
| 124 | { | ||
| 125 | struct _pthread_v *pv; | ||
| 126 | int r, pr = 0; | ||
| 127 | //if (!t.p) t = pthread_self(); | ||
| 128 | |||
| 129 | if ((r = pthread_check(t)) != 0) | ||
| 130 | return r; | ||
| 131 | |||
| 132 | if (pol < SCHED_MIN || pol > SCHED_MAX || p == NULL) | ||
| 133 | return EINVAL; | ||
| 134 | if (pol != SCHED_OTHER) | ||
| 135 | return ENOTSUP; | ||
| 136 | pr = p->sched_priority; | ||
| 137 | if (pr < sched_get_priority_min(pol) || pr > sched_get_priority_max(pol)) | ||
| 138 | return EINVAL; | ||
| 139 | |||
| 140 | /* See msdn: there are actually 7 priorities: | ||
| 141 | THREAD_PRIORITY_IDLE - -15 | ||
| 142 | THREAD_PRIORITY_LOWEST -2 | ||
| 143 | THREAD_PRIORITY_BELOW_NORMAL -1 | ||
| 144 | THREAD_PRIORITY_NORMAL 0 | ||
| 145 | THREAD_PRIORITY_ABOVE_NORMAL 1 | ||
| 146 | THREAD_PRIORITY_HIGHEST 2 | ||
| 147 | THREAD_PRIORITY_TIME_CRITICAL 15 | ||
| 148 | */ | ||
| 149 | if (pr <= THREAD_PRIORITY_IDLE) { | ||
| 150 | pr = THREAD_PRIORITY_IDLE; | ||
| 151 | } else if (pr <= THREAD_PRIORITY_LOWEST) { | ||
| 152 | pr = THREAD_PRIORITY_LOWEST; | ||
| 153 | } else if (pr >= THREAD_PRIORITY_TIME_CRITICAL) { | ||
| 154 | pr = THREAD_PRIORITY_TIME_CRITICAL; | ||
| 155 | } else if (pr >= THREAD_PRIORITY_HIGHEST) { | ||
| 156 | pr = THREAD_PRIORITY_HIGHEST; | ||
| 157 | } | ||
| 158 | pv = __pth_gpointer_locked (t); | ||
| 159 | if (SetThreadPriority(pv->h, pr)) { | ||
| 160 | pv->sched_pol = pol; | ||
| 161 | pv->sched.sched_priority = p->sched_priority; | ||
| 162 | } else | ||
| 163 | r = EINVAL; | ||
| 164 | return r; | ||
| 165 | } | ||
| 166 | |||
| 167 | int sched_getscheduler(pid_t pid) | ||
| 168 | { | ||
| 169 | if (pid != 0) | ||
| 170 | { | ||
| 171 | HANDLE h = NULL; | ||
| 172 | int selfPid = (int) GetCurrentProcessId (); | ||
| 173 | |||
| 174 | if (pid != (pid_t) selfPid && (h = OpenProcess (PROCESS_QUERY_INFORMATION, 0, (DWORD) pid)) == NULL) | ||
| 175 | { | ||
| 176 | 	 errno = (GetLastError () == (0xFF & ERROR_ACCESS_DENIED)) ? EPERM : ESRCH; | ||
| 177 | 	 return -1; | ||
| 178 | } | ||
| 179 | if (h) | ||
| 180 | 	 CloseHandle (h); | ||
| 181 | } | ||
| 182 | return SCHED_OTHER; | ||
| 183 | } | ||
| 184 | |||
| 185 | int sched_setscheduler(pid_t pid, int pol, const struct sched_param *param) | ||
| 186 | { | ||
| 187 | if (!param) | ||
| 188 | { | ||
| 189 | errno = EINVAL; | ||
| 190 | return -1; | ||
| 191 | } | ||
| 192 | if (pid != 0) | ||
| 193 | { | ||
| 194 | HANDLE h = NULL; | ||
| 195 | int selfPid = (int) GetCurrentProcessId (); | ||
| 196 | |||
| 197 | if (pid != (pid_t) selfPid && (h = OpenProcess (PROCESS_SET_INFORMATION, 0, (DWORD) pid)) == NULL) | ||
| 198 | { | ||
| 199 | 	 errno = (GetLastError () == (0xFF & ERROR_ACCESS_DENIED)) ? EPERM : ESRCH; | ||
| 200 | 	 return -1; | ||
| 201 | } | ||
| 202 | if (h) | ||
| 203 | CloseHandle (h); | ||
| 204 | } | ||
| 205 | |||
| 206 | if (pol != SCHED_OTHER) | ||
| 207 | { | ||
| 208 | errno = ENOSYS; | ||
| 209 | return -1; | ||
| 210 | } | ||
| 211 | return SCHED_OTHER; | ||
| 212 | } | ||
| 213 | |||
| 214 | int sched_yield(void) | ||
| 215 | { | ||
| 216 | Sleep(0); | ||
| 217 | return 0; | ||
| 218 | } | ||
lib/libc/mingw/winpthreads/sem.c created+354| ... | @@ -0,0 +1,354 @@ | ||
| 1 | /* | ||
| 2 | Copyright (c) 2011-2016 mingw-w64 project | ||
| 3 | |||
| 4 | Permission is hereby granted, free of charge, to any person obtaining a | ||
| 5 | copy of this software and associated documentation files (the "Software"), | ||
| 6 | to deal in the Software without restriction, including without limitation | ||
| 7 | the rights to use, copy, modify, merge, publish, distribute, sublicense, | ||
| 8 | and/or sell copies of the Software, and to permit persons to whom the | ||
| 9 | Software is furnished to do so, subject to the following conditions: | ||
| 10 | |||
| 11 | The above copyright notice and this permission notice shall be included in | ||
| 12 | all copies or substantial portions of the Software. | ||
| 13 | |||
| 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
| 15 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
| 16 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
| 17 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
| 18 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||
| 19 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||
| 20 | DEALINGS IN THE SOFTWARE. | ||
| 21 | */ | ||
| 22 | |||
| 23 | #include <windows.h> | ||
| 24 | #include <stdio.h> | ||
| 25 | #include <malloc.h> | ||
| 26 | #include "pthread.h" | ||
| 27 | #include "thread.h" | ||
| 28 | #include "misc.h" | ||
| 29 | #include "semaphore.h" | ||
| 30 | #include "sem.h" | ||
| 31 | #include "ref.h" | ||
| 32 | |||
| 33 | int do_sema_b_wait_intern (HANDLE sema, int nointerrupt, DWORD timeout); | ||
| 34 | |||
| 35 | static int | ||
| 36 | sem_result (int res) | ||
| 37 | { | ||
| 38 | if (res != 0) { | ||
| 39 | errno = res; | ||
| 40 | return -1; | ||
| 41 | } | ||
| 42 | return 0; | ||
| 43 | } | ||
| 44 | |||
| 45 | int | ||
| 46 | sem_init (sem_t *sem, int pshared, unsigned int value) | ||
| 47 | { | ||
| 48 | _sem_t *sv; | ||
| 49 | |||
| 50 | if (!sem || value > (unsigned int)SEM_VALUE_MAX) | ||
| 51 | return sem_result (EINVAL); | ||
| 52 | if (pshared != PTHREAD_PROCESS_PRIVATE) | ||
| 53 | return sem_result (EPERM); | ||
| 54 | |||
| 55 | if ((sv = (sem_t) calloc (1,sizeof (*sv))) == NULL) | ||
| 56 | return sem_result (ENOMEM); | ||
| 57 | |||
| 58 | sv->value = value; | ||
| 59 | if (pthread_mutex_init (&sv->vlock, NULL) != 0) | ||
| 60 | { | ||
| 61 | free (sv); | ||
| 62 | return sem_result (ENOSPC); | ||
| 63 | } | ||
| 64 | if ((sv->s = CreateSemaphore (NULL, 0, SEM_VALUE_MAX, NULL)) == NULL) | ||
| 65 | { | ||
| 66 | pthread_mutex_destroy (&sv->vlock); | ||
| 67 | free (sv); | ||
| 68 | return sem_result (ENOSPC); | ||
| 69 | } | ||
| 70 | |||
| 71 | sv->valid = LIFE_SEM; | ||
| 72 | *sem = sv; | ||
| 73 | return 0; | ||
| 74 | } | ||
| 75 | |||
| 76 | int | ||
| 77 | sem_destroy (sem_t *sem) | ||
| 78 | { | ||
| 79 | int r; | ||
| 80 | _sem_t *sv = NULL; | ||
| 81 | |||
| 82 | if (!sem || (sv = *sem) == NULL) | ||
| 83 | return sem_result (EINVAL); | ||
| 84 | if ((r = pthread_mutex_lock (&sv->vlock)) != 0) | ||
| 85 | return sem_result (r); | ||
| 86 | |||
| 87 | #if 0 | ||
| 88 | /* We don't wait for destroying a semaphore ... | ||
| 89 | or? */ | ||
| 90 | if (sv->value < 0) | ||
| 91 | { | ||
| 92 | pthread_mutex_unlock (&sv->vlock); | ||
| 93 | return sem_result (EBUSY); | ||
| 94 | } | ||
| 95 | #endif | ||
| 96 | |||
| 97 | if (!CloseHandle (sv->s)) | ||
| 98 | { | ||
| 99 | pthread_mutex_unlock (&sv->vlock); | ||
| 100 | return sem_result (EINVAL); | ||
| 101 | } | ||
| 102 | *sem = NULL; | ||
| 103 | sv->value = SEM_VALUE_MAX; | ||
| 104 | pthread_mutex_unlock(&sv->vlock); | ||
| 105 | Sleep (0); | ||
| 106 | while (pthread_mutex_destroy (&sv->vlock) == EBUSY) | ||
| 107 | Sleep (0); | ||
| 108 | sv->valid = DEAD_SEM; | ||
| 109 | free (sv); | ||
| 110 | return 0; | ||
| 111 | } | ||
| 112 | |||
| 113 | static int | ||
| 114 | sem_std_enter (sem_t *sem,_sem_t **svp, int do_test) | ||
| 115 | { | ||
| 116 | int r; | ||
| 117 | _sem_t *sv; | ||
| 118 | |||
| 119 | if (do_test) | ||
| 120 | pthread_testcancel (); | ||
| 121 | if (!sem) | ||
| 122 | return sem_result (EINVAL); | ||
| 123 | sv = *sem; | ||
| 124 | if (sv == NULL) | ||
| 125 | return sem_result (EINVAL); | ||
| 126 | |||
| 127 | if ((r = pthread_mutex_lock (&sv->vlock)) != 0) | ||
| 128 | return sem_result (r); | ||
| 129 | |||
| 130 | if (*sem == NULL) | ||
| 131 | { | ||
| 132 | pthread_mutex_unlock(&sv->vlock); | ||
| 133 | return sem_result (EINVAL); | ||
| 134 | } | ||
| 135 | *svp = sv; | ||
| 136 | return 0; | ||
| 137 | } | ||
| 138 | |||
| 139 | int | ||
| 140 | sem_trywait (sem_t *sem) | ||
| 141 | { | ||
| 142 | _sem_t *sv; | ||
| 143 | |||
| 144 | if (sem_std_enter (sem, &sv, 0) != 0) | ||
| 145 | return -1; | ||
| 146 | if (sv->value <= 0) | ||
| 147 | { | ||
| 148 | pthread_mutex_unlock (&sv->vlock); | ||
| 149 | return sem_result (EAGAIN); | ||
| 150 | } | ||
| 151 | sv->value--; | ||
| 152 | pthread_mutex_unlock (&sv->vlock); | ||
| 153 | |||
| 154 | return 0; | ||
| 155 | } | ||
| 156 | |||
| 157 | struct sSemTimedWait | ||
| 158 | { | ||
| 159 | sem_t *p; | ||
| 160 | int *ret; | ||
| 161 | }; | ||
| 162 | |||
| 163 | static void | ||
| 164 | clean_wait_sem (void *s) | ||
| 165 | { | ||
| 166 | struct sSemTimedWait *p = (struct sSemTimedWait *) s; | ||
| 167 | _sem_t *sv = NULL; | ||
| 168 | |||
| 169 | if (sem_std_enter (p->p, &sv, 0) != 0) | ||
| 170 | return; | ||
| 171 | |||
| 172 | if (WaitForSingleObject (sv->s, 0) != WAIT_OBJECT_0) | ||
| 173 | InterlockedIncrement (&sv->value); | ||
| 174 | else if (p->ret) | ||
| 175 | p->ret[0] = 0; | ||
| 176 | pthread_mutex_unlock (&sv->vlock); | ||
| 177 | } | ||
| 178 | |||
| 179 | int | ||
| 180 | sem_wait (sem_t *sem) | ||
| 181 | { | ||
| 182 | long cur_v; | ||
| 183 | int ret = 0; | ||
| 184 | _sem_t *sv; | ||
| 185 | HANDLE semh; | ||
| 186 | struct sSemTimedWait arg; | ||
| 187 | |||
| 188 | if (sem_std_enter (sem, &sv, 1) != 0) | ||
| 189 | return -1; | ||
| 190 | |||
| 191 | arg.ret = &ret; | ||
| 192 | arg.p = sem; | ||
| 193 | InterlockedDecrement (&sv->value); | ||
| 194 | cur_v = sv->value; | ||
| 195 | semh = sv->s; | ||
| 196 | pthread_mutex_unlock (&sv->vlock); | ||
| 197 | |||
| 198 | if (cur_v >= 0) | ||
| 199 | return 0; | ||
| 200 | else | ||
| 201 | { | ||
| 202 | pthread_cleanup_push (clean_wait_sem, (void *) &arg); | ||
| 203 | ret = do_sema_b_wait_intern (semh, 2, INFINITE); | ||
| 204 | pthread_cleanup_pop (ret); | ||
| 205 | if (ret == EINVAL) | ||
| 206 | return 0; | ||
| 207 | } | ||
| 208 | |||
| 209 | if (!ret) | ||
| 210 | return 0; | ||
| 211 | |||
| 212 | return sem_result (ret); | ||
| 213 | } | ||
| 214 | |||
| 215 | int | ||
| 216 | sem_timedwait (sem_t *sem, const struct timespec *t) | ||
| 217 | { | ||
| 218 | int cur_v, ret = 0; | ||
| 219 | DWORD dwr; | ||
| 220 | HANDLE semh; | ||
| 221 | _sem_t *sv; | ||
| 222 | struct sSemTimedWait arg; | ||
| 223 | |||
| 224 | if (!t) | ||
| 225 | return sem_wait (sem); | ||
| 226 | dwr = dwMilliSecs(_pthread_rel_time_in_ms (t)); | ||
| 227 | |||
| 228 | if (sem_std_enter (sem, &sv, 1) != 0) | ||
| 229 | return -1; | ||
| 230 | |||
| 231 | arg.ret = &ret; | ||
| 232 | arg.p = sem; | ||
| 233 | InterlockedDecrement (&sv->value); | ||
| 234 | cur_v = sv->value; | ||
| 235 | semh = sv->s; | ||
| 236 | pthread_mutex_unlock(&sv->vlock); | ||
| 237 | |||
| 238 | if (cur_v >= 0) | ||
| 239 | return 0; | ||
| 240 | else | ||
| 241 | { | ||
| 242 | pthread_cleanup_push (clean_wait_sem, (void *) &arg); | ||
| 243 | ret = do_sema_b_wait_intern (semh, 2, dwr); | ||
| 244 | pthread_cleanup_pop (ret); | ||
| 245 | if (ret == EINVAL) | ||
| 246 | return 0; | ||
| 247 | } | ||
| 248 | |||
| 249 | if (!ret) | ||
| 250 | return 0; | ||
| 251 | return sem_result (ret); | ||
| 252 | } | ||
| 253 | |||
| 254 | int | ||
| 255 | sem_post (sem_t *sem) | ||
| 256 | { | ||
| 257 | _sem_t *sv; | ||
| 258 | |||
| 259 | if (sem_std_enter (sem, &sv, 0) != 0) | ||
| 260 | return -1; | ||
| 261 | |||
| 262 | if (sv->value >= SEM_VALUE_MAX) | ||
| 263 | { | ||
| 264 | pthread_mutex_unlock (&sv->vlock); | ||
| 265 | return sem_result (ERANGE); | ||
| 266 | } | ||
| 267 | InterlockedIncrement (&sv->value); | ||
| 268 | if (sv->value > 0 || ReleaseSemaphore (sv->s, 1, NULL)) | ||
| 269 | { | ||
| 270 | pthread_mutex_unlock (&sv->vlock); | ||
| 271 | return 0; | ||
| 272 | } | ||
| 273 | InterlockedDecrement (&sv->value); | ||
| 274 | pthread_mutex_unlock (&sv->vlock); | ||
| 275 | |||
| 276 | return sem_result (EINVAL); | ||
| 277 | } | ||
| 278 | |||
| 279 | int | ||
| 280 | sem_post_multiple (sem_t *sem, int count) | ||
| 281 | { | ||
| 282 | int waiters_count; | ||
| 283 | _sem_t *sv; | ||
| 284 | |||
| 285 | if (count <= 0) | ||
| 286 | return sem_result (EINVAL); | ||
| 287 | if (sem_std_enter (sem, &sv, 0) != 0) | ||
| 288 | return -1; | ||
| 289 | |||
| 290 | if (sv->value > (SEM_VALUE_MAX - count)) | ||
| 291 | { | ||
| 292 | pthread_mutex_unlock (&sv->vlock); | ||
| 293 | return sem_result (ERANGE); | ||
| 294 | } | ||
| 295 | waiters_count = -sv->value; | ||
| 296 | sv->value += count; | ||
| 297 | /*InterlockedExchangeAdd((long*)&sv->value, (long) count);*/ | ||
| 298 | if (waiters_count <= 0 | ||
| 299 | || ReleaseSemaphore (sv->s, | ||
| 300 | 			 (waiters_count < count ? waiters_count | ||
| 301 | 			 			 : count), NULL)) | ||
| 302 | { | ||
| 303 | pthread_mutex_unlock(&sv->vlock); | ||
| 304 | return 0; | ||
| 305 | } | ||
| 306 | /*InterlockedExchangeAdd((long*)&sv->value, -((long) count));*/ | ||
| 307 | sv->value -= count; | ||
| 308 | pthread_mutex_unlock(&sv->vlock); | ||
| 309 | return sem_result (EINVAL); | ||
| 310 | } | ||
| 311 | |||
| 312 | sem_t * | ||
| 313 | sem_open (const char *name, int oflag, mode_t mode, unsigned int value) | ||
| 314 | { | ||
| 315 | sem_result (ENOSYS); | ||
| 316 | return NULL; | ||
| 317 | } | ||
| 318 | |||
| 319 | int | ||
| 320 | sem_close (sem_t *sem) | ||
| 321 | { | ||
| 322 | return sem_result (ENOSYS); | ||
| 323 | } | ||
| 324 | |||
| 325 | int | ||
| 326 | sem_unlink (const char *name) | ||
| 327 | { | ||
| 328 | return sem_result (ENOSYS); | ||
| 329 | } | ||
| 330 | |||
| 331 | int | ||
| 332 | sem_getvalue (sem_t *sem, int *sval) | ||
| 333 | { | ||
| 334 | _sem_t *sv; | ||
| 335 | int r; | ||
| 336 | |||
| 337 | if (!sval) | ||
| 338 | return sem_result (EINVAL); | ||
| 339 | |||
| 340 | if (!sem || (sv = *sem) == NULL) | ||
| 341 | return sem_result (EINVAL); | ||
| 342 | |||
| 343 | if ((r = pthread_mutex_lock (&sv->vlock)) != 0) | ||
| 344 | return sem_result (r); | ||
| 345 | if (*sem == NULL) | ||
| 346 | { | ||
| 347 | pthread_mutex_unlock (&sv->vlock); | ||
| 348 | return sem_result (EINVAL); | ||
| 349 | } | ||
| 350 | |||
| 351 | *sval = (int) sv->value; | ||
| 352 | pthread_mutex_unlock (&sv->vlock); | ||
| 353 | return 0; | ||
| 354 | } | ||
lib/libc/mingw/winpthreads/sem.h created+40| ... | @@ -0,0 +1,40 @@ | ||
| 1 | /* | ||
| 2 | Copyright (c) 2011-2016 mingw-w64 project | ||
| 3 | |||
| 4 | Permission is hereby granted, free of charge, to any person obtaining a | ||
| 5 | copy of this software and associated documentation files (the "Software"), | ||
| 6 | to deal in the Software without restriction, including without limitation | ||
| 7 | the rights to use, copy, modify, merge, publish, distribute, sublicense, | ||
| 8 | and/or sell copies of the Software, and to permit persons to whom the | ||
| 9 | Software is furnished to do so, subject to the following conditions: | ||
| 10 | |||
| 11 | The above copyright notice and this permission notice shall be included in | ||
| 12 | all copies or substantial portions of the Software. | ||
| 13 | |||
| 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
| 15 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
| 16 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
| 17 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
| 18 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||
| 19 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||
| 20 | DEALINGS IN THE SOFTWARE. | ||
| 21 | */ | ||
| 22 | |||
| 23 | #ifndef WIN_SEM | ||
| 24 | #define WIN_SEM | ||
| 25 | |||
| 26 | #include <windows.h> | ||
| 27 | |||
| 28 | #define LIFE_SEM 0xBAB1F00D | ||
| 29 | #define DEAD_SEM 0xDEADBEEF | ||
| 30 | |||
| 31 | typedef struct _sem_t _sem_t; | ||
| 32 | struct _sem_t | ||
| 33 | { | ||
| 34 | unsigned int valid; | ||
| 35 | HANDLE s; | ||
| 36 | volatile long value; | ||
| 37 | pthread_mutex_t vlock; | ||
| 38 | }; | ||
| 39 | |||
| 40 | #endif /* WIN_SEM */ | ||
lib/libc/mingw/winpthreads/spinlock.c created+74| ... | @@ -0,0 +1,74 @@ | ||
| 1 | /* | ||
| 2 | Copyright (c) 2013 mingw-w64 project | ||
| 3 | Copyright (c) 2015 Intel Corporation | ||
| 4 | |||
| 5 | Permission is hereby granted, free of charge, to any person obtaining a | ||
| 6 | copy of this software and associated documentation files (the "Software"), | ||
| 7 | to deal in the Software without restriction, including without limitation | ||
| 8 | the rights to use, copy, modify, merge, publish, distribute, sublicense, | ||
| 9 | and/or sell copies of the Software, and to permit persons to whom the | ||
| 10 | Software is furnished to do so, subject to the following conditions: | ||
| 11 | |||
| 12 | The above copyright notice and this permission notice shall be included in | ||
| 13 | all copies or substantial portions of the Software. | ||
| 14 | |||
| 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
| 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
| 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
| 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
| 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||
| 20 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||
| 21 | DEALINGS IN THE SOFTWARE. | ||
| 22 | */ | ||
| 23 | |||
| 24 | #include <windows.h> | ||
| 25 | #include "pthread.h" | ||
| 26 | #include "misc.h" | ||
| 27 | |||
| 28 | /* We use the pthread_spinlock_t itself as a lock: | ||
| 29 | -1 is free, 0 is locked. | ||
| 30 | (This is dictated by PTHREAD_SPINLOCK_INITIALIZER, which we can't change | ||
| 31 | without breaking binary compatibility.) */ | ||
| 32 | typedef intptr_t spinlock_word_t; | ||
| 33 | |||
| 34 | int | ||
| 35 | pthread_spin_init (pthread_spinlock_t *lock, int pshared) | ||
| 36 | { | ||
| 37 | spinlock_word_t *lk = (spinlock_word_t *)lock; | ||
| 38 | *lk = -1; | ||
| 39 | return 0; | ||
| 40 | } | ||
| 41 | |||
| 42 | |||
| 43 | int | ||
| 44 | pthread_spin_destroy (pthread_spinlock_t *lock) | ||
| 45 | { | ||
| 46 | return 0; | ||
| 47 | } | ||
| 48 | |||
| 49 | int | ||
| 50 | pthread_spin_lock (pthread_spinlock_t *lock) | ||
| 51 | { | ||
| 52 | volatile spinlock_word_t *lk = (volatile spinlock_word_t *)lock; | ||
| 53 | while (unlikely(InterlockedExchangePointer((PVOID volatile *)lk, 0) == 0)) | ||
| 54 | do { | ||
| 55 | YieldProcessor(); | ||
| 56 | } while (*lk == 0); | ||
| 57 | return 0; | ||
| 58 | } | ||
| 59 | |||
| 60 | int | ||
| 61 | pthread_spin_trylock (pthread_spinlock_t *lock) | ||
| 62 | { | ||
| 63 | spinlock_word_t *lk = (spinlock_word_t *)lock; | ||
| 64 | return InterlockedExchangePointer((PVOID volatile *)lk, 0) == 0 ? EBUSY : 0; | ||
| 65 | } | ||
| 66 | |||
| 67 | |||
| 68 | int | ||
| 69 | pthread_spin_unlock (pthread_spinlock_t *lock) | ||
| 70 | { | ||
| 71 | volatile spinlock_word_t *lk = (volatile spinlock_word_t *)lock; | ||
| 72 | *lk = -1; | ||
| 73 | return 0; | ||
| 74 | } | ||
lib/libc/mingw/winpthreads/thread.c created+1929| ... | @@ -0,0 +1,1929 @@ | ||
| 1 | /* | ||
| 2 | Copyright (c) 2011-2016 mingw-w64 project | ||
| 3 | |||
| 4 | Permission is hereby granted, free of charge, to any person obtaining a | ||
| 5 | copy of this software and associated documentation files (the "Software"), | ||
| 6 | to deal in the Software without restriction, including without limitation | ||
| 7 | the rights to use, copy, modify, merge, publish, distribute, sublicense, | ||
| 8 | and/or sell copies of the Software, and to permit persons to whom the | ||
| 9 | Software is furnished to do so, subject to the following conditions: | ||
| 10 | |||
| 11 | The above copyright notice and this permission notice shall be included in | ||
| 12 | all copies or substantial portions of the Software. | ||
| 13 | |||
| 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
| 15 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
| 16 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
| 17 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
| 18 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||
| 19 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||
| 20 | DEALINGS IN THE SOFTWARE. | ||
| 21 | */ | ||
| 22 | |||
| 23 | #include <windows.h> | ||
| 24 | #include <strsafe.h> | ||
| 25 | #include <stdio.h> | ||
| 26 | #include <stdlib.h> | ||
| 27 | #include <malloc.h> | ||
| 28 | #include <signal.h> | ||
| 29 | #include "pthread.h" | ||
| 30 | #include "thread.h" | ||
| 31 | #include "misc.h" | ||
| 32 | #include "winpthread_internal.h" | ||
| 33 | |||
| 34 | static _pthread_v *__pthread_self_lite (void); | ||
| 35 | |||
| 36 | void (**_pthread_key_dest)(void *) = NULL; | ||
| 37 | |||
| 38 | static volatile long _pthread_cancelling; | ||
| 39 | static int _pthread_concur; | ||
| 40 | |||
| 41 | /* FIXME Will default to zero as needed */ | ||
| 42 | static pthread_once_t _pthread_tls_once; | ||
| 43 | static DWORD _pthread_tls = 0xffffffff; | ||
| 44 | |||
| 45 | static pthread_rwlock_t _pthread_key_lock = PTHREAD_RWLOCK_INITIALIZER; | ||
| 46 | static unsigned long _pthread_key_max=0L; | ||
| 47 | static unsigned long _pthread_key_sch=0L; | ||
| 48 | |||
| 49 | static _pthread_v *pthr_root = NULL, *pthr_last = NULL; | ||
| 50 | static pthread_mutex_t mtx_pthr_locked = PTHREAD_RECURSIVE_MUTEX_INITIALIZER; | ||
| 51 | |||
| 52 | static __pthread_idlist *idList = NULL; | ||
| 53 | static size_t idListCnt = 0; | ||
| 54 | static size_t idListMax = 0; | ||
| 55 | static pthread_t idListNextId = 0; | ||
| 56 | |||
| 57 | #if !defined(_MSC_VER) | ||
| 58 | #define USE_VEH_FOR_MSC_SETTHREADNAME | ||
| 59 | #endif | ||
| 60 | #if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) | ||
| 61 | /* forbidden RemoveVectoredExceptionHandler/AddVectoredExceptionHandler APIs */ | ||
| 62 | #undef USE_VEH_FOR_MSC_SETTHREADNAME | ||
| 63 | #endif | ||
| 64 | |||
| 65 | #if defined(USE_VEH_FOR_MSC_SETTHREADNAME) | ||
| 66 | static void *SetThreadName_VEH_handle = NULL; | ||
| 67 | |||
| 68 | static LONG __stdcall | ||
| 69 | SetThreadName_VEH (PEXCEPTION_POINTERS ExceptionInfo) | ||
| 70 | { | ||
| 71 | if (ExceptionInfo->ExceptionRecord != NULL && | ||
| 72 | ExceptionInfo->ExceptionRecord->ExceptionCode == EXCEPTION_SET_THREAD_NAME) | ||
| 73 | return EXCEPTION_CONTINUE_EXECUTION; | ||
| 74 | |||
| 75 | return EXCEPTION_CONTINUE_SEARCH; | ||
| 76 | } | ||
| 77 | |||
| 78 | static PVOID (WINAPI *AddVectoredExceptionHandlerFuncPtr) (ULONG, PVECTORED_EXCEPTION_HANDLER); | ||
| 79 | static ULONG (WINAPI *RemoveVectoredExceptionHandlerFuncPtr) (PVOID); | ||
| 80 | |||
| 81 | static void __attribute__((constructor)) | ||
| 82 | ctor (void) | ||
| 83 | { | ||
| 84 | HMODULE module = GetModuleHandleA("kernel32.dll"); | ||
| 85 | if (module) { | ||
| 86 | AddVectoredExceptionHandlerFuncPtr = (__typeof__(AddVectoredExceptionHandlerFuncPtr)) GetProcAddress(module, "AddVectoredExceptionHandler"); | ||
| 87 | RemoveVectoredExceptionHandlerFuncPtr = (__typeof__(RemoveVectoredExceptionHandlerFuncPtr)) GetProcAddress(module, "RemoveVectoredExceptionHandler"); | ||
| 88 | } | ||
| 89 | } | ||
| 90 | #endif | ||
| 91 | |||
| 92 | typedef struct _THREADNAME_INFO | ||
| 93 | { | ||
| 94 | DWORD dwType;	/* must be 0x1000 */ | ||
| 95 | LPCSTR szName;	/* pointer to name (in user addr space) */ | ||
| 96 | DWORD dwThreadID;	/* thread ID (-1=caller thread) */ | ||
| 97 | DWORD dwFlags;	/* reserved for future use, must be zero */ | ||
| 98 | } THREADNAME_INFO; | ||
| 99 | |||
| 100 | static void | ||
| 101 | SetThreadName (DWORD dwThreadID, LPCSTR szThreadName) | ||
| 102 | { | ||
| 103 | THREADNAME_INFO info; | ||
| 104 | DWORD infosize; | ||
| 105 | |||
| 106 | info.dwType = 0x1000; | ||
| 107 | info.szName = szThreadName; | ||
| 108 | info.dwThreadID = dwThreadID; | ||
| 109 | info.dwFlags = 0; | ||
| 110 | |||
| 111 | infosize = sizeof (info) / sizeof (ULONG_PTR); | ||
| 112 | |||
| 113 | #if defined(_MSC_VER) && !defined (USE_VEH_FOR_MSC_SETTHREADNAME) | ||
| 114 | __try | ||
| 115 | { | ||
| 116 | RaiseException (EXCEPTION_SET_THREAD_NAME, 0, infosize, (ULONG_PTR *)&info); | ||
| 117 | } | ||
| 118 | __except (EXCEPTION_EXECUTE_HANDLER) | ||
| 119 | { | ||
| 120 | } | ||
| 121 | #else | ||
| 122 | /* Without a debugger we *must* have an exception handler, | ||
| 123 | * otherwise raising an exception will crash the process. | ||
| 124 | */ | ||
| 125 | #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) | ||
| 126 | if ((!IsDebuggerPresent ()) && (SetThreadName_VEH_handle == NULL)) | ||
| 127 | #else | ||
| 128 | if (!IsDebuggerPresent ()) | ||
| 129 | #endif | ||
| 130 | return; | ||
| 131 | |||
| 132 | RaiseException (EXCEPTION_SET_THREAD_NAME, 0, infosize, (ULONG_PTR *) &info); | ||
| 133 | #endif | ||
| 134 | } | ||
| 135 | |||
| 136 | /* Search the list idList for an element with identifier ID. If | ||
| 137 | found, its associated _pthread_v pointer is returned, otherwise | ||
| 138 | NULL. | ||
| 139 | NOTE: This method is not locked. */ | ||
| 140 | static struct _pthread_v * | ||
| 141 | __pthread_get_pointer (pthread_t id) | ||
| 142 | { | ||
| 143 | size_t l, r, p; | ||
| 144 | if (!idListCnt) | ||
| 145 | return NULL; | ||
| 146 | if (idListCnt == 1) | ||
| 147 | return (idList[0].id == id ? idList[0].ptr : NULL); | ||
| 148 | l = 0; r = idListCnt - 1; | ||
| 149 | while (l <= r) | ||
| 150 | { | ||
| 151 | p = (l + r) >> 1; | ||
| 152 | if (idList[p].id == id) | ||
| 153 | return idList[p].ptr; | ||
| 154 | else if (idList[p].id > id) | ||
| 155 | { | ||
| 156 | 	if (p == l) | ||
| 157 | 	 return NULL; | ||
| 158 | 	r = p - 1; | ||
| 159 | } | ||
| 160 | else | ||
| 161 | { | ||
| 162 | 	l = p + 1; | ||
| 163 | } | ||
| 164 | } | ||
| 165 | |||
| 166 | return NULL; | ||
| 167 | } | ||
| 168 | |||
| 169 | static void | ||
| 170 | __pth_remove_use_for_key (pthread_key_t key) | ||
| 171 | { | ||
| 172 | int i; | ||
| 173 | |||
| 174 | pthread_mutex_lock (&mtx_pthr_locked); | ||
| 175 | for (i = 0; i < idListCnt; i++) | ||
| 176 | { | ||
| 177 | if (idList[i].ptr != NULL | ||
| 178 | && idList[i].ptr->keyval != NULL | ||
| 179 | && key < idList[i].ptr->keymax) | ||
| 180 | { | ||
| 181 | 	 idList[i].ptr->keyval[key] = NULL; | ||
| 182 | 	 idList[i].ptr->keyval_set[key] = 0; | ||
| 183 | 	} | ||
| 184 | } | ||
| 185 | pthread_mutex_unlock (&mtx_pthr_locked); | ||
| 186 | } | ||
| 187 | |||
| 188 | /* Search the list idList for an element with identifier ID. If | ||
| 189 | found, its associated _pthread_v pointer is returned, otherwise | ||
| 190 | NULL. | ||
| 191 | NOTE: This method uses lock mtx_pthr_locked. */ | ||
| 192 | struct _pthread_v * | ||
| 193 | __pth_gpointer_locked (pthread_t id) | ||
| 194 | { | ||
| 195 | struct _pthread_v *ret; | ||
| 196 | if (!id) | ||
| 197 | return NULL; | ||
| 198 | pthread_mutex_lock (&mtx_pthr_locked); | ||
| 199 | ret = __pthread_get_pointer (id); | ||
| 200 | pthread_mutex_unlock (&mtx_pthr_locked); | ||
| 201 | return ret; | ||
| 202 | } | ||
| 203 | |||
| 204 | /* Registers in the list idList an element with _pthread_v pointer | ||
| 205 | and creates and unique identifier ID. If successful created the | ||
| 206 | ID of this element is returned, otherwise on failure zero ID gets | ||
| 207 | returned. | ||
| 208 | NOTE: This method is not locked. */ | ||
| 209 | static pthread_t | ||
| 210 | __pthread_register_pointer (struct _pthread_v *ptr) | ||
| 211 | { | ||
| 212 | __pthread_idlist *e; | ||
| 213 | size_t i; | ||
| 214 | |||
| 215 | if (!ptr) | ||
| 216 | return 0; | ||
| 217 | /* Check if a resize of list is necessary. */ | ||
| 218 | if (idListCnt >= idListMax) | ||
| 219 | { | ||
| 220 | if (!idListCnt) | ||
| 221 | { | ||
| 222 | 	 e = (__pthread_idlist *) malloc (sizeof (__pthread_idlist) * 16); | ||
| 223 | 	 if (!e) | ||
| 224 | 	 return 0; | ||
| 225 | 	 idListMax = 16; | ||
| 226 | 	 idList = e; | ||
| 227 | 	} | ||
| 228 | else | ||
| 229 | { | ||
| 230 | 	 e = (__pthread_idlist *) realloc (idList, sizeof (__pthread_idlist) * (idListMax + 16)); | ||
| 231 | 	 if (!e) | ||
| 232 | 	 return 0; | ||
| 233 | 	 idListMax += 16; | ||
| 234 | 	 idList = e; | ||
| 235 | 	} | ||
| 236 | } | ||
| 237 | do | ||
| 238 | { | ||
| 239 | ++idListNextId; | ||
| 240 | /* If two MSB are set we reset to id 1. We need to check here bits | ||
| 241 | to avoid gcc's no-overflow issue on increment. Additionally we | ||
| 242 | need to handle different size of pthread_t on 32-bit/64-bit. */ | ||
| 243 | if ((idListNextId & ( ((pthread_t) 1) << ((sizeof (pthread_t) * 8) - 2))) != 0) | ||
| 244 | idListNextId = 1; | ||
| 245 | } | ||
| 246 | while (idListNextId == 0 || __pthread_get_pointer (idListNextId)); | ||
| 247 | /* We assume insert at end of list. */ | ||
| 248 | i = idListCnt; | ||
| 249 | if (i != 0) | ||
| 250 | { | ||
| 251 | /* Find position we can actual insert sorted. */ | ||
| 252 | while (i > 0 && idList[i - 1].id > idListNextId) | ||
| 253 | --i; | ||
| 254 | if (i != idListCnt) | ||
| 255 | 	memmove (&idList[i + 1], &idList[i], sizeof (__pthread_idlist) * (idListCnt - i)); | ||
| 256 | } | ||
| 257 | idList[i].id = idListNextId; | ||
| 258 | idList[i].ptr = ptr; | ||
| 259 | ++idListCnt; | ||
| 260 | return idListNextId; | ||
| 261 | } | ||
| 262 | |||
| 263 | /* Deregisters in the list idList an element with identifier ID and | ||
| 264 | returns its _pthread_v pointer on success. Otherwise NULL is returned. | ||
| 265 | NOTE: This method is not locked. */ | ||
| 266 | static struct _pthread_v * | ||
| 267 | __pthread_deregister_pointer (pthread_t id) | ||
| 268 | { | ||
| 269 | size_t l, r, p; | ||
| 270 | if (!idListCnt) | ||
| 271 | return NULL; | ||
| 272 | l = 0; r = idListCnt - 1; | ||
| 273 | while (l <= r) | ||
| 274 | { | ||
| 275 | p = (l + r) >> 1; | ||
| 276 | if (idList[p].id == id) | ||
| 277 | { | ||
| 278 | 	struct _pthread_v *ret = idList[p].ptr; | ||
| 279 | 	p++; | ||
| 280 | 	if (p < idListCnt) | ||
| 281 | 	 memmove (&idList[p - 1], &idList[p], sizeof (__pthread_idlist) * (idListCnt - p)); | ||
| 282 | 	--idListCnt; | ||
| 283 | 	/* Is this last element in list then free list. */ | ||
| 284 | 	if (idListCnt == 0) | ||
| 285 | 	{ | ||
| 286 | 	 free (idList); | ||
| 287 | 	 idListCnt = idListMax = 0; | ||
| 288 | 	} | ||
| 289 | 	return ret; | ||
| 290 | } | ||
| 291 | else if (idList[p].id > id) | ||
| 292 | { | ||
| 293 | 	if (p == l) | ||
| 294 | 	 return NULL; | ||
| 295 | 	r = p - 1; | ||
| 296 | } | ||
| 297 | else | ||
| 298 | { | ||
| 299 | 	l = p + 1; | ||
| 300 | } | ||
| 301 | } | ||
| 302 | return NULL; | ||
| 303 | } | ||
| 304 | |||
| 305 | /* Save a _pthread_v element for reuse in pool. */ | ||
| 306 | static void | ||
| 307 | push_pthread_mem (_pthread_v *sv) | ||
| 308 | { | ||
| 309 | if (!sv || sv->next != NULL) | ||
| 310 | return; | ||
| 311 | pthread_mutex_lock (&mtx_pthr_locked); | ||
| 312 | if (sv->x != 0) | ||
| 313 | __pthread_deregister_pointer (sv->x); | ||
| 314 | if (sv->keyval) | ||
| 315 | free (sv->keyval); | ||
| 316 | if (sv->keyval_set) | ||
| 317 | free (sv->keyval_set); | ||
| 318 | if (sv->thread_name) | ||
| 319 | free (sv->thread_name); | ||
| 320 | memset (sv, 0, sizeof(struct _pthread_v)); | ||
| 321 | if (pthr_last == NULL) | ||
| 322 | pthr_root = pthr_last = sv; | ||
| 323 | else | ||
| 324 | { | ||
| 325 | pthr_last->next = sv; | ||
| 326 | pthr_last = sv; | ||
| 327 | } | ||
| 328 | pthread_mutex_unlock (&mtx_pthr_locked); | ||
| 329 | } | ||
| 330 | |||
| 331 | /* Get a _pthread_v element from pool, or allocate it. | ||
| 332 | Note the unique identifier is created for the element here, too. */ | ||
| 333 | static _pthread_v * | ||
| 334 | pop_pthread_mem (void) | ||
| 335 | { | ||
| 336 | _pthread_v *r = NULL; | ||
| 337 | |||
| 338 | pthread_mutex_lock (&mtx_pthr_locked); | ||
| 339 | if ((r = pthr_root) == NULL) | ||
| 340 | { | ||
| 341 | if ((r = (_pthread_v *)calloc (1,sizeof(struct _pthread_v))) != NULL) | ||
| 342 | 	{ | ||
| 343 | 	 r->x = __pthread_register_pointer (r); | ||
| 344 | 	 if (r->x == 0) | ||
| 345 | 	 { | ||
| 346 | 	 free (r); | ||
| 347 | 	 r = NULL; | ||
| 348 | 	 } | ||
| 349 | 	} | ||
| 350 | pthread_mutex_unlock (&mtx_pthr_locked); | ||
| 351 | return r; | ||
| 352 | } | ||
| 353 | r->x = __pthread_register_pointer (r); | ||
| 354 | if (r->x == 0) | ||
| 355 | r = NULL; | ||
| 356 | else | ||
| 357 | { | ||
| 358 | if((pthr_root = r->next) == NULL) | ||
| 359 | 	pthr_last = NULL; | ||
| 360 | |||
| 361 | r->next = NULL; | ||
| 362 | } | ||
| 363 | pthread_mutex_unlock (&mtx_pthr_locked); | ||
| 364 | return r; | ||
| 365 | } | ||
| 366 | |||
| 367 | /* Free memory consumed in _pthread_v pointer pool. */ | ||
| 368 | static void | ||
| 369 | free_pthread_mem (void) | ||
| 370 | { | ||
| 371 | #if 0 | ||
| 372 | _pthread_v *t; | ||
| 373 | |||
| 374 | pthread_mutex_lock (&mtx_pthr_locked); | ||
| 375 | t = pthr_root; | ||
| 376 | while (t != NULL) | ||
| 377 | { | ||
| 378 | _pthread_v *sv = t; | ||
| 379 | t = t->next; | ||
| 380 | if (sv->x != 0 && sv->ended == 0 && sv->valid != DEAD_THREAD) | ||
| 381 | { | ||
| 382 | 	pthread_mutex_unlock (&mtx_pthr_locked); | ||
| 383 | 	pthread_cancel (t->x); | ||
| 384 | 	Sleep (0); | ||
| 385 | 	pthread_mutex_lock (&mtx_pthr_locked); | ||
| 386 | 	t = pthr_root; | ||
| 387 | 	continue; | ||
| 388 | } | ||
| 389 | else if (sv->x != 0 && sv->valid != DEAD_THREAD) | ||
| 390 | { | ||
| 391 | 	pthread_mutex_unlock (&mtx_pthr_locked); | ||
| 392 | 	Sleep (0); | ||
| 393 | 	pthread_mutex_lock (&mtx_pthr_locked); | ||
| 394 | 	continue; | ||
| 395 | } | ||
| 396 | if (sv->x != 0) | ||
| 397 | __pthread_deregister_pointer (sv->x); | ||
| 398 | sv->x = 0; | ||
| 399 | free (sv); | ||
| 400 | pthr_root = t; | ||
| 401 | } | ||
| 402 | pthread_mutex_unlock (&mtx_pthr_locked); | ||
| 403 | #endif | ||
| 404 | return; | ||
| 405 | } | ||
| 406 | |||
| 407 | static void | ||
| 408 | replace_spin_keys (pthread_spinlock_t *old, pthread_spinlock_t new) | ||
| 409 | { | ||
| 410 | if (old == NULL) | ||
| 411 | return; | ||
| 412 | |||
| 413 | if (EPERM == pthread_spin_destroy (old)) | ||
| 414 | { | ||
| 415 | #define THREADERR "Error cleaning up spin_keys for thread %lu.\n" | ||
| 416 | char threaderr[sizeof(THREADERR) + 8] = { 0 }; | ||
| 417 | snprintf(threaderr, sizeof(threaderr), THREADERR, GetCurrentThreadId()); | ||
| 418 | #undef THREADERR | ||
| 419 | OutputDebugStringA (threaderr); | ||
| 420 | abort (); | ||
| 421 | } | ||
| 422 | |||
| 423 | *old = new; | ||
| 424 | } | ||
| 425 | |||
| 426 | /* Hook for TLS-based deregistration/registration of thread. */ | ||
| 427 | static void WINAPI | ||
| 428 | __dyn_tls_pthread (HANDLE hDllHandle, DWORD dwReason, LPVOID lpreserved) | ||
| 429 | { | ||
| 430 | _pthread_v *t = NULL; | ||
| 431 | pthread_spinlock_t new_spin_keys = PTHREAD_SPINLOCK_INITIALIZER; | ||
| 432 | |||
| 433 | if (dwReason == DLL_PROCESS_DETACH) | ||
| 434 | { | ||
| 435 | #if defined(USE_VEH_FOR_MSC_SETTHREADNAME) | ||
| 436 | if (lpreserved == NULL && SetThreadName_VEH_handle != NULL) | ||
| 437 | { | ||
| 438 | if (RemoveVectoredExceptionHandlerFuncPtr != NULL) | ||
| 439 | RemoveVectoredExceptionHandlerFuncPtr (SetThreadName_VEH_handle); | ||
| 440 | SetThreadName_VEH_handle = NULL; | ||
| 441 | } | ||
| 442 | #endif | ||
| 443 | free_pthread_mem (); | ||
| 444 | } | ||
| 445 | else if (dwReason == DLL_PROCESS_ATTACH) | ||
| 446 | { | ||
| 447 | #if defined(USE_VEH_FOR_MSC_SETTHREADNAME) | ||
| 448 | if (AddVectoredExceptionHandlerFuncPtr != NULL) | ||
| 449 | SetThreadName_VEH_handle = AddVectoredExceptionHandlerFuncPtr (1, &SetThreadName_VEH); | ||
| 450 | else | ||
| 451 | SetThreadName_VEH_handle = NULL; | ||
| 452 | /* Can't do anything on error anyway, check for NULL later */ | ||
| 453 | #endif | ||
| 454 | } | ||
| 455 | else if (dwReason == DLL_THREAD_DETACH) | ||
| 456 | { | ||
| 457 | if (_pthread_tls != 0xffffffff) | ||
| 458 | 	t = (_pthread_v *)TlsGetValue(_pthread_tls); | ||
| 459 | if (t && t->thread_noposix != 0) | ||
| 460 | 	{ | ||
| 461 | 	 _pthread_cleanup_dest (t->x); | ||
| 462 | 	 if (t->h != NULL) | ||
| 463 | 	 { | ||
| 464 | 	 CloseHandle (t->h); | ||
| 465 | 	 if (t->evStart) | ||
| 466 | 		CloseHandle (t->evStart); | ||
| 467 | 	 t->evStart = NULL; | ||
| 468 | 	 t->h = NULL; | ||
| 469 | 	 } | ||
| 470 | 	 pthread_mutex_destroy (&t->p_clock); | ||
| 471 | 	 replace_spin_keys (&t->spin_keys, new_spin_keys); | ||
| 472 | 	 push_pthread_mem (t); | ||
| 473 | 	 t = NULL; | ||
| 474 | 	 TlsSetValue (_pthread_tls, t); | ||
| 475 | 	} | ||
| 476 | else if (t && t->ended == 0) | ||
| 477 | 	{ | ||
| 478 | 	 if (t->evStart) | ||
| 479 | 	 CloseHandle(t->evStart); | ||
| 480 | 	 t->evStart = NULL; | ||
| 481 | 	 t->ended = 1; | ||
| 482 | 	 _pthread_cleanup_dest (t->x); | ||
| 483 | 	 if ((t->p_state & PTHREAD_CREATE_DETACHED) == PTHREAD_CREATE_DETACHED) | ||
| 484 | 	 { | ||
| 485 | 	 t->valid = DEAD_THREAD; | ||
| 486 | 	 if (t->h != NULL) | ||
| 487 | 		CloseHandle (t->h); | ||
| 488 | 	 t->h = NULL; | ||
| 489 | 	 pthread_mutex_destroy(&t->p_clock); | ||
| 490 | 	 replace_spin_keys (&t->spin_keys, new_spin_keys); | ||
| 491 | 	 push_pthread_mem (t); | ||
| 492 | 	 t = NULL; | ||
| 493 | 	 TlsSetValue (_pthread_tls, t); | ||
| 494 | 	 return; | ||
| 495 | 	 } | ||
| 496 | 	 pthread_mutex_destroy(&t->p_clock); | ||
| 497 | 	 replace_spin_keys (&t->spin_keys, new_spin_keys); | ||
| 498 | 	} | ||
| 499 | else if (t) | ||
| 500 | 	{ | ||
| 501 | 	 if (t->evStart) | ||
| 502 | 	 CloseHandle (t->evStart); | ||
| 503 | 	 t->evStart = NULL; | ||
| 504 | 	 pthread_mutex_destroy (&t->p_clock); | ||
| 505 | 	 replace_spin_keys (&t->spin_keys, new_spin_keys); | ||
| 506 | 	} | ||
| 507 | } | ||
| 508 | } | ||
| 509 | |||
| 510 | /* TLS-runtime section variable. */ | ||
| 511 | |||
| 512 | #if defined(_MSC_VER) | ||
| 513 | /* Force a reference to _tls_used to make the linker create the TLS | ||
| 514 | * directory if it's not already there. (e.g. if __declspec(thread) | ||
| 515 | * is not used). | ||
| 516 | * Force a reference to __xl_f to prevent whole program optimization | ||
| 517 | * from discarding the variable. */ | ||
| 518 | |||
| 519 | /* On x86, symbols are prefixed with an underscore. */ | ||
| 520 | # if defined(_M_IX86) | ||
| 521 | # pragma comment(linker, "/include:__tls_used") | ||
| 522 | # pragma comment(linker, "/include:___xl_f") | ||
| 523 | # else | ||
| 524 | # pragma comment(linker, "/include:_tls_used") | ||
| 525 | # pragma comment(linker, "/include:__xl_f") | ||
| 526 | # endif | ||
| 527 | |||
| 528 | /* .CRT$XLA to .CRT$XLZ is an array of PIMAGE_TLS_CALLBACK | ||
| 529 | * pointers. Pick an arbitrary location for our callback. | ||
| 530 | * | ||
| 531 | * See VC\...\crt\src\vcruntime\tlssup.cpp for reference. */ | ||
| 532 | |||
| 533 | # pragma section(".CRT$XLF", long, read) | ||
| 534 | #endif | ||
| 535 | |||
| 536 | WINPTHREADS_ATTRIBUTE((WINPTHREADS_SECTION(".CRT$XLF"))) | ||
| 537 | extern const PIMAGE_TLS_CALLBACK __xl_f; | ||
| 538 | const PIMAGE_TLS_CALLBACK __xl_f = __dyn_tls_pthread; | ||
| 539 | |||
| 540 | |||
| 541 | #ifdef WINPTHREAD_DBG | ||
| 542 | static int print_state = 0; | ||
| 543 | void thread_print_set (int state) | ||
| 544 | { | ||
| 545 | print_state = state; | ||
| 546 | } | ||
| 547 | |||
| 548 | void | ||
| 549 | thread_print (volatile pthread_t t, char *txt) | ||
| 550 | { | ||
| 551 | if (!print_state) | ||
| 552 | return; | ||
| 553 | if (!t) | ||
| 554 | printf("T%p %lu %s\n",NULL,GetCurrentThreadId(),txt); | ||
| 555 | else | ||
| 556 | { | ||
| 557 | 	printf("T%p %lu V=%0X H=%p %s\n", | ||
| 558 | 	 (void *) __pth_gpointer_locked (t), | ||
| 559 | 	 GetCurrentThreadId(), | ||
| 560 | 	 (__pth_gpointer_locked (t))->valid, | ||
| 561 | 	 (__pth_gpointer_locked (t))->h, | ||
| 562 | 	 txt | ||
| 563 | 	 ); | ||
| 564 | } | ||
| 565 | } | ||
| 566 | #endif | ||
| 567 | |||
| 568 | /* Internal collect-once structure. */ | ||
| 569 | typedef struct collect_once_t { | ||
| 570 | pthread_once_t *o; | ||
| 571 | pthread_mutex_t m; | ||
| 572 | int count; | ||
| 573 | struct collect_once_t *next; | ||
| 574 | } collect_once_t; | ||
| 575 | |||
| 576 | static collect_once_t *once_obj = NULL; | ||
| 577 | |||
| 578 | static pthread_spinlock_t once_global = PTHREAD_SPINLOCK_INITIALIZER; | ||
| 579 | |||
| 580 | static collect_once_t * | ||
| 581 | enterOnceObject (pthread_once_t *o) | ||
| 582 | { | ||
| 583 | collect_once_t *c, *p = NULL; | ||
| 584 | pthread_spin_lock (&once_global); | ||
| 585 | c = once_obj; | ||
| 586 | while (c != NULL && c->o != o) | ||
| 587 | { | ||
| 588 | c = (p = c)->next; | ||
| 589 | } | ||
| 590 | if (!c) | ||
| 591 | { | ||
| 592 | c = (collect_once_t *) calloc(1,sizeof(collect_once_t)); | ||
| 593 | c->o = o; | ||
| 594 | c->count = 1; | ||
| 595 | if (!p) | ||
| 596 | once_obj = c; | ||
| 597 | else | ||
| 598 | p->next = c; | ||
| 599 | pthread_mutex_init(&c->m, NULL); | ||
| 600 | } | ||
| 601 | else | ||
| 602 | c->count += 1; | ||
| 603 | pthread_spin_unlock (&once_global); | ||
| 604 | return c; | ||
| 605 | } | ||
| 606 | |||
| 607 | static void | ||
| 608 | leaveOnceObject (collect_once_t *c) | ||
| 609 | { | ||
| 610 | collect_once_t *h, *p = NULL; | ||
| 611 | if (!c) | ||
| 612 | return; | ||
| 613 | pthread_spin_lock (&once_global); | ||
| 614 | h = once_obj; | ||
| 615 | while (h != NULL && c != h) | ||
| 616 | h = (p = h)->next; | ||
| 617 | |||
| 618 | if (h) | ||
| 619 | { | ||
| 620 | c->count -= 1; | ||
| 621 | if (c->count == 0) | ||
| 622 | 	{ | ||
| 623 | 	 pthread_mutex_destroy(&c->m); | ||
| 624 | 	 if (!p) | ||
| 625 | 	 once_obj = c->next; | ||
| 626 | 	 else | ||
| 627 | 	 p->next = c->next; | ||
| 628 | 	 free (c); | ||
| 629 | 	} | ||
| 630 | } | ||
| 631 | else | ||
| 632 | fprintf(stderr, "%p not found?!?!\n", (void *) c); | ||
| 633 | pthread_spin_unlock (&once_global); | ||
| 634 | } | ||
| 635 | |||
| 636 | static void | ||
| 637 | _pthread_once_cleanup (void *o) | ||
| 638 | { | ||
| 639 | collect_once_t *co = (collect_once_t *) o; | ||
| 640 | pthread_mutex_unlock (&co->m); | ||
| 641 | leaveOnceObject (co); | ||
| 642 | } | ||
| 643 | |||
| 644 | static int | ||
| 645 | _pthread_once_raw (pthread_once_t *o, void (*func)(void)) | ||
| 646 | { | ||
| 647 | collect_once_t *co; | ||
| 648 | long state = *o; | ||
| 649 | |||
| 650 | CHECK_PTR(o); | ||
| 651 | CHECK_PTR(func); | ||
| 652 | |||
| 653 | if (state == 1) | ||
| 654 | return 0; | ||
| 655 | co = enterOnceObject(o); | ||
| 656 | pthread_mutex_lock(&co->m); | ||
| 657 | if (*o == 0) | ||
| 658 | { | ||
| 659 | func(); | ||
| 660 | *o = 1; | ||
| 661 | } | ||
| 662 | else if (*o != 1) | ||
| 663 | fprintf (stderr," once %p is %ld\n", (void *) o, (long) *o); | ||
| 664 | pthread_mutex_unlock(&co->m); | ||
| 665 | leaveOnceObject(co); | ||
| 666 | |||
| 667 | /* Done */ | ||
| 668 | return 0; | ||
| 669 | } | ||
| 670 | |||
| 671 | /* Unimplemented. */ | ||
| 672 | void * | ||
| 673 | pthread_timechange_handler_np(void *dummy) | ||
| 674 | { | ||
| 675 | return NULL; | ||
| 676 | } | ||
| 677 | |||
| 678 | /* Compatibility routine for pthread-win32. It waits for ellapse of | ||
| 679 | interval and additionally checks for possible thread-cancelation. */ | ||
| 680 | int | ||
| 681 | pthread_delay_np (const struct timespec *interval) | ||
| 682 | { | ||
| 683 | DWORD to = (!interval ? 0 : dwMilliSecs (_pthread_time_in_ms_from_timespec (interval))); | ||
| 684 | struct _pthread_v *s = __pthread_self_lite (); | ||
| 685 | |||
| 686 | if (!to) | ||
| 687 | { | ||
| 688 | pthread_testcancel (); | ||
| 689 | Sleep (0); | ||
| 690 | pthread_testcancel (); | ||
| 691 | return 0; | ||
| 692 | } | ||
| 693 | pthread_testcancel (); | ||
| 694 | if (s->evStart) | ||
| 695 | _pthread_wait_for_single_object (s->evStart, to); | ||
| 696 | else | ||
| 697 | Sleep (to); | ||
| 698 | pthread_testcancel (); | ||
| 699 | return 0; | ||
| 700 | } | ||
| 701 | |||
| 702 | int pthread_delay_np_ms (DWORD to); | ||
| 703 | |||
| 704 | int | ||
| 705 | pthread_delay_np_ms (DWORD to) | ||
| 706 | { | ||
| 707 | struct _pthread_v *s = __pthread_self_lite (); | ||
| 708 | |||
| 709 | if (!to) | ||
| 710 | { | ||
| 711 | pthread_testcancel (); | ||
| 712 | Sleep (0); | ||
| 713 | pthread_testcancel (); | ||
| 714 | return 0; | ||
| 715 | } | ||
| 716 | pthread_testcancel (); | ||
| 717 | if (s->evStart) | ||
| 718 | _pthread_wait_for_single_object (s->evStart, to); | ||
| 719 | else | ||
| 720 | Sleep (to); | ||
| 721 | pthread_testcancel (); | ||
| 722 | return 0; | ||
| 723 | } | ||
| 724 | |||
| 725 | /* Compatibility routine for pthread-win32. It returns the | ||
| 726 | amount of available CPUs on system. */ | ||
| 727 | int | ||
| 728 | pthread_num_processors_np(void) | ||
| 729 | { | ||
| 730 | int r = 0; | ||
| 731 | DWORD_PTR ProcessAffinityMask, SystemAffinityMask; | ||
| 732 | |||
| 733 | if (GetProcessAffinityMask(GetCurrentProcess(), &ProcessAffinityMask, &SystemAffinityMask)) | ||
| 734 | { | ||
| 735 | for(; ProcessAffinityMask != 0; ProcessAffinityMask >>= 1) | ||
| 736 | 	r += (ProcessAffinityMask & 1) != 0; | ||
| 737 | } | ||
| 738 | /* assume at least 1 */ | ||
| 739 | return r ? r : 1; | ||
| 740 | } | ||
| 741 | |||
| 742 | /* Compatiblity routine for pthread-win32. Allows to set amount of used | ||
| 743 | CPUs for process. */ | ||
| 744 | int | ||
| 745 | pthread_set_num_processors_np(int n) | ||
| 746 | { | ||
| 747 | DWORD_PTR ProcessAffinityMask, ProcessNewAffinityMask = 0, SystemAffinityMask; | ||
| 748 | int r = 0; | ||
| 749 | /* need at least 1 */ | ||
| 750 | n = n ? n : 1; | ||
| 751 | if (GetProcessAffinityMask (GetCurrentProcess (), &ProcessAffinityMask, &SystemAffinityMask)) | ||
| 752 | { | ||
| 753 | for (; ProcessAffinityMask != 0; ProcessAffinityMask >>= 1) | ||
| 754 | 	{ | ||
| 755 | 	 ProcessNewAffinityMask <<= 1; | ||
| 756 | 	 if ((ProcessAffinityMask & 1) != 0 && r < n) | ||
| 757 | 	 { | ||
| 758 | 	 ProcessNewAffinityMask |= 1; | ||
| 759 | 	 r++; | ||
| 760 | 	 } | ||
| 761 | 	} | ||
| 762 | SetProcessAffinityMask (GetCurrentProcess (),ProcessNewAffinityMask); | ||
| 763 | } | ||
| 764 | return r; | ||
| 765 | } | ||
| 766 | |||
| 767 | int | ||
| 768 | pthread_once (pthread_once_t *o, void (*func)(void)) | ||
| 769 | { | ||
| 770 | collect_once_t *co; | ||
| 771 | long state = *o; | ||
| 772 | |||
| 773 | CHECK_PTR(o); | ||
| 774 | CHECK_PTR(func); | ||
| 775 | |||
| 776 | if (state == 1) | ||
| 777 | return 0; | ||
| 778 | co = enterOnceObject(o); | ||
| 779 | pthread_mutex_lock(&co->m); | ||
| 780 | if (*o == 0) | ||
| 781 | { | ||
| 782 | pthread_cleanup_push(_pthread_once_cleanup, co); | ||
| 783 | func(); | ||
| 784 | pthread_cleanup_pop(0); | ||
| 785 | *o = 1; | ||
| 786 | } | ||
| 787 | else if (*o != 1) | ||
| 788 | fprintf (stderr," once %p is %ld\n", (void *) o, (long) *o); | ||
| 789 | pthread_mutex_unlock(&co->m); | ||
| 790 | leaveOnceObject(co); | ||
| 791 | |||
| 792 | return 0; | ||
| 793 | } | ||
| 794 | |||
| 795 | int | ||
| 796 | pthread_key_create (pthread_key_t *key, void (* dest)(void *)) | ||
| 797 | { | ||
| 798 | 	unsigned int i; | ||
| 799 | 	long nmax; | ||
| 800 | 	void (**d)(void *); | ||
| 801 | |||
| 802 | 	if (!key) | ||
| 803 | 		return EINVAL; | ||
| 804 | |||
| 805 | 	pthread_rwlock_wrlock (&_pthread_key_lock); | ||
| 806 | |||
| 807 | 	for (i = _pthread_key_sch; i < _pthread_key_max; i++) | ||
| 808 | 	{ | ||
| 809 | 		if (!_pthread_key_dest[i]) | ||
| 810 | 		{ | ||
| 811 | 			*key = i; | ||
| 812 | 			if (dest) | ||
| 813 | 				_pthread_key_dest[i] = dest; | ||
| 814 | 			else | ||
| 815 | 				_pthread_key_dest[i] = (void(*)(void *))1; | ||
| 816 | 			pthread_rwlock_unlock (&_pthread_key_lock); | ||
| 817 | 			return 0; | ||
| 818 | 		} | ||
| 819 | 	} | ||
| 820 | |||
| 821 | 	for (i = 0; i < _pthread_key_sch; i++) | ||
| 822 | 	{ | ||
| 823 | 		if (!_pthread_key_dest[i]) | ||
| 824 | 		{ | ||
| 825 | 			*key = i; | ||
| 826 | 			if (dest) | ||
| 827 | 				_pthread_key_dest[i] = dest; | ||
| 828 | 			else | ||
| 829 | 				_pthread_key_dest[i] = (void(*)(void *))1; | ||
| 830 | 			pthread_rwlock_unlock (&_pthread_key_lock); | ||
| 831 | |||
| 832 | 			return 0; | ||
| 833 | 		} | ||
| 834 | 	} | ||
| 835 | |||
| 836 | 	if (_pthread_key_max == PTHREAD_KEYS_MAX) | ||
| 837 | 	{ | ||
| 838 | 		pthread_rwlock_unlock(&_pthread_key_lock); | ||
| 839 | 		return ENOMEM; | ||
| 840 | 	} | ||
| 841 | |||
| 842 | 	nmax = _pthread_key_max * 2; | ||
| 843 | 	if (nmax == 0) | ||
| 844 | 		nmax = _pthread_key_max + 1; | ||
| 845 | 	if (nmax > PTHREAD_KEYS_MAX) | ||
| 846 | 		nmax = PTHREAD_KEYS_MAX; | ||
| 847 | |||
| 848 | 	/* No spare room anywhere */ | ||
| 849 | 	d = (void (__cdecl **)(void *))realloc(_pthread_key_dest, nmax * sizeof(*d)); | ||
| 850 | 	if (!d) | ||
| 851 | 	{ | ||
| 852 | 		pthread_rwlock_unlock (&_pthread_key_lock); | ||
| 853 | 		return ENOMEM; | ||
| 854 | 	} | ||
| 855 | |||
| 856 | 	/* Clear new region */ | ||
| 857 | 	memset ((void *) &d[_pthread_key_max], 0, (nmax-_pthread_key_max)*sizeof(void *)); | ||
| 858 | |||
| 859 | 	/* Use new region */ | ||
| 860 | 	_pthread_key_dest = d; | ||
| 861 | 	_pthread_key_sch = _pthread_key_max + 1; | ||
| 862 | 	*key = _pthread_key_max; | ||
| 863 | 	_pthread_key_max = nmax; | ||
| 864 | |||
| 865 | 	if (dest) | ||
| 866 | 		_pthread_key_dest[*key] = dest; | ||
| 867 | 	else | ||
| 868 | 		_pthread_key_dest[*key] = (void(*)(void *))1; | ||
| 869 | |||
| 870 | 	pthread_rwlock_unlock (&_pthread_key_lock); | ||
| 871 | 	return 0; | ||
| 872 | } | ||
| 873 | |||
| 874 | int | ||
| 875 | pthread_key_delete (pthread_key_t key) | ||
| 876 | { | ||
| 877 | if (key >= _pthread_key_max || !_pthread_key_dest) | ||
| 878 | return EINVAL; | ||
| 879 | |||
| 880 | pthread_rwlock_wrlock (&_pthread_key_lock); | ||
| 881 | |||
| 882 | _pthread_key_dest[key] = NULL; | ||
| 883 | |||
| 884 | /* Start next search from our location */ | ||
| 885 | if (_pthread_key_sch > key) | ||
| 886 | _pthread_key_sch = key; | ||
| 887 | /* So now we need to walk the complete list of threads | ||
| 888 | and remove key's reference for it. */ | ||
| 889 | __pth_remove_use_for_key (key); | ||
| 890 | |||
| 891 | pthread_rwlock_unlock (&_pthread_key_lock); | ||
| 892 | return 0; | ||
| 893 | } | ||
| 894 | |||
| 895 | void * | ||
| 896 | pthread_getspecific (pthread_key_t key) | ||
| 897 | { | ||
| 898 | DWORD lasterr = GetLastError (); | ||
| 899 | void *r; | ||
| 900 | _pthread_v *t = __pthread_self_lite (); | ||
| 901 | pthread_spin_lock (&t->spin_keys); | ||
| 902 | r = (key >= t->keymax || t->keyval_set[key] == 0 ? NULL : t->keyval[key]); | ||
| 903 | pthread_spin_unlock (&t->spin_keys); | ||
| 904 | SetLastError (lasterr); | ||
| 905 | return r; | ||
| 906 | } | ||
| 907 | |||
| 908 | int | ||
| 909 | pthread_setspecific (pthread_key_t key, const void *value) | ||
| 910 | { | ||
| 911 | DWORD lasterr = GetLastError (); | ||
| 912 | _pthread_v *t = __pthread_self_lite (); | ||
| 913 | |||
| 914 | pthread_spin_lock (&t->spin_keys); | ||
| 915 | |||
| 916 | if (key >= t->keymax) | ||
| 917 | { | ||
| 918 | int keymax = (key + 1); | ||
| 919 | void **kv; | ||
| 920 | unsigned char *kv_set; | ||
| 921 | |||
| 922 | kv = (void **) realloc (t->keyval, keymax * sizeof (void *)); | ||
| 923 | |||
| 924 | if (!kv) | ||
| 925 | { | ||
| 926 | 	 pthread_spin_unlock (&t->spin_keys); | ||
| 927 | 	 return ENOMEM; | ||
| 928 | 	} | ||
| 929 | kv_set = (unsigned char *) realloc (t->keyval_set, keymax); | ||
| 930 | if (!kv_set) | ||
| 931 | { | ||
| 932 | 	 pthread_spin_unlock (&t->spin_keys); | ||
| 933 | 	 return ENOMEM; | ||
| 934 | 	} | ||
| 935 | |||
| 936 | /* Clear new region */ | ||
| 937 | memset (&kv[t->keymax], 0, (keymax - t->keymax)*sizeof(void *)); | ||
| 938 | memset (&kv_set[t->keymax], 0, (keymax - t->keymax)); | ||
| 939 | |||
| 940 | t->keyval = kv; | ||
| 941 | t->keyval_set = kv_set; | ||
| 942 | t->keymax = keymax; | ||
| 943 | } | ||
| 944 | |||
| 945 | t->keyval[key] = (void *) value; | ||
| 946 | t->keyval_set[key] = 1; | ||
| 947 | pthread_spin_unlock (&t->spin_keys); | ||
| 948 | SetLastError (lasterr); | ||
| 949 | |||
| 950 | return 0; | ||
| 951 | } | ||
| 952 | |||
| 953 | int | ||
| 954 | pthread_equal (pthread_t t1, pthread_t t2) | ||
| 955 | { | ||
| 956 | return (t1 == t2); | ||
| 957 | } | ||
| 958 | |||
| 959 | void | ||
| 960 | pthread_tls_init (void) | ||
| 961 | { | ||
| 962 | _pthread_tls = TlsAlloc(); | ||
| 963 | |||
| 964 | /* Cannot continue if out of indexes */ | ||
| 965 | if (_pthread_tls == TLS_OUT_OF_INDEXES) | ||
| 966 | abort(); | ||
| 967 | } | ||
| 968 | |||
| 969 | void | ||
| 970 | _pthread_cleanup_dest (pthread_t t) | ||
| 971 | { | ||
| 972 | 	_pthread_v *tv; | ||
| 973 | 	unsigned int i, j; | ||
| 974 | |||
| 975 | 	if (!t) | ||
| 976 | 		return; | ||
| 977 | 	tv = __pth_gpointer_locked (t); | ||
| 978 | 	if (!tv) | ||
| 979 | 		return; | ||
| 980 | |||
| 981 | 	for (j = 0; j < PTHREAD_DESTRUCTOR_ITERATIONS; j++) | ||
| 982 | 	{ | ||
| 983 | 		int flag = 0; | ||
| 984 | |||
| 985 | 		pthread_spin_lock (&tv->spin_keys); | ||
| 986 | 		for (i = 0; i < tv->keymax; i++) | ||
| 987 | 		{ | ||
| 988 | 			void *val = tv->keyval[i]; | ||
| 989 | |||
| 990 | 			if (tv->keyval_set[i]) | ||
| 991 | 			{ | ||
| 992 | 				pthread_rwlock_rdlock (&_pthread_key_lock); | ||
| 993 | 				if ((uintptr_t) _pthread_key_dest[i] > 1) | ||
| 994 | 				{ | ||
| 995 | 					/* Call destructor */ | ||
| 996 | 					tv->keyval[i] = NULL; | ||
| 997 | 					tv->keyval_set[i] = 0; | ||
| 998 | 					pthread_spin_unlock (&tv->spin_keys); | ||
| 999 | 					_pthread_key_dest[i](val); | ||
| 1000 | 					pthread_spin_lock (&tv->spin_keys); | ||
| 1001 | 					flag = 1; | ||
| 1002 | 				} | ||
| 1003 | 				else | ||
| 1004 | 				{ | ||
| 1005 | 					tv->keyval[i] = NULL; | ||
| 1006 | 					tv->keyval_set[i] = 0; | ||
| 1007 | 				} | ||
| 1008 | 				pthread_rwlock_unlock(&_pthread_key_lock); | ||
| 1009 | 			} | ||
| 1010 | 		} | ||
| 1011 | 		pthread_spin_unlock (&tv->spin_keys); | ||
| 1012 | 		/* Nothing to do? */ | ||
| 1013 | 		if (!flag) | ||
| 1014 | 			return; | ||
| 1015 | 	} | ||
| 1016 | } | ||
| 1017 | |||
| 1018 | static _pthread_v * | ||
| 1019 | __pthread_self_lite (void) | ||
| 1020 | { | ||
| 1021 | _pthread_v *t; | ||
| 1022 | pthread_spinlock_t new_spin_keys = PTHREAD_SPINLOCK_INITIALIZER; | ||
| 1023 | |||
| 1024 | _pthread_once_raw (&_pthread_tls_once, pthread_tls_init); | ||
| 1025 | |||
| 1026 | t = (_pthread_v *) TlsGetValue (_pthread_tls); | ||
| 1027 | if (t) | ||
| 1028 | return t; | ||
| 1029 | /* Main thread? */ | ||
| 1030 | t = (struct _pthread_v *) pop_pthread_mem (); | ||
| 1031 | |||
| 1032 | /* If cannot initialize main thread, then the only thing we can do is return null pthread_t */ | ||
| 1033 | if (!__xl_f || !t) | ||
| 1034 | return 0; | ||
| 1035 | |||
| 1036 | t->p_state = PTHREAD_DEFAULT_ATTR /*| PTHREAD_CREATE_DETACHED*/; | ||
| 1037 | t->tid = GetCurrentThreadId(); | ||
| 1038 | t->evStart = CreateEvent (NULL, 1, 0, NULL); | ||
| 1039 | t->p_clock = PTHREAD_MUTEX_INITIALIZER; | ||
| 1040 | replace_spin_keys (&t->spin_keys, new_spin_keys); | ||
| 1041 | t->sched_pol = SCHED_OTHER; | ||
| 1042 | t->h = NULL; //GetCurrentThread(); | ||
| 1043 | if (!DuplicateHandle(GetCurrentProcess(), GetCurrentThread(), GetCurrentProcess(), &t->h, 0, FALSE, DUPLICATE_SAME_ACCESS)) | ||
| 1044 | abort (); | ||
| 1045 | t->sched.sched_priority = GetThreadPriority(t->h); | ||
| 1046 | t->ended = 0; | ||
| 1047 | t->thread_noposix = 1; | ||
| 1048 | |||
| 1049 | /* Save for later */ | ||
| 1050 | if (!TlsSetValue(_pthread_tls, t)) | ||
| 1051 | abort (); | ||
| 1052 | return t; | ||
| 1053 | } | ||
| 1054 | |||
| 1055 | pthread_t | ||
| 1056 | pthread_self (void) | ||
| 1057 | { | ||
| 1058 | _pthread_v *t = __pthread_self_lite (); | ||
| 1059 | |||
| 1060 | if (!t) | ||
| 1061 | return 0; | ||
| 1062 | return t->x; | ||
| 1063 | } | ||
| 1064 | |||
| 1065 | /* Internal helper for getting event handle of thread T. */ | ||
| 1066 | void * | ||
| 1067 | pthread_getevent (void) | ||
| 1068 | { | ||
| 1069 | _pthread_v *t = __pthread_self_lite (); | ||
| 1070 | return (!t ? NULL : t->evStart); | ||
| 1071 | } | ||
| 1072 | |||
| 1073 | /* Internal helper for getting thread handle of thread T. */ | ||
| 1074 | void * | ||
| 1075 | pthread_gethandle (pthread_t t) | ||
| 1076 | { | ||
| 1077 | struct _pthread_v *tv = __pth_gpointer_locked (t); | ||
| 1078 | return (!tv ? NULL : tv->h); | ||
| 1079 | } | ||
| 1080 | |||
| 1081 | /* Internal helper for getting pointer of clean of current thread. */ | ||
| 1082 | struct _pthread_cleanup ** | ||
| 1083 | pthread_getclean (void) | ||
| 1084 | { | ||
| 1085 | struct _pthread_v *t = __pthread_self_lite (); | ||
| 1086 | if (!t) return NULL; | ||
| 1087 | return &t->clean; | ||
| 1088 | } | ||
| 1089 | |||
| 1090 | int | ||
| 1091 | pthread_get_concurrency (int *val) | ||
| 1092 | { | ||
| 1093 | *val = _pthread_concur; | ||
| 1094 | return 0; | ||
| 1095 | } | ||
| 1096 | |||
| 1097 | int | ||
| 1098 | pthread_set_concurrency (int val) | ||
| 1099 | { | ||
| 1100 | _pthread_concur = val; | ||
| 1101 | return 0; | ||
| 1102 | } | ||
| 1103 | |||
| 1104 | void | ||
| 1105 | pthread_exit (void *res) | ||
| 1106 | { | ||
| 1107 | _pthread_v *t = NULL; | ||
| 1108 | unsigned rslt = (unsigned) ((intptr_t) res); | ||
| 1109 | struct _pthread_v *id = __pthread_self_lite (); | ||
| 1110 | |||
| 1111 | id->ret_arg = res; | ||
| 1112 | |||
| 1113 | _pthread_cleanup_dest (id->x); | ||
| 1114 | if (id->thread_noposix == 0) | ||
| 1115 | longjmp(id->jb, 1); | ||
| 1116 | |||
| 1117 | /* Make sure we free ourselves if we are detached */ | ||
| 1118 | if ((t = (_pthread_v *)TlsGetValue(_pthread_tls)) != NULL) | ||
| 1119 | { | ||
| 1120 | if (!t->h) | ||
| 1121 | 	{ | ||
| 1122 | 	 t->valid = DEAD_THREAD; | ||
| 1123 | 	 if (t->evStart) | ||
| 1124 | 	 CloseHandle (t->evStart); | ||
| 1125 | 	 t->evStart = NULL; | ||
| 1126 | 	 rslt = (unsigned) (size_t) t->ret_arg; | ||
| 1127 | 	 push_pthread_mem(t); | ||
| 1128 | 	 t = NULL; | ||
| 1129 | 	 TlsSetValue (_pthread_tls, t); | ||
| 1130 | 	} | ||
| 1131 | else | ||
| 1132 | 	{ | ||
| 1133 | 	 rslt = (unsigned) (size_t) t->ret_arg; | ||
| 1134 | 	 t->ended = 1; | ||
| 1135 | 	 if (t->evStart) | ||
| 1136 | 	 CloseHandle (t->evStart); | ||
| 1137 | 	 t->evStart = NULL; | ||
| 1138 | 	 if ((t->p_state & PTHREAD_CREATE_DETACHED) == PTHREAD_CREATE_DETACHED) | ||
| 1139 | 	 { | ||
| 1140 | 	 t->valid = DEAD_THREAD; | ||
| 1141 | 	 CloseHandle (t->h); | ||
| 1142 | 	 t->h = NULL; | ||
| 1143 | 	 push_pthread_mem(t); | ||
| 1144 | 	 t = NULL; | ||
| 1145 | 	 TlsSetValue(_pthread_tls, t); | ||
| 1146 | 	 } | ||
| 1147 | 	} | ||
| 1148 | } | ||
| 1149 | /* Time to die */ | ||
| 1150 | _endthreadex(rslt); | ||
| 1151 | } | ||
| 1152 | |||
| 1153 | void | ||
| 1154 | _pthread_invoke_cancel (void) | ||
| 1155 | { | ||
| 1156 | _pthread_cleanup *pcup; | ||
| 1157 | struct _pthread_v *se = __pthread_self_lite (); | ||
| 1158 | se->in_cancel = 1; | ||
| 1159 | _pthread_setnobreak (1); | ||
| 1160 | InterlockedDecrement(&_pthread_cancelling); | ||
| 1161 | |||
| 1162 | /* Call cancel queue */ | ||
| 1163 | for (pcup = se->clean; pcup; pcup = pcup->next) | ||
| 1164 | { | ||
| 1165 | pcup->func((pthread_once_t *)pcup->arg); | ||
| 1166 | } | ||
| 1167 | |||
| 1168 | _pthread_setnobreak (0); | ||
| 1169 | pthread_exit(PTHREAD_CANCELED); | ||
| 1170 | } | ||
| 1171 | |||
| 1172 | int | ||
| 1173 | __pthread_shallcancel (void) | ||
| 1174 | { | ||
| 1175 | struct _pthread_v *t; | ||
| 1176 | if (!_pthread_cancelling) | ||
| 1177 | return 0; | ||
| 1178 | t = __pthread_self_lite (); | ||
| 1179 | if (t == NULL) | ||
| 1180 | return 0; | ||
| 1181 | if (t->nobreak <= 0 && t->cancelled && (t->p_state & PTHREAD_CANCEL_ENABLE)) | ||
| 1182 | return 1; | ||
| 1183 | return 0; | ||
| 1184 | } | ||
| 1185 | |||
| 1186 | void | ||
| 1187 | _pthread_setnobreak (int v) | ||
| 1188 | { | ||
| 1189 | struct _pthread_v *t = __pthread_self_lite (); | ||
| 1190 | if (t == NULL) | ||
| 1191 | return; | ||
| 1192 | if (v > 0) | ||
| 1193 | InterlockedIncrement ((long*)&t->nobreak); | ||
| 1194 | else | ||
| 1195 | InterlockedDecrement((long*)&t->nobreak); | ||
| 1196 | } | ||
| 1197 | |||
| 1198 | void | ||
| 1199 | pthread_testcancel (void) | ||
| 1200 | { | ||
| 1201 | struct _pthread_v *self = __pthread_self_lite (); | ||
| 1202 | |||
| 1203 | if (!self || self->in_cancel) | ||
| 1204 | return; | ||
| 1205 | if (!_pthread_cancelling) | ||
| 1206 | return; | ||
| 1207 | pthread_mutex_lock (&self->p_clock); | ||
| 1208 | |||
| 1209 | if (self->cancelled && (self->p_state & PTHREAD_CANCEL_ENABLE) && self->nobreak <= 0) | ||
| 1210 | { | ||
| 1211 | self->in_cancel = 1; | ||
| 1212 | self->p_state &= ~PTHREAD_CANCEL_ENABLE; | ||
| 1213 | if (self->evStart) | ||
| 1214 | 	ResetEvent (self->evStart); | ||
| 1215 | pthread_mutex_unlock (&self->p_clock); | ||
| 1216 | _pthread_invoke_cancel (); | ||
| 1217 | } | ||
| 1218 | pthread_mutex_unlock (&self->p_clock); | ||
| 1219 | } | ||
| 1220 | |||
| 1221 | int | ||
| 1222 | pthread_cancel (pthread_t t) | ||
| 1223 | { | ||
| 1224 | struct _pthread_v *tv = __pth_gpointer_locked (t); | ||
| 1225 | |||
| 1226 | if (tv == NULL) | ||
| 1227 | return ESRCH; | ||
| 1228 | CHECK_OBJECT(tv, ESRCH); | ||
| 1229 | /*if (tv->ended) return ESRCH;*/ | ||
| 1230 | pthread_mutex_lock(&tv->p_clock); | ||
| 1231 | if (pthread_equal(pthread_self(), t)) | ||
| 1232 | { | ||
| 1233 | if(tv->cancelled) | ||
| 1234 | 	{ | ||
| 1235 | 	 pthread_mutex_unlock(&tv->p_clock); | ||
| 1236 | 	 return (tv->in_cancel ? ESRCH : 0); | ||
| 1237 | 	} | ||
| 1238 | tv->cancelled = 1; | ||
| 1239 | InterlockedIncrement(&_pthread_cancelling); | ||
| 1240 | if(tv->evStart) SetEvent(tv->evStart); | ||
| 1241 | if ((tv->p_state & PTHREAD_CANCEL_ASYNCHRONOUS) != 0 && (tv->p_state & PTHREAD_CANCEL_ENABLE) != 0) | ||
| 1242 | 	{ | ||
| 1243 | 	 tv->p_state &= ~PTHREAD_CANCEL_ENABLE; | ||
| 1244 | 	 tv->in_cancel = 1; | ||
| 1245 | 	 pthread_mutex_unlock(&tv->p_clock); | ||
| 1246 | 	 _pthread_invoke_cancel(); | ||
| 1247 | 	} | ||
| 1248 | else | ||
| 1249 | 	pthread_mutex_unlock(&tv->p_clock); | ||
| 1250 | return 0; | ||
| 1251 | } | ||
| 1252 | |||
| 1253 | if ((tv->p_state & PTHREAD_CANCEL_ASYNCHRONOUS) != 0 && (tv->p_state & PTHREAD_CANCEL_ENABLE) != 0) | ||
| 1254 | { | ||
| 1255 | /* Dangerous asynchronous cancelling */ | ||
| 1256 | CONTEXT ctxt; | ||
| 1257 | |||
| 1258 | if(tv->in_cancel) | ||
| 1259 | 	{ | ||
| 1260 | 	 pthread_mutex_unlock(&tv->p_clock); | ||
| 1261 | 	 return (tv->in_cancel ? ESRCH : 0); | ||
| 1262 | 	} | ||
| 1263 | /* Already done? */ | ||
| 1264 | if(tv->cancelled || tv->in_cancel) | ||
| 1265 | 	{ | ||
| 1266 | 	 /* ??? pthread_mutex_unlock (&tv->p_clock); */ | ||
| 1267 | 	 return ESRCH; | ||
| 1268 | 	} | ||
| 1269 | |||
| 1270 | ctxt.ContextFlags = CONTEXT_CONTROL; | ||
| 1271 | |||
| 1272 | SuspendThread (tv->h); | ||
| 1273 | if (WaitForSingleObject (tv->h, 0) == WAIT_TIMEOUT) | ||
| 1274 | 	{ | ||
| 1275 | 	 GetThreadContext(tv->h, &ctxt); | ||
| 1276 | #ifdef _M_X64 | ||
| 1277 | 	 ctxt.Rip = (uintptr_t) _pthread_invoke_cancel; | ||
| 1278 | #elif defined(_M_IX86) | ||
| 1279 | 	 ctxt.Eip = (uintptr_t) _pthread_invoke_cancel; | ||
| 1280 | #elif defined(_M_ARM) || defined(_M_ARM64) | ||
| 1281 | 	 ctxt.Pc = (uintptr_t) _pthread_invoke_cancel; | ||
| 1282 | #else | ||
| 1283 | #error Unsupported architecture | ||
| 1284 | #endif | ||
| 1285 | #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) | ||
| 1286 | 	 SetThreadContext (tv->h, &ctxt); | ||
| 1287 | #endif | ||
| 1288 | |||
| 1289 | 	 /* Also try deferred Cancelling */ | ||
| 1290 | 	 tv->cancelled = 1; | ||
| 1291 | 	 tv->p_state &= ~PTHREAD_CANCEL_ENABLE; | ||
| 1292 | 	 tv->in_cancel = 1; | ||
| 1293 | |||
| 1294 | 	 /* Notify everyone to look */ | ||
| 1295 | 	 InterlockedIncrement (&_pthread_cancelling); | ||
| 1296 | 	 if (tv->evStart) | ||
| 1297 | 	 SetEvent (tv->evStart); | ||
| 1298 | 	 pthread_mutex_unlock (&tv->p_clock); | ||
| 1299 | |||
| 1300 | 	 ResumeThread (tv->h); | ||
| 1301 | 	} | ||
| 1302 | } | ||
| 1303 | else | ||
| 1304 | { | ||
| 1305 | if (tv->cancelled == 0) | ||
| 1306 | 	{ | ||
| 1307 | 	 /* Safe deferred Cancelling */ | ||
| 1308 | 	 tv->cancelled = 1; | ||
| 1309 | |||
| 1310 | 	 /* Notify everyone to look */ | ||
| 1311 | 	 InterlockedIncrement (&_pthread_cancelling); | ||
| 1312 | 	 if (tv->evStart) | ||
| 1313 | 	 SetEvent (tv->evStart); | ||
| 1314 | 	} | ||
| 1315 | else | ||
| 1316 | 	{ | ||
| 1317 | 	 pthread_mutex_unlock (&tv->p_clock); | ||
| 1318 | 	 return (tv->in_cancel ? ESRCH : 0); | ||
| 1319 | 	} | ||
| 1320 | } | ||
| 1321 | pthread_mutex_unlock (&tv->p_clock); | ||
| 1322 | return 0; | ||
| 1323 | } | ||
| 1324 | |||
| 1325 | /* half-stubbed version as we don't really well support signals */ | ||
| 1326 | int | ||
| 1327 | pthread_kill (pthread_t t, int sig) | ||
| 1328 | { | ||
| 1329 | struct _pthread_v *tv; | ||
| 1330 | |||
| 1331 | pthread_mutex_lock (&mtx_pthr_locked); | ||
| 1332 | tv = __pthread_get_pointer (t); | ||
| 1333 | if (!tv || t != tv->x || tv->in_cancel || tv->ended || tv->h == NULL | ||
| 1334 | || tv->h == INVALID_HANDLE_VALUE) | ||
| 1335 | { | ||
| 1336 | pthread_mutex_unlock (&mtx_pthr_locked); | ||
| 1337 | return ESRCH; | ||
| 1338 | } | ||
| 1339 | pthread_mutex_unlock (&mtx_pthr_locked); | ||
| 1340 | if (!sig) | ||
| 1341 | return 0; | ||
| 1342 | if (sig < SIGINT || sig > NSIG) | ||
| 1343 | return EINVAL; | ||
| 1344 | return pthread_cancel(t); | ||
| 1345 | } | ||
| 1346 | |||
| 1347 | unsigned | ||
| 1348 | _pthread_get_state (const pthread_attr_t *attr, unsigned flag) | ||
| 1349 | { | ||
| 1350 | return (attr->p_state & flag); | ||
| 1351 | } | ||
| 1352 | |||
| 1353 | int | ||
| 1354 | _pthread_set_state (pthread_attr_t *attr, unsigned flag, unsigned val) | ||
| 1355 | { | ||
| 1356 | if (~flag & val) | ||
| 1357 | return EINVAL; | ||
| 1358 | attr->p_state &= ~flag; | ||
| 1359 | attr->p_state |= val; | ||
| 1360 | |||
| 1361 | return 0; | ||
| 1362 | } | ||
| 1363 | |||
| 1364 | int | ||
| 1365 | pthread_attr_init (pthread_attr_t *attr) | ||
| 1366 | { | ||
| 1367 | memset (attr, 0, sizeof (pthread_attr_t)); | ||
| 1368 | attr->p_state = PTHREAD_DEFAULT_ATTR; | ||
| 1369 | attr->stack = NULL; | ||
| 1370 | attr->s_size = 0; | ||
| 1371 | return 0; | ||
| 1372 | } | ||
| 1373 | |||
| 1374 | int | ||
| 1375 | pthread_attr_destroy (pthread_attr_t *attr) | ||
| 1376 | { | ||
| 1377 | /* No need to do anything */ | ||
| 1378 | memset (attr, 0, sizeof(pthread_attr_t)); | ||
| 1379 | return 0; | ||
| 1380 | } | ||
| 1381 | |||
| 1382 | int | ||
| 1383 | pthread_attr_setdetachstate (pthread_attr_t *a, int flag) | ||
| 1384 | { | ||
| 1385 | return _pthread_set_state(a, PTHREAD_CREATE_DETACHED, flag); | ||
| 1386 | } | ||
| 1387 | |||
| 1388 | int | ||
| 1389 | pthread_attr_getdetachstate (const pthread_attr_t *a, int *flag) | ||
| 1390 | { | ||
| 1391 | *flag = _pthread_get_state(a, PTHREAD_CREATE_DETACHED); | ||
| 1392 | return 0; | ||
| 1393 | } | ||
| 1394 | |||
| 1395 | int | ||
| 1396 | pthread_attr_setinheritsched (pthread_attr_t *a, int flag) | ||
| 1397 | { | ||
| 1398 | if (!a || (flag != PTHREAD_INHERIT_SCHED && flag != PTHREAD_EXPLICIT_SCHED)) | ||
| 1399 | return EINVAL; | ||
| 1400 | return _pthread_set_state(a, PTHREAD_INHERIT_SCHED, flag); | ||
| 1401 | } | ||
| 1402 | |||
| 1403 | int | ||
| 1404 | pthread_attr_getinheritsched (const pthread_attr_t *a, int *flag) | ||
| 1405 | { | ||
| 1406 | *flag = _pthread_get_state(a, PTHREAD_INHERIT_SCHED); | ||
| 1407 | return 0; | ||
| 1408 | } | ||
| 1409 | |||
| 1410 | int | ||
| 1411 | pthread_attr_setscope (pthread_attr_t *a, int flag) | ||
| 1412 | { | ||
| 1413 | return _pthread_set_state(a, PTHREAD_SCOPE_SYSTEM, flag); | ||
| 1414 | } | ||
| 1415 | |||
| 1416 | int | ||
| 1417 | pthread_attr_getscope (const pthread_attr_t *a, int *flag) | ||
| 1418 | { | ||
| 1419 | *flag = _pthread_get_state(a, PTHREAD_SCOPE_SYSTEM); | ||
| 1420 | return 0; | ||
| 1421 | } | ||
| 1422 | |||
| 1423 | int | ||
| 1424 | pthread_attr_getstack (const pthread_attr_t *attr, void **stack, size_t *size) | ||
| 1425 | { | ||
| 1426 | *stack = (char *) attr->stack - attr->s_size; | ||
| 1427 | *size = attr->s_size; | ||
| 1428 | return 0; | ||
| 1429 | } | ||
| 1430 | |||
| 1431 | int | ||
| 1432 | pthread_attr_setstack (pthread_attr_t *attr, void *stack, size_t size) | ||
| 1433 | { | ||
| 1434 | attr->s_size = size; | ||
| 1435 | attr->stack = (char *) stack + size; | ||
| 1436 | return 0; | ||
| 1437 | } | ||
| 1438 | |||
| 1439 | int | ||
| 1440 | pthread_attr_getstackaddr (const pthread_attr_t *attr, void **stack) | ||
| 1441 | { | ||
| 1442 | *stack = attr->stack; | ||
| 1443 | return 0; | ||
| 1444 | } | ||
| 1445 | |||
| 1446 | int | ||
| 1447 | pthread_attr_setstackaddr (pthread_attr_t *attr, void *stack) | ||
| 1448 | { | ||
| 1449 | attr->stack = stack; | ||
| 1450 | return 0; | ||
| 1451 | } | ||
| 1452 | |||
| 1453 | int | ||
| 1454 | pthread_attr_getstacksize (const pthread_attr_t *attr, size_t *size) | ||
| 1455 | { | ||
| 1456 | *size = attr->s_size; | ||
| 1457 | return 0; | ||
| 1458 | } | ||
| 1459 | |||
| 1460 | int | ||
| 1461 | pthread_attr_setstacksize (pthread_attr_t *attr, size_t size) | ||
| 1462 | { | ||
| 1463 | attr->s_size = size; | ||
| 1464 | return 0; | ||
| 1465 | } | ||
| 1466 | |||
| 1467 | static void | ||
| 1468 | test_cancel_locked (pthread_t t) | ||
| 1469 | { | ||
| 1470 | struct _pthread_v *tv = __pth_gpointer_locked (t); | ||
| 1471 | |||
| 1472 | if (!tv || tv->in_cancel || tv->ended != 0 || (tv->p_state & PTHREAD_CANCEL_ENABLE) == 0) | ||
| 1473 | return; | ||
| 1474 | if ((tv->p_state & PTHREAD_CANCEL_ASYNCHRONOUS) == 0) | ||
| 1475 | return; | ||
| 1476 | if (WaitForSingleObject(tv->evStart, 0) != WAIT_OBJECT_0) | ||
| 1477 | return; | ||
| 1478 | pthread_mutex_unlock (&tv->p_clock); | ||
| 1479 | _pthread_invoke_cancel(); | ||
| 1480 | } | ||
| 1481 | |||
| 1482 | int | ||
| 1483 | pthread_setcancelstate (int state, int *oldstate) | ||
| 1484 | { | ||
| 1485 | _pthread_v *t = __pthread_self_lite (); | ||
| 1486 | |||
| 1487 | if (!t || (state & PTHREAD_CANCEL_ENABLE) != state) | ||
| 1488 | return EINVAL; | ||
| 1489 | |||
| 1490 | pthread_mutex_lock (&t->p_clock); | ||
| 1491 | if (oldstate) | ||
| 1492 | *oldstate = t->p_state & PTHREAD_CANCEL_ENABLE; | ||
| 1493 | t->p_state &= ~PTHREAD_CANCEL_ENABLE; | ||
| 1494 | t->p_state |= state; | ||
| 1495 | test_cancel_locked (t->x); | ||
| 1496 | pthread_mutex_unlock (&t->p_clock); | ||
| 1497 | |||
| 1498 | return 0; | ||
| 1499 | } | ||
| 1500 | |||
| 1501 | int | ||
| 1502 | pthread_setcanceltype (int type, int *oldtype) | ||
| 1503 | { | ||
| 1504 | _pthread_v *t = __pthread_self_lite (); | ||
| 1505 | |||
| 1506 | if (!t || (type & PTHREAD_CANCEL_ASYNCHRONOUS) != type) | ||
| 1507 | return EINVAL; | ||
| 1508 | |||
| 1509 | pthread_mutex_lock (&t->p_clock); | ||
| 1510 | if (oldtype) | ||
| 1511 | *oldtype = t->p_state & PTHREAD_CANCEL_ASYNCHRONOUS; | ||
| 1512 | t->p_state &= ~PTHREAD_CANCEL_ASYNCHRONOUS; | ||
| 1513 | t->p_state |= type; | ||
| 1514 | test_cancel_locked (t->x); | ||
| 1515 | pthread_mutex_unlock (&t->p_clock); | ||
| 1516 | |||
| 1517 | return 0; | ||
| 1518 | } | ||
| 1519 | |||
| 1520 | void _fpreset (void); | ||
| 1521 | |||
| 1522 | #if defined(__i386__) | ||
| 1523 | /* Align ESP on 16-byte boundaries. */ | ||
| 1524 | # if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2) | ||
| 1525 | __attribute__((force_align_arg_pointer)) | ||
| 1526 | # endif | ||
| 1527 | #endif | ||
| 1528 | unsigned __stdcall | ||
| 1529 | pthread_create_wrapper (void *args) | ||
| 1530 | { | ||
| 1531 | unsigned rslt = 0; | ||
| 1532 | struct _pthread_v *tv = (struct _pthread_v *)args; | ||
| 1533 | |||
| 1534 | _fpreset(); | ||
| 1535 | |||
| 1536 | pthread_mutex_lock (&mtx_pthr_locked); | ||
| 1537 | pthread_mutex_lock (&tv->p_clock); | ||
| 1538 | _pthread_once_raw(&_pthread_tls_once, pthread_tls_init); | ||
| 1539 | TlsSetValue(_pthread_tls, tv); | ||
| 1540 | tv->tid = GetCurrentThreadId(); | ||
| 1541 | pthread_mutex_unlock (&tv->p_clock); | ||
| 1542 | |||
| 1543 | |||
| 1544 | if (!setjmp(tv->jb)) | ||
| 1545 | { | ||
| 1546 | intptr_t trslt = (intptr_t) 128; | ||
| 1547 | /* Provide to this thread a default exception handler. */ | ||
| 1548 | #ifdef __SEH__ | ||
| 1549 | 	asm ("\t.tl_start:\n"); | ||
| 1550 | #endif /* Call function and save return value */ | ||
| 1551 | pthread_mutex_unlock (&mtx_pthr_locked); | ||
| 1552 | if (tv->func) | ||
| 1553 | trslt = (intptr_t) tv->func(tv->ret_arg); | ||
| 1554 | #ifdef __SEH__ | ||
| 1555 | 	asm ("\tnop\n\t.tl_end: nop\n" | ||
| 1556 | #ifdef __arm__ | ||
| 1557 | 	 "\t.seh_handler __C_specific_handler, %except\n" | ||
| 1558 | #else | ||
| 1559 | 	 "\t.seh_handler __C_specific_handler, @except\n" | ||
| 1560 | #endif | ||
| 1561 | 	 "\t.seh_handlerdata\n" | ||
| 1562 | 	 "\t.long 1\n" | ||
| 1563 | 	 "\t.rva .tl_start, .tl_end, _gnu_exception_handler ,.tl_end\n" | ||
| 1564 | 	 "\t.text" | ||
| 1565 | 	 ); | ||
| 1566 | #endif | ||
| 1567 | pthread_mutex_lock (&mtx_pthr_locked); | ||
| 1568 | tv->ret_arg = (void*) trslt; | ||
| 1569 | /* Clean up destructors */ | ||
| 1570 | _pthread_cleanup_dest(tv->x); | ||
| 1571 | } | ||
| 1572 | else | ||
| 1573 | pthread_mutex_lock (&mtx_pthr_locked); | ||
| 1574 | |||
| 1575 | pthread_mutex_lock (&tv->p_clock); | ||
| 1576 | rslt = (unsigned) (size_t) tv->ret_arg; | ||
| 1577 | /* Make sure we free ourselves if we are detached */ | ||
| 1578 | if (tv->evStart) | ||
| 1579 | CloseHandle (tv->evStart); | ||
| 1580 | tv->evStart = NULL; | ||
| 1581 | if (!tv->h) | ||
| 1582 | { | ||
| 1583 | tv->valid = DEAD_THREAD; | ||
| 1584 | pthread_mutex_unlock (&tv->p_clock); | ||
| 1585 | pthread_mutex_destroy (&tv->p_clock); | ||
| 1586 | push_pthread_mem (tv); | ||
| 1587 | tv = NULL; | ||
| 1588 | TlsSetValue (_pthread_tls, tv); | ||
| 1589 | } | ||
| 1590 | else | ||
| 1591 | { | ||
| 1592 | pthread_mutex_unlock (&tv->p_clock); | ||
| 1593 | pthread_mutex_destroy (&tv->p_clock); | ||
| 1594 | /* Reinitialise p_clock, since there may be attempts at | ||
| 1595 | destroying it again in __dyn_tls_thread later on. */ | ||
| 1596 | tv->p_clock = PTHREAD_MUTEX_INITIALIZER; | ||
| 1597 | tv->ended = 1; | ||
| 1598 | } | ||
| 1599 | while (pthread_mutex_unlock (&mtx_pthr_locked) == 0) | ||
| 1600 | Sleep (0); | ||
| 1601 | _endthreadex (rslt); | ||
| 1602 | return rslt; | ||
| 1603 | } | ||
| 1604 | |||
| 1605 | int | ||
| 1606 | pthread_create (pthread_t *th, const pthread_attr_t *attr, void *(* func)(void *), void *arg) | ||
| 1607 | { | ||
| 1608 | HANDLE thrd = NULL; | ||
| 1609 | int redo = 0; | ||
| 1610 | struct _pthread_v *tv; | ||
| 1611 | unsigned int ssize = 0; | ||
| 1612 | pthread_spinlock_t new_spin_keys = PTHREAD_SPINLOCK_INITIALIZER; | ||
| 1613 | |||
| 1614 | if (attr && attr->s_size > UINT_MAX) | ||
| 1615 | return EINVAL; | ||
| 1616 | |||
| 1617 | if ((tv = pop_pthread_mem ()) == NULL) | ||
| 1618 | return EAGAIN; | ||
| 1619 | |||
| 1620 | if (th) | ||
| 1621 | *th = tv->x; | ||
| 1622 | |||
| 1623 | /* Save data in pthread_t */ | ||
| 1624 | tv->ended = 0; | ||
| 1625 | tv->ret_arg = arg; | ||
| 1626 | tv->func = func; | ||
| 1627 | tv->p_state = PTHREAD_DEFAULT_ATTR; | ||
| 1628 | tv->h = INVALID_HANDLE_VALUE; | ||
| 1629 | /* We retry it here a few times, as events are a limited resource ... */ | ||
| 1630 | do | ||
| 1631 | { | ||
| 1632 | tv->evStart = CreateEvent (NULL, 1, 0, NULL); | ||
| 1633 | if (tv->evStart != NULL) | ||
| 1634 | 	break; | ||
| 1635 | Sleep ((!redo ? 0 : 20)); | ||
| 1636 | } | ||
| 1637 | while (++redo <= 4); | ||
| 1638 | |||
| 1639 | tv->p_clock = PTHREAD_MUTEX_INITIALIZER; | ||
| 1640 | replace_spin_keys (&tv->spin_keys, new_spin_keys); | ||
| 1641 | tv->valid = LIFE_THREAD; | ||
| 1642 | tv->sched.sched_priority = THREAD_PRIORITY_NORMAL; | ||
| 1643 | tv->sched_pol = SCHED_OTHER; | ||
| 1644 | if (tv->evStart == NULL) | ||
| 1645 | { | ||
| 1646 | if (th) | ||
| 1647 | memset (th, 0, sizeof (pthread_t)); | ||
| 1648 | push_pthread_mem (tv); | ||
| 1649 | return EAGAIN; | ||
| 1650 | } | ||
| 1651 | |||
| 1652 | if (attr) | ||
| 1653 | { | ||
| 1654 | int inh = 0; | ||
| 1655 | tv->p_state = attr->p_state; | ||
| 1656 | ssize = (unsigned int)attr->s_size; | ||
| 1657 | pthread_attr_getinheritsched (attr, &inh); | ||
| 1658 | if (inh) | ||
| 1659 | 	{ | ||
| 1660 | 	 tv->sched.sched_priority = __pthread_self_lite ()->sched.sched_priority; | ||
| 1661 | 	} | ||
| 1662 | else | ||
| 1663 | 	tv->sched.sched_priority = attr->param.sched_priority; | ||
| 1664 | } | ||
| 1665 | |||
| 1666 | /* Make sure tv->h has value of INVALID_HANDLE_VALUE */ | ||
| 1667 | _ReadWriteBarrier(); | ||
| 1668 | |||
| 1669 | thrd = (HANDLE) _beginthreadex(NULL, ssize, pthread_create_wrapper, tv, 0x4/*CREATE_SUSPEND*/, NULL); | ||
| 1670 | if (thrd == INVALID_HANDLE_VALUE) | ||
| 1671 | thrd = 0; | ||
| 1672 | /* Failed */ | ||
| 1673 | if (!thrd) | ||
| 1674 | { | ||
| 1675 | if (tv->evStart) | ||
| 1676 | 	CloseHandle (tv->evStart); | ||
| 1677 | pthread_mutex_destroy (&tv->p_clock); | ||
| 1678 | replace_spin_keys (&tv->spin_keys, new_spin_keys); | ||
| 1679 | tv->evStart = NULL; | ||
| 1680 | tv->h = 0; | ||
| 1681 | if (th) | ||
| 1682 | memset (th, 0, sizeof (pthread_t)); | ||
| 1683 | push_pthread_mem (tv); | ||
| 1684 | return EAGAIN; | ||
| 1685 | } | ||
| 1686 | { | ||
| 1687 | int pr = tv->sched.sched_priority; | ||
| 1688 | if (pr <= THREAD_PRIORITY_IDLE) { | ||
| 1689 | 	pr = THREAD_PRIORITY_IDLE; | ||
| 1690 | } else if (pr <= THREAD_PRIORITY_LOWEST) { | ||
| 1691 | 	pr = THREAD_PRIORITY_LOWEST; | ||
| 1692 | } else if (pr >= THREAD_PRIORITY_TIME_CRITICAL) { | ||
| 1693 | 	pr = THREAD_PRIORITY_TIME_CRITICAL; | ||
| 1694 | } else if (pr >= THREAD_PRIORITY_HIGHEST) { | ||
| 1695 | 	pr = THREAD_PRIORITY_HIGHEST; | ||
| 1696 | } | ||
| 1697 | SetThreadPriority (thrd, pr); | ||
| 1698 | } | ||
| 1699 | ResetEvent (tv->evStart); | ||
| 1700 | if ((tv->p_state & PTHREAD_CREATE_DETACHED) != 0) | ||
| 1701 | { | ||
| 1702 | tv->h = 0; | ||
| 1703 | ResumeThread (thrd); | ||
| 1704 | CloseHandle (thrd); | ||
| 1705 | } | ||
| 1706 | else | ||
| 1707 | { | ||
| 1708 | tv->h = thrd; | ||
| 1709 | ResumeThread (thrd); | ||
| 1710 | } | ||
| 1711 | Sleep (0); | ||
| 1712 | return 0; | ||
| 1713 | } | ||
| 1714 | |||
| 1715 | int | ||
| 1716 | pthread_join (pthread_t t, void **res) | ||
| 1717 | { | ||
| 1718 | DWORD dwFlags; | ||
| 1719 | struct _pthread_v *tv = __pth_gpointer_locked (t); | ||
| 1720 | pthread_spinlock_t new_spin_keys = PTHREAD_SPINLOCK_INITIALIZER; | ||
| 1721 | |||
| 1722 | if (!tv || tv->h == NULL || !GetHandleInformation(tv->h, &dwFlags)) | ||
| 1723 | return ESRCH; | ||
| 1724 | if ((tv->p_state & PTHREAD_CREATE_DETACHED) != 0) | ||
| 1725 | return EINVAL; | ||
| 1726 | if (pthread_equal(pthread_self(), t)) | ||
| 1727 | return EDEADLK; | ||
| 1728 | |||
| 1729 | /* pthread_testcancel (); */ | ||
| 1730 | if (tv->ended == 0 || (tv->h != NULL && tv->h != INVALID_HANDLE_VALUE)) | ||
| 1731 | WaitForSingleObject (tv->h, INFINITE); | ||
| 1732 | CloseHandle (tv->h); | ||
| 1733 | if (tv->evStart) | ||
| 1734 | CloseHandle (tv->evStart); | ||
| 1735 | tv->evStart = NULL; | ||
| 1736 | /* Obtain return value */ | ||
| 1737 | if (res) | ||
| 1738 | *res = tv->ret_arg; | ||
| 1739 | pthread_mutex_destroy (&tv->p_clock); | ||
| 1740 | replace_spin_keys (&tv->spin_keys, new_spin_keys); | ||
| 1741 | push_pthread_mem (tv); | ||
| 1742 | |||
| 1743 | return 0; | ||
| 1744 | } | ||
| 1745 | |||
| 1746 | int | ||
| 1747 | _pthread_tryjoin (pthread_t t, void **res) | ||
| 1748 | { | ||
| 1749 | DWORD dwFlags; | ||
| 1750 | struct _pthread_v *tv; | ||
| 1751 | pthread_spinlock_t new_spin_keys = PTHREAD_SPINLOCK_INITIALIZER; | ||
| 1752 | |||
| 1753 | pthread_mutex_lock (&mtx_pthr_locked); | ||
| 1754 | tv = __pthread_get_pointer (t); | ||
| 1755 | |||
| 1756 | if (!tv || tv->h == NULL || !GetHandleInformation(tv->h, &dwFlags)) | ||
| 1757 | { | ||
| 1758 | pthread_mutex_unlock (&mtx_pthr_locked); | ||
| 1759 | return ESRCH; | ||
| 1760 | } | ||
| 1761 | |||
| 1762 | if ((tv->p_state & PTHREAD_CREATE_DETACHED) != 0) | ||
| 1763 | { | ||
| 1764 | pthread_mutex_unlock (&mtx_pthr_locked); | ||
| 1765 | return EINVAL; | ||
| 1766 | } | ||
| 1767 | if (pthread_equal(pthread_self(), t)) | ||
| 1768 | { | ||
| 1769 | pthread_mutex_unlock (&mtx_pthr_locked); | ||
| 1770 | return EDEADLK; | ||
| 1771 | } | ||
| 1772 | if(tv->ended == 0 && WaitForSingleObject(tv->h, 0)) | ||
| 1773 | { | ||
| 1774 | if (tv->ended == 0) | ||
| 1775 | { | ||
| 1776 | 	 pthread_mutex_unlock (&mtx_pthr_locked); | ||
| 1777 | 	 /* pthread_testcancel (); */ | ||
| 1778 | 	 return EBUSY; | ||
| 1779 | 	 } | ||
| 1780 | } | ||
| 1781 | CloseHandle (tv->h); | ||
| 1782 | if (tv->evStart) | ||
| 1783 | CloseHandle (tv->evStart); | ||
| 1784 | tv->evStart = NULL; | ||
| 1785 | |||
| 1786 | /* Obtain return value */ | ||
| 1787 | if (res) | ||
| 1788 | *res = tv->ret_arg; | ||
| 1789 | pthread_mutex_destroy (&tv->p_clock); | ||
| 1790 | replace_spin_keys (&tv->spin_keys, new_spin_keys); | ||
| 1791 | |||
| 1792 | push_pthread_mem (tv); | ||
| 1793 | |||
| 1794 | pthread_mutex_unlock (&mtx_pthr_locked); | ||
| 1795 | /* pthread_testcancel (); */ | ||
| 1796 | return 0; | ||
| 1797 | } | ||
| 1798 | |||
| 1799 | int | ||
| 1800 | pthread_detach (pthread_t t) | ||
| 1801 | { | ||
| 1802 | int r = 0; | ||
| 1803 | DWORD dwFlags; | ||
| 1804 | struct _pthread_v *tv = __pth_gpointer_locked (t); | ||
| 1805 | HANDLE dw; | ||
| 1806 | pthread_spinlock_t new_spin_keys = PTHREAD_SPINLOCK_INITIALIZER; | ||
| 1807 | |||
| 1808 | pthread_mutex_lock (&mtx_pthr_locked); | ||
| 1809 | if (!tv || tv->h == NULL || !GetHandleInformation(tv->h, &dwFlags)) | ||
| 1810 | { | ||
| 1811 | pthread_mutex_unlock (&mtx_pthr_locked); | ||
| 1812 | return ESRCH; | ||
| 1813 | } | ||
| 1814 | if ((tv->p_state & PTHREAD_CREATE_DETACHED) != 0) | ||
| 1815 | { | ||
| 1816 | pthread_mutex_unlock (&mtx_pthr_locked); | ||
| 1817 | return EINVAL; | ||
| 1818 | } | ||
| 1819 | /* if (tv->ended) r = ESRCH; */ | ||
| 1820 | dw = tv->h; | ||
| 1821 | tv->h = 0; | ||
| 1822 | tv->p_state |= PTHREAD_CREATE_DETACHED; | ||
| 1823 | _ReadWriteBarrier(); | ||
| 1824 | if (dw) | ||
| 1825 | { | ||
| 1826 | CloseHandle (dw); | ||
| 1827 | if (tv->ended) | ||
| 1828 | 	{ | ||
| 1829 | 	 if (tv->evStart) | ||
| 1830 | 	 CloseHandle (tv->evStart); | ||
| 1831 | 	 tv->evStart = NULL; | ||
| 1832 | 	 pthread_mutex_destroy (&tv->p_clock); | ||
| 1833 | 	 replace_spin_keys (&tv->spin_keys, new_spin_keys); | ||
| 1834 | 	 push_pthread_mem (tv); | ||
| 1835 | 	} | ||
| 1836 | } | ||
| 1837 | pthread_mutex_unlock (&mtx_pthr_locked); | ||
| 1838 | |||
| 1839 | return r; | ||
| 1840 | } | ||
| 1841 | |||
| 1842 | static int dummy_concurrency_level = 0; | ||
| 1843 | |||
| 1844 | int | ||
| 1845 | pthread_getconcurrency (void) | ||
| 1846 | { | ||
| 1847 | return dummy_concurrency_level; | ||
| 1848 | } | ||
| 1849 | |||
| 1850 | int | ||
| 1851 | pthread_setconcurrency (int new_level) | ||
| 1852 | { | ||
| 1853 | dummy_concurrency_level = new_level; | ||
| 1854 | return 0; | ||
| 1855 | } | ||
| 1856 | |||
| 1857 | int | ||
| 1858 | pthread_setname_np (pthread_t thread, const char *name) | ||
| 1859 | { | ||
| 1860 | struct _pthread_v *tv; | ||
| 1861 | char *stored_name; | ||
| 1862 | |||
| 1863 | if (name == NULL) | ||
| 1864 | return EINVAL; | ||
| 1865 | |||
| 1866 | tv = __pth_gpointer_locked (thread); | ||
| 1867 | if (!tv || thread != tv->x || tv->in_cancel || tv->ended || tv->h == NULL | ||
| 1868 | || tv->h == INVALID_HANDLE_VALUE) | ||
| 1869 | return ESRCH; | ||
| 1870 | |||
| 1871 | stored_name = strdup (name); | ||
| 1872 | if (stored_name == NULL) | ||
| 1873 | return ENOMEM; | ||
| 1874 | |||
| 1875 | if (tv->thread_name != NULL) | ||
| 1876 | free (tv->thread_name); | ||
| 1877 | |||
| 1878 | tv->thread_name = stored_name; | ||
| 1879 | SetThreadName (tv->tid, name); | ||
| 1880 | |||
| 1881 | if (_pthread_set_thread_description != NULL) | ||
| 1882 | { | ||
| 1883 | size_t required_size = mbstowcs(NULL, name, 0); | ||
| 1884 | if (required_size != (size_t)-1) | ||
| 1885 | { | ||
| 1886 | wchar_t *wname = malloc((required_size + 1) * sizeof(wchar_t)); | ||
| 1887 | if (wname != NULL) | ||
| 1888 | { | ||
| 1889 | mbstowcs(wname, name, required_size + 1); | ||
| 1890 | _pthread_set_thread_description(tv->h, wname); | ||
| 1891 | free(wname); | ||
| 1892 | } | ||
| 1893 | } | ||
| 1894 | } | ||
| 1895 | return 0; | ||
| 1896 | } | ||
| 1897 | |||
| 1898 | int | ||
| 1899 | pthread_getname_np (pthread_t thread, char *name, size_t len) | ||
| 1900 | { | ||
| 1901 | HRESULT result; | ||
| 1902 | struct _pthread_v *tv; | ||
| 1903 | |||
| 1904 | if (name == NULL) | ||
| 1905 | return EINVAL; | ||
| 1906 | |||
| 1907 | tv = __pth_gpointer_locked (thread); | ||
| 1908 | if (!tv || thread != tv->x || tv->in_cancel || tv->ended || tv->h == NULL | ||
| 1909 | || tv->h == INVALID_HANDLE_VALUE) | ||
| 1910 | return ESRCH; | ||
| 1911 | |||
| 1912 | if (len < 1) | ||
| 1913 | return ERANGE; | ||
| 1914 | |||
| 1915 | if (tv->thread_name == NULL) | ||
| 1916 | { | ||
| 1917 | name[0] = '\0'; | ||
| 1918 | return 0; | ||
| 1919 | } | ||
| 1920 | |||
| 1921 | if (strlen (tv->thread_name) >= len) | ||
| 1922 | return ERANGE; | ||
| 1923 | |||
| 1924 | result = StringCchCopyNA (name, len, tv->thread_name, len - 1); | ||
| 1925 | if (SUCCEEDED (result)) | ||
| 1926 | return 0; | ||
| 1927 | |||
| 1928 | return ERANGE; | ||
| 1929 | } | ||
lib/libc/mingw/winpthreads/thread.h created+79| ... | @@ -0,0 +1,79 @@ | ||
| 1 | /* | ||
| 2 | Copyright (c) 2011-2016 mingw-w64 project | ||
| 3 | |||
| 4 | Permission is hereby granted, free of charge, to any person obtaining a | ||
| 5 | copy of this software and associated documentation files (the "Software"), | ||
| 6 | to deal in the Software without restriction, including without limitation | ||
| 7 | the rights to use, copy, modify, merge, publish, distribute, sublicense, | ||
| 8 | and/or sell copies of the Software, and to permit persons to whom the | ||
| 9 | Software is furnished to do so, subject to the following conditions: | ||
| 10 | |||
| 11 | The above copyright notice and this permission notice shall be included in | ||
| 12 | all copies or substantial portions of the Software. | ||
| 13 | |||
| 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
| 15 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
| 16 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
| 17 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
| 18 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||
| 19 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||
| 20 | DEALINGS IN THE SOFTWARE. | ||
| 21 | */ | ||
| 22 | |||
| 23 | #ifndef WIN_PTHREAD_H | ||
| 24 | #define WIN_PTHREAD_H | ||
| 25 | |||
| 26 | #include <windows.h> | ||
| 27 | #include <setjmp.h> | ||
| 28 | #include "rwlock.h" | ||
| 29 | |||
| 30 | #define LIFE_THREAD 0xBAB1F00D | ||
| 31 | #define DEAD_THREAD 0xDEADBEEF | ||
| 32 | #define EXCEPTION_SET_THREAD_NAME ((DWORD) 0x406D1388) | ||
| 33 | |||
| 34 | typedef struct _pthread_v _pthread_v; | ||
| 35 | struct _pthread_v | ||
| 36 | { | ||
| 37 | unsigned int valid; | ||
| 38 | void *ret_arg; | ||
| 39 | void *(* func)(void *); | ||
| 40 | _pthread_cleanup *clean; | ||
| 41 | int nobreak; | ||
| 42 | HANDLE h; | ||
| 43 | HANDLE evStart; | ||
| 44 | pthread_mutex_t p_clock; | ||
| 45 | int cancelled : 2; | ||
| 46 | int in_cancel : 2; | ||
| 47 | int thread_noposix : 2; | ||
| 48 | unsigned int p_state; | ||
| 49 | unsigned int keymax; | ||
| 50 | void **keyval; | ||
| 51 | unsigned char *keyval_set; | ||
| 52 | char *thread_name; | ||
| 53 | pthread_spinlock_t spin_keys; | ||
| 54 | DWORD tid; | ||
| 55 | int rwlc; | ||
| 56 | pthread_rwlock_t rwlq[RWLS_PER_THREAD]; | ||
| 57 | int sched_pol; | ||
| 58 | int ended; | ||
| 59 | struct sched_param sched; | ||
| 60 | jmp_buf jb; | ||
| 61 | struct _pthread_v *next; | ||
| 62 | pthread_t x; /* Internal posix handle. */ | ||
| 63 | }; | ||
| 64 | |||
| 65 | typedef struct __pthread_idlist { | ||
| 66 | struct _pthread_v *ptr; | ||
| 67 | pthread_t id; | ||
| 68 | } __pthread_idlist; | ||
| 69 | |||
| 70 | int _pthread_tryjoin(pthread_t t, void **res); | ||
| 71 | void _pthread_setnobreak(int); | ||
| 72 | #ifdef WINPTHREAD_DBG | ||
| 73 | void thread_print_set(int state); | ||
| 74 | void thread_print(volatile pthread_t t, char *txt); | ||
| 75 | #endif | ||
| 76 | int __pthread_shallcancel(void); | ||
| 77 | struct _pthread_v *WINPTHREAD_API __pth_gpointer_locked (pthread_t id); | ||
| 78 | |||
| 79 | #endif | ||
lib/libc/mingw/winpthreads/winpthread_internal.h created+27| ... | @@ -0,0 +1,27 @@ | ||
| 1 | /* | ||
| 2 | Copyright (c) 2011-2016 mingw-w64 project | ||
| 3 | |||
| 4 | Permission is hereby granted, free of charge, to any person obtaining a | ||
| 5 | copy of this software and associated documentation files (the "Software"), | ||
| 6 | to deal in the Software without restriction, including without limitation | ||
| 7 | the rights to use, copy, modify, merge, publish, distribute, sublicense, | ||
| 8 | and/or sell copies of the Software, and to permit persons to whom the | ||
| 9 | Software is furnished to do so, subject to the following conditions: | ||
| 10 | |||
| 11 | The above copyright notice and this permission notice shall be included in | ||
| 12 | all copies or substantial portions of the Software. | ||
| 13 | |||
| 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
| 15 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
| 16 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
| 17 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
| 18 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||
| 19 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||
| 20 | DEALINGS IN THE SOFTWARE. | ||
| 21 | */ | ||
| 22 | |||
| 23 | #ifndef WINPTHREAD_INTERNAL_H | ||
| 24 | #define WINPTHREAD_INTERNAL_H | ||
| 25 | WINPTHREAD_API struct _pthread_v * __pth_gpointer_locked (pthread_t id); | ||
| 26 | int pthread_delay_np_ms (DWORD to); | ||
| 27 | #endif /*WINPTHREAD_INTERNAL_H*/ | ||
lib/libc/mingw/winpthreads/wpth_ver.h created+29| ... | @@ -0,0 +1,29 @@ | ||
| 1 | /* | ||
| 2 | Copyright (c) 2011-2016 mingw-w64 project | ||
| 3 | |||
| 4 | Permission is hereby granted, free of charge, to any person obtaining a | ||
| 5 | copy of this software and associated documentation files (the "Software"), | ||
| 6 | to deal in the Software without restriction, including without limitation | ||
| 7 | the rights to use, copy, modify, merge, publish, distribute, sublicense, | ||
| 8 | and/or sell copies of the Software, and to permit persons to whom the | ||
| 9 | Software is furnished to do so, subject to the following conditions: | ||
| 10 | |||
| 11 | The above copyright notice and this permission notice shall be included in | ||
| 12 | all copies or substantial portions of the Software. | ||
| 13 | |||
| 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
| 15 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
| 16 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
| 17 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
| 18 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||
| 19 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||
| 20 | DEALINGS IN THE SOFTWARE. | ||
| 21 | */ | ||
| 22 | |||
| 23 | #ifndef __WPTHREADS_VERSION__ | ||
| 24 | #define __WPTHREADS_VERSION__ | ||
| 25 | |||
| 26 | #define WPTH_VERSION 1,0,0,0 | ||
| 27 | #define WPTH_VERSION_STRING "1, 0, 0, 0\0" | ||
| 28 | |||
| 29 | #endif | ||