While UCRT does provide long double variants of certain functions (as required by C99), UCRT's long double is equivalent to regular double (as in MSVC), while mingw uses 80 bit long doubles on x86.
There's probably ones that I have missed, but this at least fixes my, at this point fairly extensive test set. Normally their existence here isn't an issue, but if -lucrt/-lucrtbase happens to be linked before -lmingwex, these functions would happen to be used instead of the ones in libmingwex. Signed-off-by: Martin Storsjö <[email protected]> --- .../api-ms-win-crt-math-l1-1-0.def.in | 70 ++++++++++--------- mingw-w64-crt/lib-common/ucrtbase.def.in | 70 ++++++++++--------- 2 files changed, 72 insertions(+), 68 deletions(-) diff --git a/mingw-w64-crt/lib-common/api-ms-win-crt-math-l1-1-0.def.in b/mingw-w64-crt/lib-common/api-ms-win-crt-math-l1-1-0.def.in index 86a3ba0c2..20a008d11 100644 --- a/mingw-w64-crt/lib-common/api-ms-win-crt-math-l1-1-0.def.in +++ b/mingw-w64-crt/lib-common/api-ms-win-crt-math-l1-1-0.def.in @@ -152,13 +152,13 @@ F_NON_I386(acosf F_X86_ANY(DATA)) F_ARM_ANY(acosl == acos) acosh acoshf -acoshl +acoshl F_X86_ANY(DATA) asin F_NON_I386(asinf F_X86_ANY(DATA)) F_ARM_ANY(asinl == asin) asinh asinhf -asinhl +asinhl F_X86_ANY(DATA) atan atan2 F_X86_ANY(DATA) F_NON_I386(atan2f F_X86_ANY(DATA)) @@ -167,7 +167,7 @@ F_NON_I386(atanf F_X86_ANY(DATA)) F_ARM_ANY(atanl == atan) atanh atanhf -atanhl +atanhl F_X86_ANY(DATA) cabs cabsf cabsl @@ -194,7 +194,7 @@ catanhl catanl cbrt cbrtf -cbrtl +cbrtl F_X86_ANY(DATA) ccos ccosf ccosh @@ -221,7 +221,7 @@ conjf conjl copysign copysignf -copysignl +copysignl F_X86_ANY(DATA) cos F_X86_ANY(DATA) F_NON_I386(cosf F_X86_ANY(DATA)) F_ARM_ANY(cosl == cos) @@ -254,35 +254,35 @@ ctanl erf erfc erfcf -erfcl +erfcl F_X86_ANY(DATA) erff -erfl +erfl F_X86_ANY(DATA) exp F_X86_ANY(DATA) exp2 exp2f -exp2l +exp2l F_X86_ANY(DATA) F_NON_I386(expf F_X86_ANY(DATA)) F_ARM_ANY(expl == exp) expm1 expm1f -expm1l +expm1l F_X86_ANY(DATA) fabs DATA F_ARM_ANY(fabsf) fdim fdimf -fdiml +fdiml F_X86_ANY(DATA) floor F_X86_ANY(DATA) F_NON_I386(floorf F_X86_ANY(DATA)) F_ARM_ANY(floorl == floor) fma fmaf -fmal +fmal F_X86_ANY(DATA) fmax fmaxf -fmaxl +fmaxl F_X86_ANY(DATA) fmin fminf -fminl +fminl F_X86_ANY(DATA)k fmod F_X86_ANY(DATA) F_NON_I386(fmodf F_X86_ANY(DATA)) F_ARM_ANY(fmodl == fmod) @@ -290,7 +290,7 @@ frexp hypot ilogb ilogbf -ilogbl +ilogbl F_X86_ANY(DATA) ldexp F_X86_ANY(DATA) ; The UCRT lgamma functions don't set/provide the signgam variable like ; the mingw ones do. Therefore prefer the libmingwex version instead. @@ -299,31 +299,31 @@ lgammaf DATA lgammal DATA llrint llrintf -llrintl +llrintl F_X86_ANY(DATA) llround llroundf -llroundl +llroundl F_X86_ANY(DATA) log F_X86_ANY(DATA) log10 F_NON_I386(log10f F_X86_ANY(DATA)) F_ARM_ANY(log10l == log10) log1p log1pf -log1pl +log1pl F_X86_ANY(DATA) log2 log2f -log2l +log2l F_X86_ANY(DATA) logb logbf -logbl +logbl F_X86_ANY(DATA) F_NON_I386(logf F_X86_ANY(DATA)) F_ARM_ANY(logl == log) lrint lrintf -lrintl +lrintl F_X86_ANY(DATA) lround lroundf -lroundl +lroundl F_X86_ANY(DATA) modf DATA F_NON_I386(modff DATA) nan @@ -331,13 +331,15 @@ nanf nanl nearbyint nearbyintf -nearbyintl +nearbyintl F_X86_ANY(DATA) nextafter nextafterf -nextafterl -nexttoward -nexttowardf -nexttowardl +nextafterl F_X86_ANY(DATA) +; All of the nexttoward functions take the second parameter as long doubke, +; making them unusable for x86. +nexttoward F_X86_ANY(DATA) +nexttowardf F_X86_ANY(DATA) +nexttowardl F_X86_ANY(DATA) norm normf norml @@ -346,22 +348,22 @@ F_NON_I386(powf F_X86_ANY(DATA)) F_ARM_ANY(powl == pow) remainder remainderf -remainderl +remainderl F_X86_ANY(DATA) remquo remquof -remquol +remquol F_X86_ANY(DATA) rint rintf -rintl +rintl F_X86_ANY(DATA) round roundf -roundl +roundl F_X86_ANY(DATA) scalbln scalblnf -scalblnl +scalblnl F_X86_ANY(DATA) scalbn scalbnf -scalbnl +scalbnl F_X86_ANY(DATA) sin F_X86_ANY(DATA) F_NON_I386(sinf F_X86_ANY(DATA)) F_ARM_ANY(sinl == sin) @@ -378,7 +380,7 @@ tanh F_NON_I386(tanhf) tgamma tgammaf -tgammal +tgammal F_X86_ANY(DATA) trunc truncf -truncl +truncl F_X86_ANY(DATA) diff --git a/mingw-w64-crt/lib-common/ucrtbase.def.in b/mingw-w64-crt/lib-common/ucrtbase.def.in index 8bdc194de..b5e73e69d 100644 --- a/mingw-w64-crt/lib-common/ucrtbase.def.in +++ b/mingw-w64-crt/lib-common/ucrtbase.def.in @@ -2184,7 +2184,7 @@ F_NON_I386(acosf F_X86_ANY(DATA)) F_ARM_ANY(acosl == acos) acosh acoshf -acoshl +acoshl F_X86_ANY(DATA) asctime asctime_s asin @@ -2192,7 +2192,7 @@ F_NON_I386(asinf F_X86_ANY(DATA)) F_ARM_ANY(asinl == asin) asinh asinhf -asinhl +asinhl F_X86_ANY(DATA) atan atan2 F_X86_ANY(DATA) F_NON_I386(atan2f F_X86_ANY(DATA)) @@ -2201,7 +2201,7 @@ F_NON_I386(atanf F_X86_ANY(DATA)) F_ARM_ANY(atanl == atan) atanh atanhf -atanhl +atanhl F_X86_ANY(DATA) atof atoi atol @@ -2238,7 +2238,7 @@ catanhl catanl cbrt cbrtf -cbrtl +cbrtl F_X86_ANY(DATA) ccos ccosf ccosh @@ -2268,7 +2268,7 @@ conjf conjl copysign copysignf -copysignl +copysignl F_X86_ANY(DATA) cos F_X86_ANY(DATA) F_NON_I386(cosf F_X86_ANY(DATA)) F_ARM_ANY(cosl == cos) @@ -2302,25 +2302,25 @@ div erf erfc erfcf -erfcl +erfcl F_X86_ANY(DATA) erff -erfl +erfl F_X86_ANY(DATA) exit exp F_X86_ANY(DATA) exp2 exp2f -exp2l +exp2l F_X86_ANY(DATA) F_NON_I386(expf F_X86_ANY(DATA)) F_ARM_ANY(expl == exp) expm1 expm1f -expm1l +expm1l F_X86_ANY(DATA) fabs DATA F_ARM_ANY(fabsf) fclose fdim fdimf -fdiml +fdiml F_X86_ANY(DATA) ; Don't use the float env functions from UCRT; fesetround doesn't seem to have ; any effect on the FPU control word as required by other libmingwex math ; routines. @@ -2346,13 +2346,13 @@ F_NON_I386(floorf F_X86_ANY(DATA)) F_ARM_ANY(floorl == floor) fma fmaf -fmal +fmal F_X86_ANY(DATA) fmax fmaxf -fmaxl +fmaxl F_X86_ANY(DATA) fmin fminf -fminl +fminl F_X86_ANY(DATA) fmod F_X86_ANY(DATA) F_NON_I386(fmodf F_X86_ANY(DATA)) F_ARM_ANY(fmodl == fmod) @@ -2383,7 +2383,7 @@ getwchar hypot ilogb ilogbf -ilogbl +ilogbl F_X86_ANY(DATA) imaxabs imaxdiv is_wctype @@ -2426,10 +2426,10 @@ llabs lldiv llrint llrintf -llrintl +llrintl F_X86_ANY(DATA) llround llroundf -llroundl +llroundl F_X86_ANY(DATA) localeconv log F_X86_ANY(DATA) log10 @@ -2437,21 +2437,21 @@ F_NON_I386(log10f F_X86_ANY(DATA)) F_ARM_ANY(log10l == log10) log1p log1pf -log1pl +log1pl F_X86_ANY(DATA) log2 log2f -log2l +log2l F_X86_ANY(DATA) logb logbf -logbl +logbl F_X86_ANY(DATA) F_NON_I386(logf F_X86_ANY(DATA)) F_ARM_ANY(logl == log) lrint lrintf -lrintl +lrintl F_X86_ANY(DATA) lround lroundf -lroundl +lroundl F_X86_ANY(DATA) malloc mblen mbrlen @@ -2477,13 +2477,15 @@ nanf nanl nearbyint nearbyintf -nearbyintl +nearbyintl F_X86_ANY(DATA) nextafter nextafterf -nextafterl -nexttoward -nexttowardf -nexttowardl +nextafterl F_X86_ANY(DATA) +; All of the nexttoward functions take the second parameter as long doubke, +; making them unusable for x86. +nexttoward F_X86_ANY(DATA) +nexttowardf F_X86_ANY(DATA) +nexttowardl F_X86_ANY(DATA) norm normf norml @@ -2505,25 +2507,25 @@ rand_s realloc remainder remainderf -remainderl +remainderl F_X86_ANY(DATA) remove remquo remquof -remquol +remquol F_X86_ANY(DATA) rename rewind rint rintf -rintl +rintl F_X86_ANY(DATA) round roundf -roundl +roundl F_X86_ANY(DATA) scalbln scalblnf -scalblnl +scalblnl F_X86_ANY(DATA) scalbn scalbnf -scalbnl +scalbnl F_X86_ANY(DATA) set_terminate set_unexpected setbuf @@ -2585,7 +2587,7 @@ F_NON_I386(tanhf) terminate tgamma tgammaf -tgammal +tgammal F_X86_ANY(DATA) tmpfile tmpfile_s tmpnam @@ -2597,7 +2599,7 @@ towlower towupper trunc truncf -truncl +truncl F_X86_ANY(DATA) unexpected ungetc ungetwc -- 2.17.1 _______________________________________________ Mingw-w64-public mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/mingw-w64-public
