On Tue, 6 Dec 2022, Pali Rohár wrote:
File msvcrt-common.def.in is included only in x86 32 and 64 bit msvcrt def files and common msvcrt.def.in file.
I'm not quite sure what this sentence is trying to convey, or what the "only" word implies here. It's included by all the numbered msvcr*.def.in files (which we have mostly for x86 32 and 64 bit - there's msvcr120_app.def.in which is built for arm32 too, and there's a msvcr110.def for arm32 which could be consolidated with the corresponding ones for x86 32 and 64 and merged into lib-common too, like has been done for msvcrt.def.in and msvcr120_app.def.in). It's also included by ucrtbase.def.in (which the patch itself does seem to notice, but doesn't do correctly). Also do note that msvcrt.def.in is built for all 4 architectures, and it does include msvcrt-common.def.in for all architectures.
Also, using the word "common" to describe msvcrt.def.in when we're also talking about msvcrt-common.def.in at the same time, is a bit confusing.
Please rewrite this sentence and clarify what you're trying to convey here.
After moving longjmp, _daylight, _timezone and _tzname out of the msvcrt-common.def.in file, this file would contain only symbol aliases and not export symbols anymore. This makes consistency across all msvcrt def files and makes it clear that msvcrt def file exports only those symbols which are explicitly defined in def file. --- mingw-w64-crt/def-include/msvcrt-common.def.in | 5 ----- mingw-w64-crt/lib-common/msvcrt.def.in | 5 ++++- mingw-w64-crt/lib-common/ucrtbase.def.in | 1 + mingw-w64-crt/lib32/msvcr100.def.in | 4 ++++ mingw-w64-crt/lib32/msvcr110.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/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/msvcr120.def.in | 4 ++++ mingw-w64-crt/lib64/msvcr120d.def.in | 4 ++++ mingw-w64-crt/lib64/msvcr80.def.in | 4 ++++ mingw-w64-crt/lib64/msvcr90.def.in | 4 ++++ mingw-w64-crt/lib64/msvcr90d.def.in | 4 ++++ 17 files changed, 61 insertions(+), 6 deletions(-) diff --git a/mingw-w64-crt/def-include/msvcrt-common.def.in b/mingw-w64-crt/def-include/msvcrt-common.def.in index c31c6b631572..8294a8880f91 100644 --- a/mingw-w64-crt/def-include/msvcrt-common.def.in +++ b/mingw-w64-crt/def-include/msvcrt-common.def.in @@ -143,12 +143,7 @@ ADD_UNDERSCORE(hypot) ;logb ADD_UNDERSCORE(nextafter) -longjmp - #ifndef UCRTBASE -_daylight DATA -_timezone DATA -_tzname DATA ADD_UNDERSCORE(daylight) ADD_UNDERSCORE(timezone) ADD_UNDERSCORE(tzname) diff --git a/mingw-w64-crt/lib-common/msvcrt.def.in b/mingw-w64-crt/lib-common/msvcrt.def.in index 695a4d7f7cba..b5072dd7122f 100644 --- a/mingw-w64-crt/lib-common/msvcrt.def.in +++ b/mingw-w64-crt/lib-common/msvcrt.def.in @@ -461,7 +461,7 @@ _cwscanf_l _cwscanf_s _cwscanf_s_l F_X86_ANY(_dstbias DATA) -F_ARM_ANY(_daylight DATA) +_daylight DATA _difftime32 F_I386(== difftime) _difftime64 _dup @@ -1071,12 +1071,14 @@ F_ARM_ANY(_tempnam_dbg) F_I386(_time32 == time) F_ARM_ANY(_time32) _time64 +F_X86_ANY(_timezone DATA)
Why is this symbol now suddenly x86 only, while it was provided for all 4 architectures before, when it was provided via msvcrt-common.def.in?
The same goes for _tzname and longjmp below too.
diff --git a/mingw-w64-crt/lib-common/ucrtbase.def.in b/mingw-w64-crt/lib-common/ucrtbase.def.in index a90fd72b7397..3df23433d070 100644 --- a/mingw-w64-crt/lib-common/ucrtbase.def.in +++ b/mingw-w64-crt/lib-common/ucrtbase.def.in @@ -2446,6 +2446,7 @@ logbf logbl F_X86_ANY(DATA) F_NON_I386(logf F_X86_ANY(DATA)) F_ARM_ANY(logl == log) +F_X86_ANY(longjmp)
Why is longjmp only provided on x86 here, when it used to be provided for all 4 architectures before?
// Martin _______________________________________________ Mingw-w64-public mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/mingw-w64-public
