[Mingw-w64-public] [PATCH 10/10] crt: Move find, stat and time aliases to def-include/msvcrt-common.def.in

2024-04-22 Thread Pali Rohár
Add 4 new macros FIXED_SIZE_SYMBOLS, NO_I64_FIXED_SIZE,
NO_FIXED_SIZE_64_ALIAS and NO_TIME_ALIAS to distinguish
between different crt versions.
---
 .../def-include/msvcrt-common.def.in  | 154 ++
 mingw-w64-crt/lib-common/msvcr120_app.def.in  |  33 +---
 mingw-w64-crt/lib-common/msvcrt.def.in|  23 +--
 mingw-w64-crt/lib-common/ucrtbase.def.in  |  12 --
 mingw-w64-crt/lib32/crtdll.def.in |  12 +-
 mingw-w64-crt/lib32/msvcr100.def.in   |  18 --
 mingw-w64-crt/lib32/msvcr110.def.in   |  18 --
 mingw-w64-crt/lib32/msvcr120.def.in   |  14 --
 mingw-w64-crt/lib32/msvcr120d.def.in  |  14 --
 mingw-w64-crt/lib32/msvcr70.def.in|  12 +-
 mingw-w64-crt/lib32/msvcr71.def.in|  12 +-
 mingw-w64-crt/lib32/msvcr80.def.in|  22 ---
 mingw-w64-crt/lib32/msvcr90.def.in|  18 --
 mingw-w64-crt/lib32/msvcr90d.def.in   |  17 --
 mingw-w64-crt/lib32/msvcrt10.def.in   |  12 +-
 mingw-w64-crt/lib32/msvcrt20.def.in   |  13 +-
 mingw-w64-crt/lib32/msvcrt40.def.in   |  12 +-
 mingw-w64-crt/lib64/msvcr100.def.in   |  18 --
 mingw-w64-crt/lib64/msvcr110.def.in   |  18 --
 mingw-w64-crt/lib64/msvcr120.def.in   |  14 --
 mingw-w64-crt/lib64/msvcr120d.def.in  |  13 --
 mingw-w64-crt/lib64/msvcr80.def.in|  22 ---
 mingw-w64-crt/lib64/msvcr90.def.in|  18 --
 mingw-w64-crt/lib64/msvcr90d.def.in   |  18 --
 24 files changed, 169 insertions(+), 368 deletions(-)

diff --git a/mingw-w64-crt/def-include/msvcrt-common.def.in 
b/mingw-w64-crt/def-include/msvcrt-common.def.in
index 3e2c674d3699..abca29686531 100644
--- a/mingw-w64-crt/def-include/msvcrt-common.def.in
+++ b/mingw-w64-crt/def-include/msvcrt-common.def.in
@@ -197,6 +197,160 @@ _strtoimax_l == _strtoi64_l
 _strtoumax_l == _strtoui64_l
 #endif
 
+; This is list of find symbol aliases, every CRT library has either find 
symbols with SIZE suffix or without them
+#ifdef FIXED_SIZE_SYMBOLS
+F32(_findfirst32 == _findfirst)
+F64(_findfirst64i32 == _findfirst)
+#ifndef NO_I64_FIXED_SIZE
+F32(_findfirst32i64 == _findfirsti64)
+#ifndef NO_FIXED_SIZE_64_ALIAS
+F64(_findfirst64 == _findfirsti64)
+#endif
+#endif
+F32(_findnext32 == _findnext)
+F64(_findnext64i32 == _findnext)
+#ifndef NO_I64_FIXED_SIZE
+F32(_findnext32i64 == _findnexti64)
+#ifndef NO_FIXED_SIZE_64_ALIAS
+F64(_findnext64 == _findnexti64)
+#endif
+#endif
+#ifndef NO_WIDE_FIXED_SIZE
+F32(_wfindfirst32 == _wfindfirst)
+F64(_wfindfirst64i32 == _wfindfirst)
+#ifndef NO_I64_FIXED_SIZE
+F32(_wfindfirst32i64 == _wfindfirsti64)
+#ifndef NO_FIXED_SIZE_64_ALIAS
+F64(_wfindfirst64 == _wfindfirsti64)
+#endif
+#endif
+F32(_wfindnext32 == _wfindnext)
+F64(_wfindnext64i32 == _wfindnext)
+#ifndef NO_I64_FIXED_SIZE
+F32(_wfindnext32i64 == _wfindnexti64)
+#ifndef NO_FIXED_SIZE_64_ALIAS
+F64(_wfindnext64 == _wfindnexti64)
+#endif
+#endif
+#endif
+#else
+F32(_findfirst == _findfirst32)
+F64(_findfirst == _findfirst64i32)
+F32(_findfirsti64 == _findfirst32i64)
+F64(_findfirsti64 == _findfirst64)
+F32(_findnext == _findnext32)
+F64(_findnext == _findnext64i32)
+F32(_findnexti64 == _findnext32i64)
+F64(_findnexti64 == _findnext64)
+F32(_wfindfirst == _wfindfirst32)
+F64(_wfindfirst == _wfindfirst64i32)
+F32(_wfindfirsti64 == _wfindfirst32i64)
+F64(_wfindfirsti64 == _wfindfirst64)
+F32(_wfindnext == _wfindnext32)
+F64(_wfindnext == _wfindnext64i32)
+F32(_wfindnexti64 == _wfindnext32i64)
+F64(_wfindnexti64 == _wfindnext64)
+#endif
+
+; This is list of stat symbol aliases, every CRT library has either stat 
symbols with SIZE suffix or without them
+#ifdef FIXED_SIZE_SYMBOLS
+F32(_fstat32 == _fstat)
+F64(_fstat64i32 == _fstat)
+#ifndef NO_I64_FIXED_SIZE
+F32(_fstat32i64 == _fstati64)
+#ifndef NO_FIXED_SIZE_64_ALIAS
+F64(_fstat64 == _fstati64)
+#endif
+#endif
+F32(_stat32 == _stat)
+F64(_stat64i32 == _stat)
+#ifndef NO_I64_FIXED_SIZE
+F32(_stat32i64 == _stati64)
+#ifndef NO_FIXED_SIZE_64_ALIAS
+F64(_stat64 == _stati64)
+#endif
+#endif
+#ifndef NO_WIDE_FIXED_SIZE
+F32(_wstat32 == _wstat)
+F64(_wstat64i32 == _wstat)
+#ifndef NO_I64_FIXED_SIZE
+F32(_wstat32i64 == _wstati64)
+#ifndef NO_FIXED_SIZE_64_ALIAS
+F64(_wstat64 == _wstati64)
+#endif
+#endif
+#endif
+#else
+F32(_fstat == _fstat32)
+F64(_fstat == _fstat64i32)
+F32(_fstati64 == _fstat32i64)
+F64(_fstati64 == _fstat64)
+F32(_stat == _stat32)
+F64(_stat == _stat64i32)
+F32(_stati64 == _stat32i64)
+F64(_stati64 == _stat64)
+F32(_wstat == _wstat32)
+F64(_wstat == _wstat64i32)
+F32(_wstati64 == _wstat32i64)
+F64(_wstati64 == _wstat64)
+#endif
+
+; This is list of time symbol aliases, every CRT library except msvcrt.dll has 
either time symbols with SIZE suffix or without them
+#ifndef NO_TIME_ALIAS
+#ifdef FIXED_SIZE_SYMBOLS
+F32(_ctime32 == ctime)
+F64(_ctime64 == ctime)
+F32(_difftime32 == difftime)
+F64(_difftime64 == difftime)
+F32(_ftime32 == _ftime)
+F64(_ftime64 == _ftime)
+F32(_futime32 

[Mingw-w64-public] [PATCH 09/10] crt: Move strto[u]ll(_l)/strto[iu]max(_l) aliases to def-include/msvcrt-common.def.in

2024-04-22 Thread Pali Rohár
Define symbol aliases based on a new WITH_STRTO64_ALIAS and
WITH_STRTO64_L_ALIAS macros.
---
 mingw-w64-crt/def-include/msvcrt-common.def.in | 14 ++
 mingw-w64-crt/lib-common/msvcrt.def.in | 13 +++--
 mingw-w64-crt/lib32/msvcr100.def.in| 10 ++
 mingw-w64-crt/lib32/msvcr110.def.in| 10 ++
 mingw-w64-crt/lib32/msvcr70.def.in |  5 +
 mingw-w64-crt/lib32/msvcr71.def.in |  5 +
 mingw-w64-crt/lib32/msvcr80.def.in |  6 ++
 mingw-w64-crt/lib32/msvcr90.def.in | 10 ++
 mingw-w64-crt/lib32/msvcr90d.def.in| 10 ++
 mingw-w64-crt/lib64/msvcr100.def.in| 10 ++
 mingw-w64-crt/lib64/msvcr110.def.in| 10 ++
 mingw-w64-crt/lib64/msvcr80.def.in |  6 ++
 mingw-w64-crt/lib64/msvcr90.def.in | 10 ++
 mingw-w64-crt/lib64/msvcr90d.def.in| 10 ++
 14 files changed, 39 insertions(+), 90 deletions(-)

diff --git a/mingw-w64-crt/def-include/msvcrt-common.def.in 
b/mingw-w64-crt/def-include/msvcrt-common.def.in
index 968c5f95f530..3e2c674d3699 100644
--- a/mingw-w64-crt/def-include/msvcrt-common.def.in
+++ b/mingw-w64-crt/def-include/msvcrt-common.def.in
@@ -183,6 +183,20 @@ imaxabs == llabs
 imaxdiv == lldiv
 #endif
 
+#ifdef WITH_STRTO64_ALIAS
+strtoll == _strtoi64
+strtoull == _strtoui64
+strtoimax == _strtoi64
+strtoumax == _strtoui64
+#endif
+
+#ifdef WITH_STRTO64_L_ALIAS
+_strtoll_l == _strtoi64_l
+_strtoull_l == _strtoui64_l
+_strtoimax_l == _strtoi64_l
+_strtoumax_l == _strtoui64_l
+#endif
+
 ; This is list of printf/scanf symbol aliases with __ms_ prefix
 #ifndef UCRTBASE
 __ms_fprintf == fprintf
diff --git a/mingw-w64-crt/lib-common/msvcrt.def.in 
b/mingw-w64-crt/lib-common/msvcrt.def.in
index 8bfb5b59bc63..4057ff749359 100644
--- a/mingw-w64-crt/lib-common/msvcrt.def.in
+++ b/mingw-w64-crt/lib-common/msvcrt.def.in
@@ -5,9 +5,12 @@ EXPORTS
 #define NO_STRCMPI_ALIAS
 #define WITH_ATOLL_ALIAS
 #define WITH_ATOLL_L_ALIAS
+#define WITH_STRTO64_L_ALIAS
 #ifndef DEF_I386
 ; i386 llabs and imaxabs alias provided by emu
 #define WITH_LLABS_ALIAS
+; i386 strtoll, strtoull, strtoimax and strtoumax alias provided by emu
+#define WITH_STRTO64_ALIAS
 #endif
 #include "func.def.in"
 #include "msvcrt-common.def.in"
@@ -1849,16 +1852,6 @@ F64(_wfindnext64i32 == _wfindnext)
 F32(_wstat32 == _wstat)
 F64(_wstat64i32 == _wstat)
 
-; This is list of some symbols added in msvcr120.dll which can be defined as 
aliases to some msvcrt.dll symbols
-_strtoimax_l == _strtoi64_l
-_strtoll_l == _strtoi64_l
-_strtoull_l == _strtoui64_l
-_strtoumax_l == _strtoui64_l
-F_NON_I386(strtoimax == _strtoi64) ; i386 strtoimax alias provided by emu
-F_NON_I386(strtoll == _strtoi64) ; i386 strtoll alias provided by emu
-F_NON_I386(strtoull == _strtoui64) ; i386 strtoull alias provided by emu
-F_NON_I386(strtoumax == _strtoui64) ; i386 strtoumax alias provided by emu
-
 ; This is list of additional symbol aliases not available in any CRT library
 ; FIXME: check if these really are needed
 F32(_ftime_s == _ftime32_s)
diff --git a/mingw-w64-crt/lib32/msvcr100.def.in 
b/mingw-w64-crt/lib32/msvcr100.def.in
index 863255f7b0dc..6313239adf7d 100644
--- a/mingw-w64-crt/lib32/msvcr100.def.in
+++ b/mingw-w64-crt/lib32/msvcr100.def.in
@@ -10,6 +10,8 @@ EXPORTS
 #define WITH_ATOLL_L_ALIAS
 #define WITH_IMAXABS_ALIAS
 #define WITH_IMAXDIV_ALIAS
+#define WITH_STRTO64_ALIAS
+#define WITH_STRTO64_L_ALIAS
 #include "msvcrt-common.def.in"
 
 ; public: __thiscall Concurrency::details::<0x1ULL>::<0x1ULL>(void(__cdecl 
*)(void))
@@ -1405,18 +1407,10 @@ _strtime
 _strtime_s
 _strtod_l
 _strtoi64
-strtoll == _strtoi64
-strtoimax == _strtoi64
 _strtoi64_l
-_strtoll_l == _strtoi64_l
-_strtoimax_l == _strtoi64_l
 _strtol_l
 _strtoui64
-strtoull == _strtoui64
-strtoumax == _strtoui64
 _strtoui64_l
-_strtoull_l == _strtoui64_l
-_strtoumax_l == _strtoui64_l
 _strtoul_l
 _strupr
 _strupr_l
diff --git a/mingw-w64-crt/lib32/msvcr110.def.in 
b/mingw-w64-crt/lib32/msvcr110.def.in
index c5bb95e450e8..51e64e0967d4 100644
--- a/mingw-w64-crt/lib32/msvcr110.def.in
+++ b/mingw-w64-crt/lib32/msvcr110.def.in
@@ -10,6 +10,8 @@ EXPORTS
 #define WITH_ATOLL_L_ALIAS
 #define WITH_IMAXABS_ALIAS
 #define WITH_IMAXDIV_ALIAS
+#define WITH_STRTO64_ALIAS
+#define WITH_STRTO64_L_ALIAS
 #include "msvcrt-common.def.in"
 
 ; public: __thiscall Concurrency::details::<0x1ULL>::<0x1ULL>(void(__cdecl 
*)(void))
@@ -1538,18 +1540,10 @@ _strtime
 _strtime_s
 _strtod_l
 _strtoi64
-strtoll == _strtoi64
-strtoimax == _strtoi64
 _strtoi64_l
-_strtoll_l == _strtoi64_l
-_strtoimax_l == _strtoi64_l
 _strtol_l
 _strtoui64
-strtoull == _strtoui64
-strtoumax == _strtoui64
 _strtoui64_l
-_strtoull_l == _strtoui64_l
-_strtoumax_l == _strtoui64_l
 _strtoul_l
 _strupr
 _strupr_l
diff --git a/mingw-w64-crt/lib32/msvcr70.def.in 
b/mingw-w64-crt/lib32/msvcr70.def.in
index 266643b4d015..f95164edac0e 

[Mingw-w64-public] [PATCH 08/10] crt: Move imaxdiv alias to def-include/msvcrt-common.def.in

2024-04-22 Thread Pali Rohár
Define imaxdiv alias based on a new WITH_IMAXDIV_ALIAS macro.
---
 mingw-w64-crt/def-include/msvcrt-common.def.in | 4 
 mingw-w64-crt/lib32/msvcr100.def.in| 2 +-
 mingw-w64-crt/lib32/msvcr110.def.in| 2 +-
 mingw-w64-crt/lib64/msvcr100.def.in| 2 +-
 mingw-w64-crt/lib64/msvcr110.def.in| 2 +-
 5 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/mingw-w64-crt/def-include/msvcrt-common.def.in 
b/mingw-w64-crt/def-include/msvcrt-common.def.in
index d91429763f40..968c5f95f530 100644
--- a/mingw-w64-crt/def-include/msvcrt-common.def.in
+++ b/mingw-w64-crt/def-include/msvcrt-common.def.in
@@ -179,6 +179,10 @@ imaxabs == _abs64
 imaxabs == llabs
 #endif
 
+#ifdef WITH_IMAXDIV_ALIAS
+imaxdiv == lldiv
+#endif
+
 ; This is list of printf/scanf symbol aliases with __ms_ prefix
 #ifndef UCRTBASE
 __ms_fprintf == fprintf
diff --git a/mingw-w64-crt/lib32/msvcr100.def.in 
b/mingw-w64-crt/lib32/msvcr100.def.in
index 4e810dd4f20a..863255f7b0dc 100644
--- a/mingw-w64-crt/lib32/msvcr100.def.in
+++ b/mingw-w64-crt/lib32/msvcr100.def.in
@@ -9,6 +9,7 @@ EXPORTS
 #define WITH_ATOLL_ALIAS
 #define WITH_ATOLL_L_ALIAS
 #define WITH_IMAXABS_ALIAS
+#define WITH_IMAXDIV_ALIAS
 #include "msvcrt-common.def.in"
 
 ; public: __thiscall Concurrency::details::<0x1ULL>::<0x1ULL>(void(__cdecl 
*)(void))
@@ -1779,7 +1780,6 @@ ldexp DATA
 ldiv
 llabs
 lldiv
-imaxdiv == lldiv
 localeconv
 log DATA
 ; If we implement log10, we can set it to DATA only.
diff --git a/mingw-w64-crt/lib32/msvcr110.def.in 
b/mingw-w64-crt/lib32/msvcr110.def.in
index 1c6b6d045154..c5bb95e450e8 100644
--- a/mingw-w64-crt/lib32/msvcr110.def.in
+++ b/mingw-w64-crt/lib32/msvcr110.def.in
@@ -9,6 +9,7 @@ EXPORTS
 #define WITH_ATOLL_ALIAS
 #define WITH_ATOLL_L_ALIAS
 #define WITH_IMAXABS_ALIAS
+#define WITH_IMAXDIV_ALIAS
 #include "msvcrt-common.def.in"
 
 ; public: __thiscall Concurrency::details::<0x1ULL>::<0x1ULL>(void(__cdecl 
*)(void))
@@ -1912,7 +1913,6 @@ ldexp DATA
 ldiv
 llabs
 lldiv
-imaxdiv == lldiv
 localeconv
 log DATA
 ; If we implement log10, we can set it to DATA only.
diff --git a/mingw-w64-crt/lib64/msvcr100.def.in 
b/mingw-w64-crt/lib64/msvcr100.def.in
index 6f9a8865ebcc..5efc3ccb13df 100644
--- a/mingw-w64-crt/lib64/msvcr100.def.in
+++ b/mingw-w64-crt/lib64/msvcr100.def.in
@@ -9,6 +9,7 @@ EXPORTS
 #define WITH_ATOLL_ALIAS
 #define WITH_ATOLL_L_ALIAS
 #define WITH_IMAXABS_ALIAS
+#define WITH_IMAXDIV_ALIAS
 #include "msvcrt-common.def.in"
 
 $I10_OUTPUT
@@ -1735,7 +1736,6 @@ ldexp DATA
 ldiv
 llabs
 lldiv
-imaxdiv == lldiv
 localeconv
 log DATA
 log10
diff --git a/mingw-w64-crt/lib64/msvcr110.def.in 
b/mingw-w64-crt/lib64/msvcr110.def.in
index 7f86ecb7f93a..4618592bed35 100644
--- a/mingw-w64-crt/lib64/msvcr110.def.in
+++ b/mingw-w64-crt/lib64/msvcr110.def.in
@@ -9,6 +9,7 @@ EXPORTS
 #define WITH_ATOLL_ALIAS
 #define WITH_ATOLL_L_ALIAS
 #define WITH_IMAXABS_ALIAS
+#define WITH_IMAXDIV_ALIAS
 #include "msvcrt-common.def.in"
 
 $I10_OUTPUT
@@ -1859,7 +1860,6 @@ ldexp
 ldiv
 llabs
 lldiv
-imaxdiv == lldiv
 localeconv
 log
 log10
-- 
2.20.1



___
Mingw-w64-public mailing list
Mingw-w64-public@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public


[Mingw-w64-public] [PATCH 03/10] crt: Remove _fgetc_nolock symbol alias

2024-04-22 Thread Pali Rohár
Symbol _fgetc_nolock is provided via mingw-w64-crt/stdio/_getc_nolock.c
---
 mingw-w64-crt/lib32/msvcr90.def.in  | 1 -
 mingw-w64-crt/lib32/msvcr90d.def.in | 1 -
 mingw-w64-crt/lib64/msvcr90.def.in  | 1 -
 mingw-w64-crt/lib64/msvcr90d.def.in | 1 -
 4 files changed, 4 deletions(-)

diff --git a/mingw-w64-crt/lib32/msvcr90.def.in 
b/mingw-w64-crt/lib32/msvcr90.def.in
index ea0411224301..491be2a912fe 100644
--- a/mingw-w64-crt/lib32/msvcr90.def.in
+++ b/mingw-w64-crt/lib32/msvcr90.def.in
@@ -563,7 +563,6 @@ _get_tzname
 _get_unexpected
 _get_wpgmptr
 _getc_nolock
-_fgetc_nolock == _getc_nolock
 _getch
 _getch_nolock
 _getche
diff --git a/mingw-w64-crt/lib32/msvcr90d.def.in 
b/mingw-w64-crt/lib32/msvcr90d.def.in
index 5628be3786bb..f6437524b7ff 100644
--- a/mingw-w64-crt/lib32/msvcr90d.def.in
+++ b/mingw-w64-crt/lib32/msvcr90d.def.in
@@ -624,7 +624,6 @@ _get_tzname
 _get_unexpected
 _get_wpgmptr
 _getc_nolock
-_fgetc_nolock == _getc_nolock
 _getch
 _getch_nolock
 _getche
diff --git a/mingw-w64-crt/lib64/msvcr90.def.in 
b/mingw-w64-crt/lib64/msvcr90.def.in
index 7f207ad81c46..4a7f62476dd5 100644
--- a/mingw-w64-crt/lib64/msvcr90.def.in
+++ b/mingw-w64-crt/lib64/msvcr90.def.in
@@ -509,7 +509,6 @@ _get_tzname
 _get_unexpected
 _get_wpgmptr
 _getc_nolock
-_fgetc_nolock == _getc_nolock
 _getch
 _getch_nolock
 _getche
diff --git a/mingw-w64-crt/lib64/msvcr90d.def.in 
b/mingw-w64-crt/lib64/msvcr90d.def.in
index b95295a8995f..980773b3263d 100644
--- a/mingw-w64-crt/lib64/msvcr90d.def.in
+++ b/mingw-w64-crt/lib64/msvcr90d.def.in
@@ -564,7 +564,6 @@ _get_tzname
 _get_unexpected
 _get_wpgmptr
 _getc_nolock
-_fgetc_nolock == _getc_nolock
 _getch
 _getch_nolock
 _getche
-- 
2.20.1



___
Mingw-w64-public mailing list
Mingw-w64-public@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public


[Mingw-w64-public] [PATCH 07/10] crt: Move llabs and imaxabs aliases to def-include/msvcrt-common.def.in

2024-04-22 Thread Pali Rohár
Define llabs and imaxabs aliases based on a new WITH_LLABS_ALIAS and
WITH_IMAXABS_ALIAS macros.
---
 mingw-w64-crt/def-include/msvcrt-common.def.in | 7 +++
 mingw-w64-crt/lib-common/msvcrt.def.in | 6 --
 mingw-w64-crt/lib32/msvcr100.def.in| 2 +-
 mingw-w64-crt/lib32/msvcr110.def.in| 2 +-
 mingw-w64-crt/lib32/msvcr80.def.in | 3 +--
 mingw-w64-crt/lib32/msvcr90.def.in | 3 +--
 mingw-w64-crt/lib32/msvcr90d.def.in| 3 +--
 mingw-w64-crt/lib64/msvcr100.def.in| 2 +-
 mingw-w64-crt/lib64/msvcr110.def.in| 2 +-
 mingw-w64-crt/lib64/msvcr80.def.in | 3 +--
 mingw-w64-crt/lib64/msvcr90.def.in | 3 +--
 mingw-w64-crt/lib64/msvcr90d.def.in| 3 +--
 12 files changed, 21 insertions(+), 18 deletions(-)

diff --git a/mingw-w64-crt/def-include/msvcrt-common.def.in 
b/mingw-w64-crt/def-include/msvcrt-common.def.in
index ea05823f0829..d91429763f40 100644
--- a/mingw-w64-crt/def-include/msvcrt-common.def.in
+++ b/mingw-w64-crt/def-include/msvcrt-common.def.in
@@ -172,6 +172,13 @@ atoll == _atoi64
 _atoll_l == _atoi64_l
 #endif
 
+#ifdef WITH_LLABS_ALIAS
+llabs == _abs64
+imaxabs == _abs64
+#elif defined(WITH_IMAXABS_ALIAS)
+imaxabs == llabs
+#endif
+
 ; This is list of printf/scanf symbol aliases with __ms_ prefix
 #ifndef UCRTBASE
 __ms_fprintf == fprintf
diff --git a/mingw-w64-crt/lib-common/msvcrt.def.in 
b/mingw-w64-crt/lib-common/msvcrt.def.in
index 5b383dba4e52..8bfb5b59bc63 100644
--- a/mingw-w64-crt/lib-common/msvcrt.def.in
+++ b/mingw-w64-crt/lib-common/msvcrt.def.in
@@ -5,6 +5,10 @@ EXPORTS
 #define NO_STRCMPI_ALIAS
 #define WITH_ATOLL_ALIAS
 #define WITH_ATOLL_L_ALIAS
+#ifndef DEF_I386
+; i386 llabs and imaxabs alias provided by emu
+#define WITH_LLABS_ALIAS
+#endif
 #include "func.def.in"
 #include "msvcrt-common.def.in"
 
@@ -1850,8 +1854,6 @@ _strtoimax_l == _strtoi64_l
 _strtoll_l == _strtoi64_l
 _strtoull_l == _strtoui64_l
 _strtoumax_l == _strtoui64_l
-F_NON_I386(imaxabs == _abs64) ; i386 imaxabs alias provided by emu
-F_NON_I386(llabs == _abs64) ; i386 llabs alias provided by emu
 F_NON_I386(strtoimax == _strtoi64) ; i386 strtoimax alias provided by emu
 F_NON_I386(strtoll == _strtoi64) ; i386 strtoll alias provided by emu
 F_NON_I386(strtoull == _strtoui64) ; i386 strtoull alias provided by emu
diff --git a/mingw-w64-crt/lib32/msvcr100.def.in 
b/mingw-w64-crt/lib32/msvcr100.def.in
index 5cd2bc809d12..4e810dd4f20a 100644
--- a/mingw-w64-crt/lib32/msvcr100.def.in
+++ b/mingw-w64-crt/lib32/msvcr100.def.in
@@ -8,6 +8,7 @@ EXPORTS
 
 #define WITH_ATOLL_ALIAS
 #define WITH_ATOLL_L_ALIAS
+#define WITH_IMAXABS_ALIAS
 #include "msvcrt-common.def.in"
 
 ; public: __thiscall Concurrency::details::<0x1ULL>::<0x1ULL>(void(__cdecl 
*)(void))
@@ -1777,7 +1778,6 @@ labs
 ldexp DATA
 ldiv
 llabs
-imaxabs == llabs
 lldiv
 imaxdiv == lldiv
 localeconv
diff --git a/mingw-w64-crt/lib32/msvcr110.def.in 
b/mingw-w64-crt/lib32/msvcr110.def.in
index 4c714b7e5230..1c6b6d045154 100644
--- a/mingw-w64-crt/lib32/msvcr110.def.in
+++ b/mingw-w64-crt/lib32/msvcr110.def.in
@@ -8,6 +8,7 @@ EXPORTS
 
 #define WITH_ATOLL_ALIAS
 #define WITH_ATOLL_L_ALIAS
+#define WITH_IMAXABS_ALIAS
 #include "msvcrt-common.def.in"
 
 ; public: __thiscall Concurrency::details::<0x1ULL>::<0x1ULL>(void(__cdecl 
*)(void))
@@ -1910,7 +1911,6 @@ labs
 ldexp DATA
 ldiv
 llabs
-imaxabs == llabs
 lldiv
 imaxdiv == lldiv
 localeconv
diff --git a/mingw-w64-crt/lib32/msvcr80.def.in 
b/mingw-w64-crt/lib32/msvcr80.def.in
index 6e925eb7c285..9143ac279a85 100644
--- a/mingw-w64-crt/lib32/msvcr80.def.in
+++ b/mingw-w64-crt/lib32/msvcr80.def.in
@@ -3,6 +3,7 @@ EXPORTS
 
 #define WITH_ATOLL_ALIAS
 #define WITH_ATOLL_L_ALIAS
+#define WITH_LLABS_ALIAS
 #include "msvcrt-common.def.in"
 
 ; C++ mangled symbols
@@ -333,8 +334,6 @@ __wgetmainargs
 __winitenv DATA
 _abnormal_termination
 _abs64
-llabs == _abs64
-imaxabs == _abs64
 _access
 _access_s
 _acmdln DATA
diff --git a/mingw-w64-crt/lib32/msvcr90.def.in 
b/mingw-w64-crt/lib32/msvcr90.def.in
index bbeb8c00ff5a..63219131a765 100644
--- a/mingw-w64-crt/lib32/msvcr90.def.in
+++ b/mingw-w64-crt/lib32/msvcr90.def.in
@@ -8,6 +8,7 @@ EXPORTS
 
 #define WITH_ATOLL_ALIAS
 #define WITH_ATOLL_L_ALIAS
+#define WITH_LLABS_ALIAS
 #include "msvcrt-common.def.in"
 
 ; public: __thiscall std::__non_rtti_object::__non_rtti_object(class 
std::__non_rtti_object const &)
@@ -331,8 +332,6 @@ __wgetmainargs
 __winitenv DATA
 _abnormal_termination
 _abs64
-llabs == _abs64
-imaxabs == _abs64
 _access
 _access_s
 _acmdln DATA
diff --git a/mingw-w64-crt/lib32/msvcr90d.def.in 
b/mingw-w64-crt/lib32/msvcr90d.def.in
index c93c2c7133e0..071b537b2e60 100644
--- a/mingw-w64-crt/lib32/msvcr90d.def.in
+++ b/mingw-w64-crt/lib32/msvcr90d.def.in
@@ -8,6 +8,7 @@ EXPORTS
 
 #define WITH_ATOLL_ALIAS
 #define WITH_ATOLL_L_ALIAS
+#define WITH_LLABS_ALIAS
 #include "msvcrt-common.def.in"
 
 ; public: __thiscall 

[Mingw-w64-public] [PATCH 04/10] crt: Move __ms_* symbol aliases to def-include/msvcrt-common.def.in

2024-04-22 Thread Pali Rohár
def-include/msvcrt-common.def.in is included into every msvcr*.def.in file.
So move them all common __ms_* symbol aliases which removes definition
duplication.

msvcr* library before version 8.0 have symbols swprintf/vswprintf which
represents pre-C95 variants of these functions without maxlen argument.
Since version 8.0, symbols swprintf/vswprintf are not present anymore,
they were renamed and have have leading underscore.

Distinguish aliased symbol by a new PRE_C95_SWPRINTF macro in .def.in file.
---
 .../def-include/msvcrt-common.def.in  | 30 +++
 mingw-w64-crt/lib-common/msvcr120_app.def.in  | 16 --
 mingw-w64-crt/lib-common/msvcrt.def.in| 21 +
 mingw-w64-crt/lib32/crtdll.def.in |  1 +
 mingw-w64-crt/lib32/msvcr100.def.in   | 16 --
 mingw-w64-crt/lib32/msvcr110.def.in   | 16 --
 mingw-w64-crt/lib32/msvcr120.def.in   | 16 --
 mingw-w64-crt/lib32/msvcr120d.def.in  | 16 --
 mingw-w64-crt/lib32/msvcr70.def.in|  1 +
 mingw-w64-crt/lib32/msvcr71.def.in|  1 +
 mingw-w64-crt/lib32/msvcr80.def.in| 18 ---
 mingw-w64-crt/lib32/msvcr90.def.in| 16 --
 mingw-w64-crt/lib32/msvcr90d.def.in   | 16 --
 mingw-w64-crt/lib32/msvcrt10.def.in   |  1 +
 mingw-w64-crt/lib32/msvcrt20.def.in   |  1 +
 mingw-w64-crt/lib32/msvcrt40.def.in   |  1 +
 mingw-w64-crt/lib64/msvcr100.def.in   | 16 --
 mingw-w64-crt/lib64/msvcr110.def.in   | 16 --
 mingw-w64-crt/lib64/msvcr120.def.in   | 16 --
 mingw-w64-crt/lib64/msvcr120d.def.in  | 16 --
 mingw-w64-crt/lib64/msvcr80.def.in| 18 ---
 mingw-w64-crt/lib64/msvcr90.def.in| 16 --
 mingw-w64-crt/lib64/msvcr90d.def.in   | 16 --
 mingw-w64-crt/libarm32/msvcr110.def   | 16 --
 mingw-w64-crt/libarm32/msvcr120_clr0400.def   | 16 --
 25 files changed, 37 insertions(+), 296 deletions(-)

diff --git a/mingw-w64-crt/def-include/msvcrt-common.def.in 
b/mingw-w64-crt/def-include/msvcrt-common.def.in
index 975df5da9960..4285ec5d6dc0 100644
--- a/mingw-w64-crt/def-include/msvcrt-common.def.in
+++ b/mingw-w64-crt/def-include/msvcrt-common.def.in
@@ -155,3 +155,33 @@ tzname DATA == _tzname
 
 ADD_UNDERSCORE(vsnprintf_s)
 #endif
+
+; This is list of printf/scanf symbol aliases with __ms_ prefix
+#ifndef UCRTBASE
+__ms_fprintf == fprintf
+__ms_fscanf == fscanf
+__ms_fwprintf == fwprintf
+__ms_fwscanf == fwscanf
+__ms_printf == printf
+__ms_scanf == scanf
+__ms_sprintf == sprintf
+__ms_sscanf == sscanf
+#ifdef PRE_C95_SWPRINTF
+__ms_swprintf == swprintf
+#else
+__ms_swprintf == _swprintf
+#endif
+__ms_swscanf == swscanf
+__ms_vfprintf == vfprintf
+__ms_vfwprintf == vfwprintf
+__ms_vprintf == vprintf
+__ms_vsprintf == vsprintf
+#ifdef PRE_C95_SWPRINTF
+__ms_vswprintf == vswprintf
+#else
+__ms_vswprintf == _vswprintf
+#endif
+__ms_vwprintf == vwprintf
+__ms_wprintf == wprintf
+__ms_wscanf == wscanf
+#endif
diff --git a/mingw-w64-crt/lib-common/msvcr120_app.def.in 
b/mingw-w64-crt/lib-common/msvcr120_app.def.in
index 4204c7b265b8..1c7c8bde4d75 100644
--- a/mingw-w64-crt/lib-common/msvcr120_app.def.in
+++ b/mingw-w64-crt/lib-common/msvcr120_app.def.in
@@ -2197,7 +2197,6 @@ F_NON_I386(fmodf)
 fopen
 fopen_s
 fprintf
-__ms_fprintf == fprintf
 fprintf_s
 fputc
 fputs
@@ -2210,17 +2209,14 @@ freopen
 freopen_s
 frexp DATA
 fscanf
-__ms_fscanf == fscanf
 fscanf_s
 fseek
 fsetpos
 ftell
 fwprintf
-__ms_fwprintf == fwprintf
 fwprintf_s
 fwrite
 fwscanf
-__ms_fwscanf == fwscanf
 fwscanf_s
 getc
 getchar
@@ -2347,7 +2343,6 @@ perror
 pow
 F_NON_I386(powf)
 printf
-__ms_printf == printf
 printf_s
 putc
 putchar
@@ -2384,7 +2379,6 @@ scalbnf
 scalbnl
 #endif
 scanf
-__ms_scanf == scanf
 scanf_s
 setbuf
 F_NON_I386(setjmp)
@@ -2396,13 +2390,11 @@ F_NON_I386(sinf)
 sinh
 F_NON_I386(sinhf)
 sprintf
-__ms_sprintf == sprintf
 sprintf_s
 sqrt
 F_NON_I386(sqrtf)
 srand
 sscanf
-__ms_sscanf == sscanf
 sscanf_s
 strcat
 strcat_s
@@ -2441,7 +2433,6 @@ strxfrm
 F_ARM32(swprintf)
 swprintf_s
 swscanf
-__ms_swscanf == swscanf
 swscanf_s
 F_ARM32(system)
 tan
@@ -2468,22 +2459,18 @@ ungetc
 ungetwc
 F_ARM32(utime)
 vfprintf
-__ms_vfprintf == vfprintf
 vfprintf_s
 F_X86_ANY(vfscanf)
 F_X86_ANY(vfscanf_s)
 vfwprintf
-__ms_vfwprintf == vfwprintf
 vfwprintf_s
 F_X86_ANY(vfwscanf)
 F_X86_ANY(vfwscanf_s)
 vprintf
-__ms_vprintf == vprintf
 vprintf_s
 F_X86_ANY(vscanf)
 F_X86_ANY(vscanf_s)
 vsprintf
-__ms_vsprintf == vsprintf
 vsprintf_s
 F_X86_ANY(vsscanf)
 F_X86_ANY(vsscanf_s)
@@ -2492,7 +2479,6 @@ vswprintf_s
 F_X86_ANY(vswscanf)
 F_X86_ANY(vswscanf_s)
 vwprintf
-__ms_vwprintf == vwprintf
 vwprintf_s
 F_X86_ANY(vwscanf)
 F_X86_ANY(vwscanf_s)
@@ -2542,8 +2528,6 @@ F_X86_ANY(wctype)
 F_X86_ANY(wmemcpy_s)
 F_X86_ANY(wmemmove_s)
 wprintf
-__ms_wprintf == wprintf
 wprintf_s
 

[Mingw-w64-public] [PATCH 01/10] crt: Remove duplicate symbol alises for strlwr and wcslwr

2024-04-22 Thread Pali Rohár
These aliases are automatically added by including msvcrt-common.def.in
file into every msvcr*.def.in file.
---
 mingw-w64-crt/lib-common/msvcr120_app.def.in | 2 --
 mingw-w64-crt/lib32/crtdll.def.in| 2 --
 mingw-w64-crt/lib32/msvcr100.def.in  | 2 --
 mingw-w64-crt/lib32/msvcr110.def.in  | 2 --
 mingw-w64-crt/lib32/msvcr120.def.in  | 2 --
 mingw-w64-crt/lib32/msvcr120d.def.in | 2 --
 mingw-w64-crt/lib32/msvcr80.def.in   | 2 --
 mingw-w64-crt/lib32/msvcr90.def.in   | 2 --
 mingw-w64-crt/lib32/msvcr90d.def.in  | 2 --
 mingw-w64-crt/lib64/msvcr100.def.in  | 2 --
 mingw-w64-crt/lib64/msvcr110.def.in  | 2 --
 mingw-w64-crt/lib64/msvcr120.def.in  | 2 --
 mingw-w64-crt/lib64/msvcr120d.def.in | 2 --
 mingw-w64-crt/lib64/msvcr80.def.in   | 2 --
 mingw-w64-crt/lib64/msvcr90.def.in   | 2 --
 mingw-w64-crt/lib64/msvcr90d.def.in  | 2 --
 16 files changed, 32 deletions(-)

diff --git a/mingw-w64-crt/lib-common/msvcr120_app.def.in 
b/mingw-w64-crt/lib-common/msvcr120_app.def.in
index 10cf84d07d45..4204c7b265b8 100644
--- a/mingw-w64-crt/lib-common/msvcr120_app.def.in
+++ b/mingw-w64-crt/lib-common/msvcr120_app.def.in
@@ -1685,7 +1685,6 @@ _stricmp_l
 _stricoll
 _stricoll_l
 _strlwr
-strlwr == _strlwr
 _strlwr_l
 _strlwr_s
 _strlwr_s_l
@@ -1848,7 +1847,6 @@ _wcsicmp_l
 _wcsicoll
 _wcsicoll_l
 _wcslwr
-wcslwr == _wcslwr
 _wcslwr_l
 _wcslwr_s
 _wcslwr_s_l
diff --git a/mingw-w64-crt/lib32/crtdll.def.in 
b/mingw-w64-crt/lib32/crtdll.def.in
index e98d70d6d099..25f13931b24c 100644
--- a/mingw-w64-crt/lib32/crtdll.def.in
+++ b/mingw-w64-crt/lib32/crtdll.def.in
@@ -379,7 +379,6 @@ _stricmp
 _stricoll
 _strinc
 _strlwr
-strlwr == _strlwr
 _strncnt
 _strnextc
 _strnicmp
@@ -415,7 +414,6 @@ _wcsdup
 _wcsicmp
 _wcsicoll
 _wcslwr
-wcslwr == _wcslwr
 _wcsnicmp
 _wcsnset
 _wcsrev
diff --git a/mingw-w64-crt/lib32/msvcr100.def.in 
b/mingw-w64-crt/lib32/msvcr100.def.in
index 00d99124b1a5..a747c584751e 100644
--- a/mingw-w64-crt/lib32/msvcr100.def.in
+++ b/mingw-w64-crt/lib32/msvcr100.def.in
@@ -1386,7 +1386,6 @@ _stricmp_l
 _stricoll
 _stricoll_l
 _strlwr
-strlwr == _strlwr
 _strlwr_l
 _strlwr_s
 _strlwr_s_l
@@ -1547,7 +1546,6 @@ _wcsicmp_l
 _wcsicoll
 _wcsicoll_l
 _wcslwr
-wcslwr == _wcslwr
 _wcslwr_l
 _wcslwr_s
 _wcslwr_s_l
diff --git a/mingw-w64-crt/lib32/msvcr110.def.in 
b/mingw-w64-crt/lib32/msvcr110.def.in
index 2045e0a5462a..b21a518202bc 100644
--- a/mingw-w64-crt/lib32/msvcr110.def.in
+++ b/mingw-w64-crt/lib32/msvcr110.def.in
@@ -1519,7 +1519,6 @@ _stricmp_l
 _stricoll
 _stricoll_l
 _strlwr
-strlwr == _strlwr
 _strlwr_l
 _strlwr_s
 _strlwr_s_l
@@ -1681,7 +1680,6 @@ _wcsicmp_l
 _wcsicoll
 _wcsicoll_l
 _wcslwr
-wcslwr == _wcslwr
 _wcslwr_l
 _wcslwr_s
 _wcslwr_s_l
diff --git a/mingw-w64-crt/lib32/msvcr120.def.in 
b/mingw-w64-crt/lib32/msvcr120.def.in
index d1bc9bc15d48..0287de2597dc 100644
--- a/mingw-w64-crt/lib32/msvcr120.def.in
+++ b/mingw-w64-crt/lib32/msvcr120.def.in
@@ -1547,7 +1547,6 @@ _stricmp_l
 _stricoll
 _stricoll_l
 _strlwr
-strlwr == _strlwr
 _strlwr_l
 _strlwr_s
 _strlwr_s_l
@@ -1708,7 +1707,6 @@ _wcsicmp_l
 _wcsicoll
 _wcsicoll_l
 _wcslwr
-wcslwr == _wcslwr
 _wcslwr_l
 _wcslwr_s
 _wcslwr_s_l
diff --git a/mingw-w64-crt/lib32/msvcr120d.def.in 
b/mingw-w64-crt/lib32/msvcr120d.def.in
index bd95baebd705..807aaacdfd7e 100644
--- a/mingw-w64-crt/lib32/msvcr120d.def.in
+++ b/mingw-w64-crt/lib32/msvcr120d.def.in
@@ -1607,7 +1607,6 @@ _stricmp_l
 _stricoll
 _stricoll_l
 _strlwr
-strlwr == _strlwr
 _strlwr_l
 _strlwr_s
 _strlwr_s_l
@@ -1770,7 +1769,6 @@ _wcsicmp_l
 _wcsicoll
 _wcsicoll_l
 _wcslwr
-wcslwr == _wcslwr
 _wcslwr_l
 _wcslwr_s
 _wcslwr_s_l
diff --git a/mingw-w64-crt/lib32/msvcr80.def.in 
b/mingw-w64-crt/lib32/msvcr80.def.in
index af4ccca60456..35ff219accd9 100644
--- a/mingw-w64-crt/lib32/msvcr80.def.in
+++ b/mingw-w64-crt/lib32/msvcr80.def.in
@@ -1028,7 +1028,6 @@ _stricmp_l
 _stricoll
 _stricoll_l
 _strlwr
-strlwr == _strlwr
 _strlwr_l
 _strlwr_s
 _strlwr_s_l
@@ -1187,7 +1186,6 @@ _wcsicmp_l
 _wcsicoll
 _wcsicoll_l
 _wcslwr
-wcslwr == _wcslwr
 _wcslwr_l
 _wcslwr_s
 _wcslwr_s_l
diff --git a/mingw-w64-crt/lib32/msvcr90.def.in 
b/mingw-w64-crt/lib32/msvcr90.def.in
index b0c6fb88dc43..d563fcb1c7f0 100644
--- a/mingw-w64-crt/lib32/msvcr90.def.in
+++ b/mingw-w64-crt/lib32/msvcr90.def.in
@@ -1024,7 +1024,6 @@ _stricmp_l
 _stricoll
 _stricoll_l
 _strlwr
-strlwr == _strlwr
 _strlwr_l
 _strlwr_s
 _strlwr_s_l
@@ -1185,7 +1184,6 @@ _wcsicmp_l
 _wcsicoll
 _wcsicoll_l
 _wcslwr
-wcslwr == _wcslwr
 _wcslwr_l
 _wcslwr_s
 _wcslwr_s_l
diff --git a/mingw-w64-crt/lib32/msvcr90d.def.in 
b/mingw-w64-crt/lib32/msvcr90d.def.in
index 3cdc83708fe6..9515d40189d3 100644
--- a/mingw-w64-crt/lib32/msvcr90d.def.in
+++ b/mingw-w64-crt/lib32/msvcr90d.def.in
@@ -1089,7 +1089,6 @@ _stricmp_l
 _stricoll
 _stricoll_l
 _strlwr
-strlwr == _strlwr
 _strlwr_l
 _strlwr_s
 _strlwr_s_l
@@ -1252,7 +1251,6 @@ _wcsicmp_l
 _wcsicoll
 

[Mingw-w64-public] [PATCH 06/10] crt: Move _atoi64 and _atoi64_l aliases to def-include/msvcrt-common.def.in

2024-04-22 Thread Pali Rohár
Define _atoi64 and _atoi64_l aliases based on a new WITH_ATOLL_ALIAS and
WITH_ATOLL_L_ALIAS macros.
---
 mingw-w64-crt/def-include/msvcrt-common.def.in | 8 
 mingw-w64-crt/lib-common/msvcrt.def.in | 4 ++--
 mingw-w64-crt/lib32/msvcr100.def.in| 4 ++--
 mingw-w64-crt/lib32/msvcr110.def.in| 4 ++--
 mingw-w64-crt/lib32/msvcr70.def.in | 2 +-
 mingw-w64-crt/lib32/msvcr71.def.in | 2 +-
 mingw-w64-crt/lib32/msvcr80.def.in | 3 ++-
 mingw-w64-crt/lib32/msvcr90.def.in | 4 ++--
 mingw-w64-crt/lib32/msvcr90d.def.in| 4 ++--
 mingw-w64-crt/lib64/msvcr100.def.in| 4 ++--
 mingw-w64-crt/lib64/msvcr110.def.in| 4 ++--
 mingw-w64-crt/lib64/msvcr80.def.in | 3 ++-
 mingw-w64-crt/lib64/msvcr90.def.in | 4 ++--
 mingw-w64-crt/lib64/msvcr90d.def.in| 4 ++--
 14 files changed, 32 insertions(+), 22 deletions(-)

diff --git a/mingw-w64-crt/def-include/msvcrt-common.def.in 
b/mingw-w64-crt/def-include/msvcrt-common.def.in
index 6d91e760bfae..ea05823f0829 100644
--- a/mingw-w64-crt/def-include/msvcrt-common.def.in
+++ b/mingw-w64-crt/def-include/msvcrt-common.def.in
@@ -164,6 +164,14 @@ ADD_UNDERSCORE(vsnprintf_s)
 _strcmpi == _stricmp
 #endif
 
+#ifdef WITH_ATOLL_ALIAS
+atoll == _atoi64
+#endif
+
+#ifdef WITH_ATOLL_L_ALIAS
+_atoll_l == _atoi64_l
+#endif
+
 ; This is list of printf/scanf symbol aliases with __ms_ prefix
 #ifndef UCRTBASE
 __ms_fprintf == fprintf
diff --git a/mingw-w64-crt/lib-common/msvcrt.def.in 
b/mingw-w64-crt/lib-common/msvcrt.def.in
index 899a428be650..5b383dba4e52 100644
--- a/mingw-w64-crt/lib-common/msvcrt.def.in
+++ b/mingw-w64-crt/lib-common/msvcrt.def.in
@@ -3,6 +3,8 @@ EXPORTS
 
 #define PRE_C95_SWPRINTF
 #define NO_STRCMPI_ALIAS
+#define WITH_ATOLL_ALIAS
+#define WITH_ATOLL_L_ALIAS
 #include "func.def.in"
 #include "msvcrt-common.def.in"
 
@@ -1844,12 +1846,10 @@ F32(_wstat32 == _wstat)
 F64(_wstat64i32 == _wstat)
 
 ; This is list of some symbols added in msvcr120.dll which can be defined as 
aliases to some msvcrt.dll symbols
-_atoll_l == _atoi64_l
 _strtoimax_l == _strtoi64_l
 _strtoll_l == _strtoi64_l
 _strtoull_l == _strtoui64_l
 _strtoumax_l == _strtoui64_l
-atoll == _atoi64
 F_NON_I386(imaxabs == _abs64) ; i386 imaxabs alias provided by emu
 F_NON_I386(llabs == _abs64) ; i386 llabs alias provided by emu
 F_NON_I386(strtoimax == _strtoi64) ; i386 strtoimax alias provided by emu
diff --git a/mingw-w64-crt/lib32/msvcr100.def.in 
b/mingw-w64-crt/lib32/msvcr100.def.in
index 1c9e79a9b029..5cd2bc809d12 100644
--- a/mingw-w64-crt/lib32/msvcr100.def.in
+++ b/mingw-w64-crt/lib32/msvcr100.def.in
@@ -6,6 +6,8 @@
 LIBRARY "msvcr100.dll"
 EXPORTS
 
+#define WITH_ATOLL_ALIAS
+#define WITH_ATOLL_L_ALIAS
 #include "msvcrt-common.def.in"
 
 ; public: __thiscall Concurrency::details::<0x1ULL>::<0x1ULL>(void(__cdecl 
*)(void))
@@ -738,9 +740,7 @@ _atof_l
 _atoflt
 _atoflt_l
 _atoi64
-atoll == _atoi64
 _atoi64_l
-_atoll_l == _atoi64_l
 _atoi_l
 _atol_l
 _atoldbl
diff --git a/mingw-w64-crt/lib32/msvcr110.def.in 
b/mingw-w64-crt/lib32/msvcr110.def.in
index a40be8f1c0f4..4c714b7e5230 100644
--- a/mingw-w64-crt/lib32/msvcr110.def.in
+++ b/mingw-w64-crt/lib32/msvcr110.def.in
@@ -6,6 +6,8 @@
 LIBRARY "MSVCR110.dll"
 EXPORTS
 
+#define WITH_ATOLL_ALIAS
+#define WITH_ATOLL_L_ALIAS
 #include "msvcrt-common.def.in"
 
 ; public: __thiscall Concurrency::details::<0x1ULL>::<0x1ULL>(void(__cdecl 
*)(void))
@@ -862,9 +864,7 @@ _atof_l
 _atoflt
 _atoflt_l
 _atoi64
-atoll == _atoi64
 _atoi64_l
-_atoll_l == _atoi64_l
 _atoi_l
 _atol_l
 _atoldbl
diff --git a/mingw-w64-crt/lib32/msvcr70.def.in 
b/mingw-w64-crt/lib32/msvcr70.def.in
index 49c4a6893577..266643b4d015 100644
--- a/mingw-w64-crt/lib32/msvcr70.def.in
+++ b/mingw-w64-crt/lib32/msvcr70.def.in
@@ -8,6 +8,7 @@ EXPORTS
 
 #define PRE_C95_SWPRINTF
 #define NO_STRCMPI_ALIAS
+#define WITH_ATOLL_ALIAS
 #include "msvcrt-common.def.in"
 
 ; public: __thiscall __non_rtti_object::__non_rtti_object(class 
__non_rtti_object const &)
@@ -265,7 +266,6 @@ _amsg_exit
 _assert
 _atodbl
 _atoi64
-atoll == _atoi64
 _atoldbl
 _beep
 _beginthread
diff --git a/mingw-w64-crt/lib32/msvcr71.def.in 
b/mingw-w64-crt/lib32/msvcr71.def.in
index 6b667725b86e..000a1263b580 100644
--- a/mingw-w64-crt/lib32/msvcr71.def.in
+++ b/mingw-w64-crt/lib32/msvcr71.def.in
@@ -8,6 +8,7 @@ EXPORTS
 
 #define PRE_C95_SWPRINTF
 #define NO_STRCMPI_ALIAS
+#define WITH_ATOLL_ALIAS
 #include "msvcrt-common.def.in"
 
 ; public: __thiscall __non_rtti_object::__non_rtti_object(class 
__non_rtti_object const &)
@@ -258,7 +259,6 @@ _amsg_exit
 _assert
 _atodbl
 _atoi64
-atoll == _atoi64
 _atoldbl
 _beep
 _beginthread
diff --git a/mingw-w64-crt/lib32/msvcr80.def.in 
b/mingw-w64-crt/lib32/msvcr80.def.in
index a26bbcf7c6dc..6e925eb7c285 100644
--- a/mingw-w64-crt/lib32/msvcr80.def.in
+++ b/mingw-w64-crt/lib32/msvcr80.def.in
@@ -1,6 +1,8 @@
 LIBRARY "MSVCR80.dll"
 EXPORTS
 
+#define 

[Mingw-w64-public] [PATCH 00/10] crt: Move symbol aliases from CRT def files to msvcrt-common.def.in

2024-04-22 Thread Pali Rohár
This patch series moves all aliases defined in crtdll.def.in, and
msvcr*.def.in files into one common include file msvcrt-common.def.in.

It reduces duplication of symbol alias definitions by defining symbols
in more declarative manner.

Moving aliases to one place uncovered that some def.in files were
missing some alises (mostly for __ms_* printf/scanf symbols) or some
were incorrectly defined (ctime for 64-bit msvcr90d.def.in was defined
as alias to _ctime32 instead of _ctime64, or _findfirst for 64-bit
msvcr120.def.in was defined as alias to symbol which does _not_ use
32-bit file length).

For reference what this change affects, I'm attaching a difference which
was generated for each CRT def.in file by command ($PLAT: DEF_I386 DEF_X64):

  cpp -x c -Wp,-w -undef -P -Imingw-w64-crt/def-include -D$PLAT | sed -E 
's/\s*;.*//' | LC_ALL=C sort -u

--- lib32/crtdll.def.in
+++ lib32/crtdll.def.in
+__ms_fprintf == fprintf
+__ms_fscanf == fscanf
+__ms_fwprintf == fwprintf
+__ms_fwscanf == fwscanf
+__ms_printf == printf
+__ms_scanf == scanf
+__ms_sprintf == sprintf
+__ms_sscanf == sscanf
+__ms_swprintf == swprintf
+__ms_swscanf == swscanf
+__ms_vfprintf == vfprintf
+__ms_vfwprintf == vfwprintf
+__ms_vprintf == vprintf
+__ms_vsprintf == vsprintf
+__ms_vswprintf == vswprintf
+__ms_vwprintf == vwprintf
+__ms_wprintf == wprintf
+__ms_wscanf == wscanf
+_findfirst32 == _findfirst
+_findnext32 == _findnext
+_fstat32 == _fstat
+_stat32 == _stat

--- lib32/msvcrt.def
+++ lib32/msvcrt.def
+_fstat32i64 == _fstati64
+_stat32i64 == _stati64
+_wstat32i64 == _wstati64

--- lib32/msvcrt10.def.in
+++ lib32/msvcrt10.def.in
+__ms_fprintf == fprintf
+__ms_fscanf == fscanf
+__ms_fwprintf == fwprintf
+__ms_fwscanf == fwscanf
+__ms_printf == printf
+__ms_scanf == scanf
+__ms_sprintf == sprintf
+__ms_sscanf == sscanf
+__ms_swprintf == swprintf
+__ms_swscanf == swscanf
+__ms_vfprintf == vfprintf
+__ms_vfwprintf == vfwprintf
+__ms_vprintf == vprintf
+__ms_vsprintf == vsprintf
+__ms_vswprintf == vswprintf
+__ms_vwprintf == vwprintf
+__ms_wprintf == wprintf
+__ms_wscanf == wscanf
+_findfirst32 == _findfirst
+_findnext32 == _findnext
+_fstat32 == _fstat
+_stat32 == _stat

--- lib32/msvcrt20.def.in
+++ lib32/msvcrt20.def.in
+__ms_fprintf == fprintf
+__ms_fscanf == fscanf
+__ms_fwprintf == fwprintf
+__ms_fwscanf == fwscanf
+__ms_printf == printf
+__ms_scanf == scanf
+__ms_sprintf == sprintf
+__ms_sscanf == sscanf
+__ms_swprintf == swprintf
+__ms_swscanf == swscanf
+__ms_vfprintf == vfprintf
+__ms_vfwprintf == vfwprintf
+__ms_vprintf == vprintf
+__ms_vsprintf == vsprintf
+__ms_vswprintf == vswprintf
+__ms_vwprintf == vwprintf
+__ms_wprintf == wprintf
+__ms_wscanf == wscanf
+_findfirst32 == _findfirst
+_findnext32 == _findnext
+_fstat32 == _fstat
+_stat32 == _stat
+_wfindfirst32 == _wfindfirst
+_wfindnext32 == _wfindnext
+_wstat32 == _wstat

--- lib32/msvcrt40.def.in
+++ lib32/msvcrt40.def.in
+__ms_fprintf == fprintf
+__ms_fscanf == fscanf
+__ms_fwprintf == fwprintf
+__ms_fwscanf == fwscanf
+__ms_printf == printf
+__ms_scanf == scanf
+__ms_sprintf == sprintf
+__ms_sscanf == sscanf
+__ms_swprintf == swprintf
+__ms_swscanf == swscanf
+__ms_vfprintf == vfprintf
+__ms_vfwprintf == vfwprintf
+__ms_vprintf == vprintf
+__ms_vsprintf == vsprintf
+__ms_vswprintf == vswprintf
+__ms_vwprintf == vwprintf
+__ms_wprintf == wprintf
+__ms_wscanf == wscanf
+_findfirst32 == _findfirst
+_findfirst32i64 == _findfirsti64
+_findnext32 == _findnext
+_findnext32i64 == _findnexti64
+_fstat32 == _fstat
+_fstat32i64 == _fstati64
+_stat32 == _stat
+_stat32i64 == _stati64
+_wfindfirst32 == _wfindfirst
+_wfindfirst32i64 == _wfindfirsti64
+_wfindnext32 == _wfindnext
+_wfindnext32i64 == _wfindnexti64
+_wstat32 == _wstat
+_wstat32i64 == _wstati64

--- lib32/msvcr100.def.in
+++ lib32/msvcr100.def.in
+__ms_swprintf == _swprintf
+__ms_vswprintf == _vswprintf
+_findfirsti64 == _findfirst32i64
+_findnexti64 == _findnext32i64
+_futime == _futime32
+_utime == _utime32
+_wfindfirsti64 == _wfindfirst32i64
+_wfindnexti64 == _wfindnext32i64
+_wutime == _wutime32
+difftime == _difftime32

--- lib32/msvcr110.def.in
+++ lib32/msvcr110.def.in
+__ms_swprintf == _swprintf
+__ms_vswprintf == _vswprintf
+_findfirsti64 == _findfirst32i64
+_findnexti64 == _findnext32i64
+_futime == _futime32
+_utime == _utime32
+_wfindfirsti64 == _wfindfirst32i64
+_wfindnexti64 == _wfindnext32i64
+_wutime == _wutime32
+difftime == _difftime32

--- lib32/msvcr120d.def.in
+++ lib32/msvcr120d.def.in
+__ms_swprintf == _swprintf
+__ms_vswprintf == _vswprintf
+_findfirsti64 == _findfirst32i64
+_findnexti64 == _findnext32i64
+_futime == _futime32
+_mkgmtime == _mkgmtime32
+_strcmpi == _stricmp
+_utime == _utime32
+_wctime == _wctime32
+_wfindfirsti64 == _wfindfirst32i64
+_wfindnexti64 == _wfindnext32i64
+_wutime == _wutime32
+ctime == _ctime32
+difftime == _difftime32
+mktime == _mktime32

--- lib32/msvcr120.def.in
+++ lib32/msvcr120.def.in
+__ms_swprintf == _swprintf
+__ms_vswprintf == _vswprintf
+_findfirsti64 == 

[Mingw-w64-public] [PATCH 05/10] crt: Move _strcmpi alias to def-include/msvcrt-common.def.in

2024-04-22 Thread Pali Rohár
Define _strcmpi alias based on a new NO_STRCMPI_ALIAS macro.
---
 mingw-w64-crt/def-include/msvcrt-common.def.in | 8 
 mingw-w64-crt/lib-common/msvcr120_app.def.in   | 3 +++
 mingw-w64-crt/lib-common/msvcrt.def.in | 1 +
 mingw-w64-crt/lib-common/ucrtbase.def.in   | 1 -
 mingw-w64-crt/lib32/crtdll.def.in  | 1 +
 mingw-w64-crt/lib32/msvcr100.def.in| 1 -
 mingw-w64-crt/lib32/msvcr110.def.in| 1 -
 mingw-w64-crt/lib32/msvcr70.def.in | 1 +
 mingw-w64-crt/lib32/msvcr71.def.in | 1 +
 mingw-w64-crt/lib32/msvcr80.def.in | 1 -
 mingw-w64-crt/lib32/msvcr90.def.in | 1 -
 mingw-w64-crt/lib32/msvcr90d.def.in| 1 -
 mingw-w64-crt/lib32/msvcrt10.def.in| 1 +
 mingw-w64-crt/lib32/msvcrt20.def.in| 1 +
 mingw-w64-crt/lib32/msvcrt40.def.in| 1 +
 mingw-w64-crt/lib64/msvcr100.def.in| 1 -
 mingw-w64-crt/lib64/msvcr110.def.in| 1 -
 mingw-w64-crt/lib64/msvcr80.def.in | 1 -
 mingw-w64-crt/lib64/msvcr90.def.in | 1 -
 mingw-w64-crt/lib64/msvcr90d.def.in| 1 -
 20 files changed, 18 insertions(+), 11 deletions(-)

diff --git a/mingw-w64-crt/def-include/msvcrt-common.def.in 
b/mingw-w64-crt/def-include/msvcrt-common.def.in
index 4285ec5d6dc0..6d91e760bfae 100644
--- a/mingw-w64-crt/def-include/msvcrt-common.def.in
+++ b/mingw-w64-crt/def-include/msvcrt-common.def.in
@@ -156,6 +156,14 @@ tzname DATA == _tzname
 ADD_UNDERSCORE(vsnprintf_s)
 #endif
 
+; This is list of various symbol aliases which are needed for compatibility
+; Some symbols in some version of CRT library were added and some other 
symbols were removed or renamed
+; This list provides some level of backward and forward compatibility
+
+#ifndef NO_STRCMPI_ALIAS
+_strcmpi == _stricmp
+#endif
+
 ; This is list of printf/scanf symbol aliases with __ms_ prefix
 #ifndef UCRTBASE
 __ms_fprintf == fprintf
diff --git a/mingw-w64-crt/lib-common/msvcr120_app.def.in 
b/mingw-w64-crt/lib-common/msvcr120_app.def.in
index 1c7c8bde4d75..1cc7548560fc 100644
--- a/mingw-w64-crt/lib-common/msvcr120_app.def.in
+++ b/mingw-w64-crt/lib-common/msvcr120_app.def.in
@@ -8,6 +8,9 @@ EXPORTS
 
 #include "func.def.in"
 #define NO_GETPID_ALIAS
+#ifdef DEF_ARM32
+#define NO_STRCMPI_ALIAS
+#endif
 #include "msvcrt-common.def.in"
 
 #ifdef DEF_X64
diff --git a/mingw-w64-crt/lib-common/msvcrt.def.in 
b/mingw-w64-crt/lib-common/msvcrt.def.in
index 5085a136ef89..899a428be650 100644
--- a/mingw-w64-crt/lib-common/msvcrt.def.in
+++ b/mingw-w64-crt/lib-common/msvcrt.def.in
@@ -2,6 +2,7 @@ LIBRARY "msvcrt.dll"
 EXPORTS
 
 #define PRE_C95_SWPRINTF
+#define NO_STRCMPI_ALIAS
 #include "func.def.in"
 #include "msvcrt-common.def.in"
 
diff --git a/mingw-w64-crt/lib-common/ucrtbase.def.in 
b/mingw-w64-crt/lib-common/ucrtbase.def.in
index 000861ee3889..2d0552f277ef 100644
--- a/mingw-w64-crt/lib-common/ucrtbase.def.in
+++ b/mingw-w64-crt/lib-common/ucrtbase.def.in
@@ -1944,7 +1944,6 @@ _stat64
 _stat64i32
 _statusfp
 F_I386(_statusfp2)
-_strcmpi == _stricmp
 _strcoll_l
 _strdate
 _strdate_s
diff --git a/mingw-w64-crt/lib32/crtdll.def.in 
b/mingw-w64-crt/lib32/crtdll.def.in
index c4fe47ff05fc..e1093517af6b 100644
--- a/mingw-w64-crt/lib32/crtdll.def.in
+++ b/mingw-w64-crt/lib32/crtdll.def.in
@@ -68,6 +68,7 @@ LIBRARY "crtdll.dll"
 EXPORTS
 
 #define PRE_C95_SWPRINTF
+#define NO_STRCMPI_ALIAS
 #include "msvcrt-common.def.in"
 
 ; crtdll.dll contains 3 mangled C++ symbols
diff --git a/mingw-w64-crt/lib32/msvcr100.def.in 
b/mingw-w64-crt/lib32/msvcr100.def.in
index cc1ff77aca9f..1c9e79a9b029 100644
--- a/mingw-w64-crt/lib32/msvcr100.def.in
+++ b/mingw-w64-crt/lib32/msvcr100.def.in
@@ -1381,7 +1381,6 @@ _strerror
 _strerror_s
 _strftime_l
 _stricmp
-_strcmpi == _stricmp
 _stricmp_l
 _stricoll
 _stricoll_l
diff --git a/mingw-w64-crt/lib32/msvcr110.def.in 
b/mingw-w64-crt/lib32/msvcr110.def.in
index 477f22be24dc..a40be8f1c0f4 100644
--- a/mingw-w64-crt/lib32/msvcr110.def.in
+++ b/mingw-w64-crt/lib32/msvcr110.def.in
@@ -1514,7 +1514,6 @@ _strerror
 _strerror_s
 _strftime_l
 _stricmp
-_strcmpi == _stricmp
 _stricmp_l
 _stricoll
 _stricoll_l
diff --git a/mingw-w64-crt/lib32/msvcr70.def.in 
b/mingw-w64-crt/lib32/msvcr70.def.in
index be830fa15dfe..49c4a6893577 100644
--- a/mingw-w64-crt/lib32/msvcr70.def.in
+++ b/mingw-w64-crt/lib32/msvcr70.def.in
@@ -7,6 +7,7 @@ LIBRARY "MSVCR70.dll"
 EXPORTS
 
 #define PRE_C95_SWPRINTF
+#define NO_STRCMPI_ALIAS
 #include "msvcrt-common.def.in"
 
 ; public: __thiscall __non_rtti_object::__non_rtti_object(class 
__non_rtti_object const &)
diff --git a/mingw-w64-crt/lib32/msvcr71.def.in 
b/mingw-w64-crt/lib32/msvcr71.def.in
index e1a7c9c3bf41..6b667725b86e 100644
--- a/mingw-w64-crt/lib32/msvcr71.def.in
+++ b/mingw-w64-crt/lib32/msvcr71.def.in
@@ -7,6 +7,7 @@ LIBRARY "MSVCR71.dll"
 EXPORTS
 
 #define PRE_C95_SWPRINTF
+#define NO_STRCMPI_ALIAS
 #include "msvcrt-common.def.in"
 
 ; public: 

[Mingw-w64-public] [PATCH 02/10] crt: Remove _getwc_nolock symbol alias

2024-04-22 Thread Pali Rohár
Symbol _getwc_nolock is provided via mingw-w64-crt/stdio/_getwc_nolock.c
---
 mingw-w64-crt/lib32/msvcr80.def.in  | 1 -
 mingw-w64-crt/lib32/msvcr90.def.in  | 1 -
 mingw-w64-crt/lib32/msvcr90d.def.in | 1 -
 mingw-w64-crt/lib64/msvcr80.def.in  | 1 -
 mingw-w64-crt/lib64/msvcr90.def.in  | 1 -
 mingw-w64-crt/lib64/msvcr90d.def.in | 1 -
 6 files changed, 6 deletions(-)

diff --git a/mingw-w64-crt/lib32/msvcr80.def.in 
b/mingw-w64-crt/lib32/msvcr80.def.in
index 35ff219accd9..f16d3a8f755b 100644
--- a/mingw-w64-crt/lib32/msvcr80.def.in
+++ b/mingw-w64-crt/lib32/msvcr80.def.in
@@ -472,7 +472,6 @@ _fdopen
 _fflush_nolock
 _fgetchar
 _fgetwc_nolock
-_getwc_nolock == _fgetwc_nolock
 _fgetwchar
 _filbuf
 _filelength
diff --git a/mingw-w64-crt/lib32/msvcr90.def.in 
b/mingw-w64-crt/lib32/msvcr90.def.in
index d563fcb1c7f0..ea0411224301 100644
--- a/mingw-w64-crt/lib32/msvcr90.def.in
+++ b/mingw-w64-crt/lib32/msvcr90.def.in
@@ -473,7 +473,6 @@ _fdopen
 _fflush_nolock
 _fgetchar
 _fgetwc_nolock
-_getwc_nolock == _fgetwc_nolock
 _fgetwchar
 _filbuf
 _filelength
diff --git a/mingw-w64-crt/lib32/msvcr90d.def.in 
b/mingw-w64-crt/lib32/msvcr90d.def.in
index 9515d40189d3..5628be3786bb 100644
--- a/mingw-w64-crt/lib32/msvcr90d.def.in
+++ b/mingw-w64-crt/lib32/msvcr90d.def.in
@@ -531,7 +531,6 @@ _fdopen
 _fflush_nolock
 _fgetchar
 _fgetwc_nolock
-_getwc_nolock == _fgetwc_nolock
 _fgetwchar
 _filbuf
 _filelength
diff --git a/mingw-w64-crt/lib64/msvcr80.def.in 
b/mingw-w64-crt/lib64/msvcr80.def.in
index 5108e33c5462..8f1d297ef4a8 100644
--- a/mingw-w64-crt/lib64/msvcr80.def.in
+++ b/mingw-w64-crt/lib64/msvcr80.def.in
@@ -414,7 +414,6 @@ _fdopen
 _fflush_nolock
 _fgetchar
 _fgetwc_nolock
-_getwc_nolock == _fgetwc_nolock
 _fgetwchar
 _filbuf
 _filelength
diff --git a/mingw-w64-crt/lib64/msvcr90.def.in 
b/mingw-w64-crt/lib64/msvcr90.def.in
index 2a74ba5b4584..7f207ad81c46 100644
--- a/mingw-w64-crt/lib64/msvcr90.def.in
+++ b/mingw-w64-crt/lib64/msvcr90.def.in
@@ -418,7 +418,6 @@ _fdopen
 _fflush_nolock
 _fgetchar
 _fgetwc_nolock
-_getwc_nolock == _fgetwc_nolock
 _fgetwchar
 _filbuf
 _filelength
diff --git a/mingw-w64-crt/lib64/msvcr90d.def.in 
b/mingw-w64-crt/lib64/msvcr90d.def.in
index 62bb124f1436..b95295a8995f 100644
--- a/mingw-w64-crt/lib64/msvcr90d.def.in
+++ b/mingw-w64-crt/lib64/msvcr90d.def.in
@@ -470,7 +470,6 @@ _fdopen
 _fflush_nolock
 _fgetchar
 _fgetwc_nolock
-_getwc_nolock == _fgetwc_nolock
 _fgetwchar
 _filbuf
 _filelength
-- 
2.20.1



___
Mingw-w64-public mailing list
Mingw-w64-public@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public


Re: [Mingw-w64-public] [PATCH 6/6] crt: msvcr80.def.in: Fix __fls_getvalue@4 and __fls_setvalue@8 symbols

2024-04-22 Thread Martin Storsjö

On Mon, 22 Apr 2024, LIU Hao wrote:


在 2024-04-20 00:54, Pali Rohár 写道:

Same change as in commit 9b17c3374aa9eb809938bbcf7cf37093e842a4a7 for the
I386 msvcr80.def.in file.
---
  mingw-w64-crt/lib32/msvcr80.def.in | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)



Thanks for these patches. I have pushed them to master now.


Thanks, they looked good to me too.

// Martin

___
Mingw-w64-public mailing list
Mingw-w64-public@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public