I guess sticking to range [0,255] is our best choice. I attached patches.
Now that we also use replacements for UCRT, I added code to control which flags are passed to MultiByteToWideChar based on code page[1]. I tried building mingw-w64-crt with --with-default-msvcrt=msvcrt and --with-default-msvcrt=ucrt. Things seem to work well. - Kirill Makurin [1] https://learn.microsoft.com/en-us/windows/win32/api/stringapiset/nf-stringapiset-multibytetowidechar ________________________________ From: LIU Hao Sent: Sunday, June 8, 2025 12:19 AM To: Kirill Makurin; mingw-w64-public Subject: Re: [Mingw-w64-public] Inconsistent behavior of btowc with "C" locale 在 2025-6-7 18:40, Kirill Makurin 写道: > Thank you for details. > > There is msvcp60.def which exports wctob and btowc, I am not sure if I should > touch it. > > If we don't take POSIX behavior for btowc with "C" locale for input in range > [128,255], and since we > replace them both for all CRTs, I think we could limit range of valid input > to [0,127] to be consistent > with existing implementations like glibc. > > Initially, the idea to allow values in range [0,255] in "C" locale was to > match CRTs behavior. What do you think? Looks like that the behavior of `btowc()` is defined as: ``` wint_t btowc(int c) { if(c == EOF) return WEOF; wchar_t wc; char ch = (char) c; mbstate_t st = { 0 }; if(mbrtowc(&wc, &ch, 1, &st) != 1) return WEOF; return wc; } ``` The UCRT `mbrtowc()` function doesn't fail for characters in [128,255]. -- Best regards, LIU Hao
From 3b809cbc99785bb8cf1335e950072c832a097123 Mon Sep 17 00:00:00 2001 From: Kirill Makurin <maiddais...@outlook.com> Date: Sun, 8 Jun 2025 00:23:19 +0900 Subject: [PATCH 1/3] crt: change behavior of btowc and wctob with C locale When current locale is "C", ___lc_codepage_func() will return 0. When 0 (CP_ACP) is passed to MultiByteToWideChar or WideCharToMultiByte, they will use code page returned by GetACP() during conversion. This may lead to unexpected behavior in programs relying on "C" locale being consistent. Check return value of ___lc_codepage_func(), and if it returns 0, perform simple range checking. If input value is in range [0,255], return it as is. This matches CRT's behavior. Signed-off-by: Kirill Makurin <maiddais...@outlook.com> --- mingw-w64-crt/misc/btowc.c | 22 +++++++++++++--------- mingw-w64-crt/misc/wctob.c | 26 ++++++++++++++++---------- 2 files changed, 29 insertions(+), 19 deletions(-) diff --git a/mingw-w64-crt/misc/btowc.c b/mingw-w64-crt/misc/btowc.c index c8fbd8e74..b55e28eee 100644 --- a/mingw-w64-crt/misc/btowc.c +++ b/mingw-w64-crt/misc/btowc.c @@ -15,14 +15,18 @@ wint_t btowc (int c) { if (c == EOF) return (WEOF); - else - { - unsigned char ch = c; - wchar_t wc = WEOF; - if (!MultiByteToWideChar (___lc_codepage_func(), MB_ERR_INVALID_CHARS, - (char*)&ch, 1, &wc, 1)) - return WEOF; - return wc; - } + unsigned cp = ___lc_codepage_func(); + + /* "C" locale */ + if (cp == 0) + return (unsigned) c <= 0xFF ? c : WEOF; + + unsigned char ch = c; + wchar_t wc = WEOF; + + if (!MultiByteToWideChar (cp, MB_ERR_INVALID_CHARS, (char*)&ch, 1, &wc, 1)) + return WEOF; + + return wc; } diff --git a/mingw-w64-crt/misc/wctob.c b/mingw-w64-crt/misc/wctob.c index 995f6db6e..aeb0b4770 100644 --- a/mingw-w64-crt/misc/wctob.c +++ b/mingw-w64-crt/misc/wctob.c @@ -14,16 +14,22 @@ #include <windows.h> /* Return just the first byte after translating to multibyte. */ -int wctob (wint_t wc ) +int wctob (wint_t wc) { - wchar_t w = wc; - char c; - int invalid_char = 0; - if (!WideCharToMultiByte (___lc_codepage_func(), - 0 /* Is this correct flag? */, - &w, 1, &c, 1, NULL, &invalid_char) - || invalid_char) - return EOF; + unsigned cp = ___lc_codepage_func(); - return (unsigned char) c; + /* "C" locale */ + if (cp == 0) + return wc <= 0xFF ? wc : EOF; + + wchar_t w = wc; + char c; + /* Will be set to 1 if conversion failed */ + int failed = 0; + + /* Do not use WC_NO_BEST_FIT_CHARS, CRT performs best-fit conversion */ + if (!WideCharToMultiByte (cp, 0, &w, 1, &c, 1, NULL, &failed) || failed) + return EOF; + + return (unsigned char) c; } -- 2.46.1.windows.1
From 97149400dd65577942fa83770ddb4a3cb583225b Mon Sep 17 00:00:00 2001 From: Kirill Makurin <maiddais...@outlook.com> Date: Sun, 8 Jun 2025 00:25:32 +0900 Subject: [PATCH 2/3] crt: btowc: control flags passed to MultiByteToWideChar For some code pages, flags must be passed as 0 when calling MultiByteToWideChar. Pass 0 for such code pages, and MB_ERR_INVALID_CHARS for others. Signed-off-by: Kirill Makurin <maiddais...@outlook.com> --- mingw-w64-crt/misc/btowc.c | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/mingw-w64-crt/misc/btowc.c b/mingw-w64-crt/misc/btowc.c index b55e28eee..2b4688216 100644 --- a/mingw-w64-crt/misc/btowc.c +++ b/mingw-w64-crt/misc/btowc.c @@ -22,10 +22,38 @@ wint_t btowc (int c) if (cp == 0) return (unsigned) c <= 0xFF ? c : WEOF; + /* Flags to pass to MultiByteToWideChar */ + unsigned flags = 0; + + switch (cp) + { + case 50220: /* ISO-2022-JP */ + case 50221: /* ISO-2022-JP */ + case 50222: /* ISO-2022-JP */ + case 50225: /* ISO-2022-KR */ + case 50227: /* ISO-2022-CN */ + case 50229: /* ISO-2022-CN */ + case 57002: /* x-iscii-de */ + case 57003: /* x-iscii-be */ + case 57004: /* x-iscii-ta */ + case 57005: /* x-iscii-te */ + case 57006: /* x-iscii-as */ + case 57007: /* x-iscii-or */ + case 57008: /* x-iscii-ka */ + case 57009: /* x-iscii-ma */ + case 57010: /* x-iscii-gu */ + case 57011: /* x-iscii-pa */ + case 65000: /* UTF-7 */ + /* no flags allowed */ + break; + default: + flags |= MB_ERR_INVALID_CHARS; + } + unsigned char ch = c; wchar_t wc = WEOF; - if (!MultiByteToWideChar (cp, MB_ERR_INVALID_CHARS, (char*)&ch, 1, &wc, 1)) + if (!MultiByteToWideChar (cp, flags, (char*)&ch, 1, &wc, 1)) return WEOF; return wc; -- 2.46.1.windows.1
From ca05659785a614feb2bb7043905d37eabed31c6a Mon Sep 17 00:00:00 2001 From: Kirill Makurin <maiddais...@outlook.com> Date: Sun, 8 Jun 2025 01:18:54 +0900 Subject: [PATCH 3/3] crt: override CRT's btowc and wctob CRT's wctob sign-extends its return value if it is outside of range [0,127]. This behavior is non-conformant. Override CRT's wctob and btowc with our replacements, which were previously only used for msvcr*.dll builds. Remove btowc and wctob from import libraries. Signed-off-by: Kirill Makurin <maiddais...@outlook.com> --- mingw-w64-crt/Makefile.am | 12 +++++------- .../lib-common/api-ms-win-crt-convert-l1-1-0.def.in | 4 ++-- mingw-w64-crt/lib-common/msvcr120_app.def.in | 4 ++-- mingw-w64-crt/lib-common/msvcrt.def.in | 4 ++-- mingw-w64-crt/lib-common/ucrtbase-common.def.in | 4 ++-- mingw-w64-crt/lib32/msvcp60.def | 6 +++--- mingw-w64-crt/lib32/msvcr100.def.in | 4 ++-- mingw-w64-crt/lib32/msvcr100d.def.in | 4 ++-- mingw-w64-crt/lib32/msvcr110.def.in | 4 ++-- mingw-w64-crt/lib32/msvcr110d.def.in | 4 ++-- mingw-w64-crt/lib32/msvcr120.def.in | 4 ++-- mingw-w64-crt/lib32/msvcr120d.def.in | 4 ++-- mingw-w64-crt/lib32/msvcr80.def.in | 4 ++-- mingw-w64-crt/lib32/msvcr80d.def.in | 4 ++-- mingw-w64-crt/lib32/msvcr90.def.in | 4 ++-- mingw-w64-crt/lib32/msvcr90d.def.in | 4 ++-- mingw-w64-crt/lib64/msvcp60.def | 6 +++--- mingw-w64-crt/lib64/msvcr100.def.in | 4 ++-- mingw-w64-crt/lib64/msvcr100d.def.in | 4 ++-- mingw-w64-crt/lib64/msvcr110.def.in | 4 ++-- mingw-w64-crt/lib64/msvcr110d.def.in | 4 ++-- mingw-w64-crt/lib64/msvcr120.def.in | 4 ++-- mingw-w64-crt/lib64/msvcr120d.def.in | 4 ++-- mingw-w64-crt/lib64/msvcr80.def.in | 4 ++-- mingw-w64-crt/lib64/msvcr80d.def.in | 4 ++-- mingw-w64-crt/lib64/msvcr90.def.in | 4 ++-- mingw-w64-crt/lib64/msvcr90d.def.in | 4 ++-- mingw-w64-crt/libarm32/msvcp60.def | 4 ++-- mingw-w64-crt/libarm32/msvcr110.def.in | 4 ++-- mingw-w64-crt/libarm32/msvcr110d.def.in | 4 ++-- mingw-w64-crt/libarm32/msvcr120.def.in | 4 ++-- mingw-w64-crt/libarm32/msvcr120d.def.in | 4 ++-- 32 files changed, 69 insertions(+), 71 deletions(-) diff --git a/mingw-w64-crt/Makefile.am b/mingw-w64-crt/Makefile.am index e0924b470..75ad7d887 100644 --- a/mingw-w64-crt/Makefile.am +++ b/mingw-w64-crt/Makefile.am @@ -216,7 +216,9 @@ src_msvcrt_common=\ math/sinhf.c \ math/sqrt.c math/sqrtf.c \ math/tanhf.c \ - math/tgamma.c math/tgammaf.c + math/tgamma.c math/tgammaf.c \ + misc/btowc.c \ + misc/wctob.c # Arch specific files included in all libmsvcr*.a on x86 src_msvcrt_common_add_x86=\ @@ -409,8 +411,10 @@ src_ucrtbase=\ misc/__initenv.c \ misc/__winitenv.c \ misc/_onexit.c \ + misc/btowc.c \ misc/output_format.c \ misc/ucrt-access.c \ + misc/wctob.c \ stdio/ucrt___local_stdio_printf_options.c \ stdio/ucrt___local_stdio_scanf_options.c \ stdio/ucrt__scprintf.c \ @@ -549,7 +553,6 @@ src_msvcrt32=\ misc/_get_current_locale.c \ misc/_initterm_e.c \ misc/_time64.c \ - misc/btowc.c \ misc/imaxabs.c \ misc/lc_locale_func.c \ misc/mbrtowc.c \ @@ -564,7 +567,6 @@ src_msvcrt32=\ misc/wcsnlen.c \ misc/wcstoimax.c \ misc/wcstoumax.c \ - misc/wctob.c \ stdio/_fseeki64.c \ stdio/_fstat64.c \ stdio/_fstat64i32.c \ @@ -613,7 +615,6 @@ src_msvcrt64=\ misc/_free_locale.c \ misc/_get_current_locale.c \ misc/_initterm_e.c \ - misc/btowc.c \ misc/mbrtowc.c \ misc/output_format.c \ misc/_get_errno.c \ @@ -622,7 +623,6 @@ src_msvcrt64=\ misc/wassert.c \ misc/wcrtomb.c \ misc/wcsnlen.c \ - misc/wctob.c \ stdio/_fseeki64.c \ string/wcstok.c @@ -868,7 +868,6 @@ src_pre_msvcr80=\ misc/_initterm_e.c \ misc/_recalloc.c \ misc/_set_errno.c \ - misc/btowc.c \ misc/imaxabs.c \ misc/invalid_parameter_handler.c \ misc/mbrtowc.c \ @@ -877,7 +876,6 @@ src_pre_msvcr80=\ misc/wassert.c \ misc/wcrtomb.c \ misc/wcsnlen.c \ - misc/wctob.c \ stdio/_fseeki64.c \ stdio/_fstat64i32.c \ stdio/_ftelli64.c \ diff --git a/mingw-w64-crt/lib-common/api-ms-win-crt-convert-l1-1-0.def.in b/mingw-w64-crt/lib-common/api-ms-win-crt-convert-l1-1-0.def.in index d5e4f259c..517fd022e 100644 --- a/mingw-w64-crt/lib-common/api-ms-win-crt-convert-l1-1-0.def.in +++ b/mingw-w64-crt/lib-common/api-ms-win-crt-convert-l1-1-0.def.in @@ -93,7 +93,7 @@ atof atoi atol atoll -btowc +; btowc c16rtomb c32rtomb mbrtoc16 @@ -128,7 +128,7 @@ wcstombs_s wcstoul wcstoull wcstoumax -wctob +; wctob wctomb wctomb_s wctrans diff --git a/mingw-w64-crt/lib-common/msvcr120_app.def.in b/mingw-w64-crt/lib-common/msvcr120_app.def.in index 42c64240b..8b755607d 100644 --- a/mingw-w64-crt/lib-common/msvcr120_app.def.in +++ b/mingw-w64-crt/lib-common/msvcr120_app.def.in @@ -1877,7 +1877,7 @@ atol atoll bsearch bsearch_s -btowc +; btowc cabs cabsf F_ARM32(cabsl) ; Can't use long double functions from the CRT on x86 @@ -2321,7 +2321,7 @@ wcstoul wcstoull wcstoumax wcsxfrm -wctob +; wctob wctomb wctomb_s wctrans diff --git a/mingw-w64-crt/lib-common/msvcrt.def.in b/mingw-w64-crt/lib-common/msvcrt.def.in index 88c68631e..41cbacd3b 100644 --- a/mingw-w64-crt/lib-common/msvcrt.def.in +++ b/mingw-w64-crt/lib-common/msvcrt.def.in @@ -1795,7 +1795,7 @@ _wtol_l _wutime32 F_I386(== _wutime) ; i386 _wutime32 replaced by alias F_ARM_ANY(asctime_s) ; i386 and x64 asctime_s replaced by emu bsearch_s -F_ARM_ANY(btowc) ; i386 and x64 btowc replaced by emu +; F_ARM_ANY(btowc) ; i386 and x64 btowc replaced by emu clearerr_s fopen_s fprintf_s @@ -1849,7 +1849,7 @@ F_ARM_ANY(wcsrtombs) ; i386 and x64 wcsrtombs replaced by emu wcsrtombs_s F_ARM_ANY(wcstok_s) ; i386 and x64 wcstok_s replaced by emu wcstombs_s -F_ARM_ANY(wctob) ; i386 and x64 wctob replaced by emu +; F_ARM_ANY(wctob) ; i386 and x64 wctob replaced by emu wctomb_s wprintf_s wscanf_s diff --git a/mingw-w64-crt/lib-common/ucrtbase-common.def.in b/mingw-w64-crt/lib-common/ucrtbase-common.def.in index 90a099306..a2854f8c7 100644 --- a/mingw-w64-crt/lib-common/ucrtbase-common.def.in +++ b/mingw-w64-crt/lib-common/ucrtbase-common.def.in @@ -2233,7 +2233,7 @@ atol atoll bsearch bsearch_s -btowc +; btowc c16rtomb c32rtomb cabs @@ -2656,7 +2656,7 @@ wcstoul wcstoull wcstoumax wcsxfrm -wctob +; wctob wctomb wctomb_s wctrans diff --git a/mingw-w64-crt/lib32/msvcp60.def b/mingw-w64-crt/lib32/msvcp60.def index f6a5dc93f..c97e9e299 100644 --- a/mingw-w64-crt/lib32/msvcp60.def +++ b/mingw-w64-crt/lib32/msvcp60.def @@ -59,13 +59,13 @@ EXPORTS ;__Wcrtomb_lk ;_Xbig -btowc +; btowc mbrlen mbrtowc mbsrtowcs towctrans wcrtomb wcsrtombs -wctob +; wctob wctrans -wctype \ No newline at end of file +wctype diff --git a/mingw-w64-crt/lib32/msvcr100.def.in b/mingw-w64-crt/lib32/msvcr100.def.in index b1d73dfb8..3375f79bb 100644 --- a/mingw-w64-crt/lib32/msvcr100.def.in +++ b/mingw-w64-crt/lib32/msvcr100.def.in @@ -1662,7 +1662,7 @@ atoi atol bsearch bsearch_s -btowc +; btowc calloc ceil DATA clearerr @@ -1892,7 +1892,7 @@ wcstombs wcstombs_s wcstoul wcsxfrm -wctob +; wctob wctomb wctomb_s wmemcpy_s diff --git a/mingw-w64-crt/lib32/msvcr100d.def.in b/mingw-w64-crt/lib32/msvcr100d.def.in index 0ec23175a..4a04384e5 100644 --- a/mingw-w64-crt/lib32/msvcr100d.def.in +++ b/mingw-w64-crt/lib32/msvcr100d.def.in @@ -1729,7 +1729,7 @@ atoi atol bsearch bsearch_s -btowc +; btowc calloc ceil DATA ; overwritten clearerr @@ -1955,7 +1955,7 @@ wcstombs wcstombs_s wcstoul wcsxfrm -wctob +; wctob wctomb wctomb_s wmemcpy_s diff --git a/mingw-w64-crt/lib32/msvcr110.def.in b/mingw-w64-crt/lib32/msvcr110.def.in index dee3662b1..0dad5ae65 100644 --- a/mingw-w64-crt/lib32/msvcr110.def.in +++ b/mingw-w64-crt/lib32/msvcr110.def.in @@ -1795,7 +1795,7 @@ atoi atol bsearch bsearch_s -btowc +; btowc calloc ceil DATA clearerr @@ -2021,7 +2021,7 @@ wcstombs wcstombs_s wcstoul wcsxfrm -wctob +; wctob wctomb wctomb_s wmemcpy_s diff --git a/mingw-w64-crt/lib32/msvcr110d.def.in b/mingw-w64-crt/lib32/msvcr110d.def.in index 7719fbd32..4322c39eb 100644 --- a/mingw-w64-crt/lib32/msvcr110d.def.in +++ b/mingw-w64-crt/lib32/msvcr110d.def.in @@ -1862,7 +1862,7 @@ atoi atol bsearch bsearch_s -btowc +; btowc calloc ceil DATA ; overwritten clearerr @@ -2088,7 +2088,7 @@ wcstombs wcstombs_s wcstoul wcsxfrm -wctob +; wctob wctomb wctomb_s wmemcpy_s diff --git a/mingw-w64-crt/lib32/msvcr120.def.in b/mingw-w64-crt/lib32/msvcr120.def.in index 2432346e8..30dc8af15 100644 --- a/mingw-w64-crt/lib32/msvcr120.def.in +++ b/mingw-w64-crt/lib32/msvcr120.def.in @@ -1853,7 +1853,7 @@ atol atoll bsearch bsearch_s -btowc +; btowc cabs cabsf ; cabsl ; Can't use long double functions from the CRT on x86 @@ -2284,7 +2284,7 @@ wcstoul wcstoull wcstoumax wcsxfrm -wctob +; wctob wctomb wctomb_s wctrans diff --git a/mingw-w64-crt/lib32/msvcr120d.def.in b/mingw-w64-crt/lib32/msvcr120d.def.in index a5db51612..5fc4ca3c4 100644 --- a/mingw-w64-crt/lib32/msvcr120d.def.in +++ b/mingw-w64-crt/lib32/msvcr120d.def.in @@ -1920,7 +1920,7 @@ atol atoll bsearch bsearch_s -btowc +; btowc cabs cabsf ; cabsl ; Can't use long double functions from the CRT on x86 @@ -2351,7 +2351,7 @@ wcstoul wcstoull wcstoumax wcsxfrm -wctob +; wctob wctomb wctomb_s wctrans diff --git a/mingw-w64-crt/lib32/msvcr80.def.in b/mingw-w64-crt/lib32/msvcr80.def.in index 9b1b5d1a0..85864b6c4 100644 --- a/mingw-w64-crt/lib32/msvcr80.def.in +++ b/mingw-w64-crt/lib32/msvcr80.def.in @@ -1303,7 +1303,7 @@ atoi atol bsearch bsearch_s -btowc +; btowc calloc ceil DATA clearerr @@ -1526,7 +1526,7 @@ wcstombs wcstombs_s wcstoul wcsxfrm -wctob +; wctob wctomb wctomb_s wprintf diff --git a/mingw-w64-crt/lib32/msvcr80d.def.in b/mingw-w64-crt/lib32/msvcr80d.def.in index 1931dc3ae..9ac8080a0 100644 --- a/mingw-w64-crt/lib32/msvcr80d.def.in +++ b/mingw-w64-crt/lib32/msvcr80d.def.in @@ -1386,7 +1386,7 @@ atoi atol bsearch bsearch_s -btowc +; btowc calloc ceil DATA ; overwritten clearerr @@ -1609,7 +1609,7 @@ wcstombs wcstombs_s wcstoul wcsxfrm -wctob +; wctob wctomb wctomb_s wprintf diff --git a/mingw-w64-crt/lib32/msvcr90.def.in b/mingw-w64-crt/lib32/msvcr90.def.in index 697b92818..4bc181a1c 100644 --- a/mingw-w64-crt/lib32/msvcr90.def.in +++ b/mingw-w64-crt/lib32/msvcr90.def.in @@ -1296,7 +1296,7 @@ atoi atol bsearch bsearch_s -btowc +; btowc calloc ceil DATA clearerr @@ -1524,7 +1524,7 @@ wcstombs wcstombs_s wcstoul wcsxfrm -wctob +; wctob wctomb wctomb_s wprintf diff --git a/mingw-w64-crt/lib32/msvcr90d.def.in b/mingw-w64-crt/lib32/msvcr90d.def.in index f1da7b688..331e4e5ed 100644 --- a/mingw-w64-crt/lib32/msvcr90d.def.in +++ b/mingw-w64-crt/lib32/msvcr90d.def.in @@ -1368,7 +1368,7 @@ atoi atol bsearch bsearch_s -btowc +; btowc calloc ceil DATA clearerr @@ -1596,7 +1596,7 @@ wcstombs wcstombs_s wcstoul wcsxfrm -wctob +; wctob wctomb wctomb_s wprintf diff --git a/mingw-w64-crt/lib64/msvcp60.def b/mingw-w64-crt/lib64/msvcp60.def index b0c348a38..2bed6d1b1 100644 --- a/mingw-w64-crt/lib64/msvcp60.def +++ b/mingw-w64-crt/lib64/msvcp60.def @@ -1,4 +1,4 @@ -; +; ; Exports of file msvcp60.dll ; ; Autogenerated by gen_exportdef @@ -4712,13 +4712,13 @@ _Wcscoll _Wcsxfrm _Xbig __Wcrtomb_lk -btowc +; btowc mbrlen mbrtowc mbsrtowcs towctrans wcrtomb wcsrtombs -wctob +; wctob wctrans wctype diff --git a/mingw-w64-crt/lib64/msvcr100.def.in b/mingw-w64-crt/lib64/msvcr100.def.in index 9b6bc4853..7e1ba45ea 100644 --- a/mingw-w64-crt/lib64/msvcr100.def.in +++ b/mingw-w64-crt/lib64/msvcr100.def.in @@ -1612,7 +1612,7 @@ atoi atol bsearch bsearch_s -btowc +; btowc calloc ceil DATA ceilf DATA @@ -1854,7 +1854,7 @@ wcstombs wcstombs_s wcstoul wcsxfrm -wctob +; wctob wctomb wctomb_s wmemcpy_s diff --git a/mingw-w64-crt/lib64/msvcr100d.def.in b/mingw-w64-crt/lib64/msvcr100d.def.in index 70793d26a..99992f587 100644 --- a/mingw-w64-crt/lib64/msvcr100d.def.in +++ b/mingw-w64-crt/lib64/msvcr100d.def.in @@ -1677,7 +1677,7 @@ atoi atol bsearch bsearch_s -btowc +; btowc calloc ceil DATA ; overwritten ceilf DATA ; overwritten @@ -1919,7 +1919,7 @@ wcstombs wcstombs_s wcstoul wcsxfrm -wctob +; wctob wctomb wctomb_s wmemcpy_s diff --git a/mingw-w64-crt/lib64/msvcr110.def.in b/mingw-w64-crt/lib64/msvcr110.def.in index 777943609..973ae32e5 100644 --- a/mingw-w64-crt/lib64/msvcr110.def.in +++ b/mingw-w64-crt/lib64/msvcr110.def.in @@ -1736,7 +1736,7 @@ atoi atol bsearch bsearch_s -btowc +; btowc calloc ceil ceilf @@ -1978,7 +1978,7 @@ wcstombs wcstombs_s wcstoul wcsxfrm -wctob +; wctob wctomb wctomb_s wmemcpy_s diff --git a/mingw-w64-crt/lib64/msvcr110d.def.in b/mingw-w64-crt/lib64/msvcr110d.def.in index b86002efb..aeabf9a46 100644 --- a/mingw-w64-crt/lib64/msvcr110d.def.in +++ b/mingw-w64-crt/lib64/msvcr110d.def.in @@ -1801,7 +1801,7 @@ atoi atol bsearch bsearch_s -btowc +; btowc calloc ceil ceilf @@ -2043,7 +2043,7 @@ wcstombs wcstombs_s wcstoul wcsxfrm -wctob +; wctob wctomb wctomb_s wmemcpy_s diff --git a/mingw-w64-crt/lib64/msvcr120.def.in b/mingw-w64-crt/lib64/msvcr120.def.in index 3a6bc1a11..4f7998278 100644 --- a/mingw-w64-crt/lib64/msvcr120.def.in +++ b/mingw-w64-crt/lib64/msvcr120.def.in @@ -1793,7 +1793,7 @@ atol atoll bsearch bsearch_s -btowc +; btowc cabs cabsf ; cabsl ; Can't use long double functions from the CRT on x86 @@ -2240,7 +2240,7 @@ wcstoul wcstoull wcstoumax wcsxfrm -wctob +; wctob wctomb wctomb_s wctrans diff --git a/mingw-w64-crt/lib64/msvcr120d.def.in b/mingw-w64-crt/lib64/msvcr120d.def.in index f0d89961d..f15a8d831 100644 --- a/mingw-w64-crt/lib64/msvcr120d.def.in +++ b/mingw-w64-crt/lib64/msvcr120d.def.in @@ -1858,7 +1858,7 @@ atol atoll bsearch bsearch_s -btowc +; btowc cabs cabsf ; cabsl ; Can't use long double functions from the CRT on x86 @@ -2305,7 +2305,7 @@ wcstoul wcstoull wcstoumax wcsxfrm -wctob +; wctob wctomb wctomb_s wctrans diff --git a/mingw-w64-crt/lib64/msvcr80.def.in b/mingw-w64-crt/lib64/msvcr80.def.in index 08d972368..90460e6b0 100644 --- a/mingw-w64-crt/lib64/msvcr80.def.in +++ b/mingw-w64-crt/lib64/msvcr80.def.in @@ -1235,7 +1235,7 @@ atoi atol bsearch bsearch_s -btowc +; btowc calloc ceil DATA ceilf DATA @@ -1474,7 +1474,7 @@ wcstombs wcstombs_s wcstoul wcsxfrm -wctob +; wctob wctomb wctomb_s wprintf diff --git a/mingw-w64-crt/lib64/msvcr80d.def.in b/mingw-w64-crt/lib64/msvcr80d.def.in index caeb5cec4..64cdd593c 100644 --- a/mingw-w64-crt/lib64/msvcr80d.def.in +++ b/mingw-w64-crt/lib64/msvcr80d.def.in @@ -1312,7 +1312,7 @@ atoi atol bsearch bsearch_s -btowc +; btowc calloc ceil DATA ; overwritten ceilf DATA ; overwritten @@ -1551,7 +1551,7 @@ wcstombs wcstombs_s wcstoul wcsxfrm -wctob +; wctob wctomb wctomb_s wprintf diff --git a/mingw-w64-crt/lib64/msvcr90.def.in b/mingw-w64-crt/lib64/msvcr90.def.in index ddf7bfb86..4b12c3152 100644 --- a/mingw-w64-crt/lib64/msvcr90.def.in +++ b/mingw-w64-crt/lib64/msvcr90.def.in @@ -1232,7 +1232,7 @@ atoi atol bsearch bsearch_s -btowc +; btowc calloc ceil DATA ceilf DATA @@ -1472,7 +1472,7 @@ wcstombs wcstombs_s wcstoul wcsxfrm -wctob +; wctob wctomb wctomb_s wprintf diff --git a/mingw-w64-crt/lib64/msvcr90d.def.in b/mingw-w64-crt/lib64/msvcr90d.def.in index c26790c9b..2f52f37e5 100644 --- a/mingw-w64-crt/lib64/msvcr90d.def.in +++ b/mingw-w64-crt/lib64/msvcr90d.def.in @@ -1298,7 +1298,7 @@ atoi atol bsearch bsearch_s -btowc +; btowc calloc ceil DATA ceilf DATA @@ -1538,7 +1538,7 @@ wcstombs wcstombs_s wcstoul wcsxfrm -wctob +; wctob wctomb wctomb_s wprintf diff --git a/mingw-w64-crt/libarm32/msvcp60.def b/mingw-w64-crt/libarm32/msvcp60.def index ccb242c4e..6b35f0771 100644 --- a/mingw-w64-crt/libarm32/msvcp60.def +++ b/mingw-w64-crt/libarm32/msvcp60.def @@ -2293,13 +2293,13 @@ _Toupper _Wcrtomb _Xbig __Wcrtomb_lk -btowc +; btowc mbrlen mbrtowc mbsrtowcs towctrans wcrtomb wcsrtombs -wctob +; wctob wctrans wctype diff --git a/mingw-w64-crt/libarm32/msvcr110.def.in b/mingw-w64-crt/libarm32/msvcr110.def.in index f7363708e..79dfcc517 100644 --- a/mingw-w64-crt/libarm32/msvcr110.def.in +++ b/mingw-w64-crt/libarm32/msvcr110.def.in @@ -1722,7 +1722,7 @@ atoi atol bsearch bsearch_s -btowc +; btowc calloc ceil ceilf @@ -1965,7 +1965,7 @@ wcstombs wcstombs_s wcstoul wcsxfrm -wctob +; wctob wctomb wctomb_s wmemcpy_s diff --git a/mingw-w64-crt/libarm32/msvcr110d.def.in b/mingw-w64-crt/libarm32/msvcr110d.def.in index 66a344ce8..e928c2534 100644 --- a/mingw-w64-crt/libarm32/msvcr110d.def.in +++ b/mingw-w64-crt/libarm32/msvcr110d.def.in @@ -1787,7 +1787,7 @@ atoi atol bsearch bsearch_s -btowc +; btowc calloc ceil ceilf @@ -2030,7 +2030,7 @@ wcstombs wcstombs_s wcstoul wcsxfrm -wctob +; wctob wctomb wctomb_s wmemcpy_s diff --git a/mingw-w64-crt/libarm32/msvcr120.def.in b/mingw-w64-crt/libarm32/msvcr120.def.in index e43e29da9..f14065714 100644 --- a/mingw-w64-crt/libarm32/msvcr120.def.in +++ b/mingw-w64-crt/libarm32/msvcr120.def.in @@ -1760,7 +1760,7 @@ atol atoll bsearch bsearch_s -btowc +; btowc cabs cabsf cabsl @@ -2208,7 +2208,7 @@ wcstoul wcstoull wcstoumax wcsxfrm -wctob +; wctob wctomb wctomb_s wctrans diff --git a/mingw-w64-crt/libarm32/msvcr120d.def.in b/mingw-w64-crt/libarm32/msvcr120d.def.in index 7241a9e7b..1b9a1676d 100644 --- a/mingw-w64-crt/libarm32/msvcr120d.def.in +++ b/mingw-w64-crt/libarm32/msvcr120d.def.in @@ -1825,7 +1825,7 @@ atol atoll bsearch bsearch_s -btowc +; btowc cabs cabsf cabsl @@ -2273,7 +2273,7 @@ wcstoul wcstoull wcstoumax wcsxfrm -wctob +; wctob wctomb wctomb_s wctrans -- 2.46.1.windows.1
_______________________________________________ Mingw-w64-public mailing list Mingw-w64-public@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/mingw-w64-public