CRT library functions _adj_fdiv_m* and _adj_fdivr_m* have custom calling convention. These functions take two arguments. First argument is passed in x87 st(0) register and second argument on the stack (either 4 or 8 bytes). Function itself pops the stack (like stdcall convention) and return value is stored in x87 st(0) register.
CL.EXE compiler when invoked with flag /QIfdiv generates calls to these functions. Generated symbol names are without @SIZE suffix decoration. So for compatibility with msvc, do not decorate these symbols with @SIZE suffix (the suffix used for stdcall) in all def files. Note that neither gcc, nor clang does not provide a way to define C function declaration with this calling convention, so currently the only way how to call these functions from the assembler or via gcc inline assembly in C/C++. And therefore mingw-w64 does not provide declaration for these functions in header files. --- mingw-w64-crt/lib-common/msvcrt.def.in | 16 ++++++++-------- mingw-w64-crt/lib32/msvcr70.def.in | 16 ++++++++-------- mingw-w64-crt/lib32/msvcr71.def.in | 16 ++++++++-------- mingw-w64-crt/lib32/msvcr80.def.in | 16 ++++++++-------- mingw-w64-crt/lib32/msvcr90.def.in | 16 ++++++++-------- mingw-w64-crt/lib32/msvcr90d.def.in | 16 ++++++++-------- mingw-w64-crt/lib32/msvcrt20.def.in | 16 ++++++++-------- mingw-w64-crt/lib32/msvcrt40.def.in | 16 ++++++++-------- 8 files changed, 64 insertions(+), 64 deletions(-) diff --git a/mingw-w64-crt/lib-common/msvcrt.def.in b/mingw-w64-crt/lib-common/msvcrt.def.in index e39a0c1b8aac..b5b971d2052c 100644 --- a/mingw-w64-crt/lib-common/msvcrt.def.in +++ b/mingw-w64-crt/lib-common/msvcrt.def.in @@ -419,15 +419,15 @@ F_I386(_abnormal_termination) _access _acmdln DATA #ifdef DEF_I386 -_adj_fdiv_m16i@4 -_adj_fdiv_m32@4 -_adj_fdiv_m32i@4 -_adj_fdiv_m64@8 +_adj_fdiv_m16i ; msvc symbol is without decoration but callee pop stack (like stdcall @4) +_adj_fdiv_m32 ; msvc symbol is without decoration but callee pop stack (like stdcall @4) +_adj_fdiv_m32i ; msvc symbol is without decoration but callee pop stack (like stdcall @4) +_adj_fdiv_m64 ; msvc symbol is without decoration but callee pop stack (like stdcall @8) _adj_fdiv_r -_adj_fdivr_m16i@4 -_adj_fdivr_m32@4 -_adj_fdivr_m32i@4 -_adj_fdivr_m64@8 +_adj_fdivr_m16i ; msvc symbol is without decoration but callee pop stack (like stdcall @4) +_adj_fdivr_m32 ; msvc symbol is without decoration but callee pop stack (like stdcall @4) +_adj_fdivr_m32i ; msvc symbol is without decoration but callee pop stack (like stdcall @4) +_adj_fdivr_m64 ; msvc symbol is without decoration but callee pop stack (like stdcall @8) _adj_fpatan _adj_fprem _adj_fprem1 diff --git a/mingw-w64-crt/lib32/msvcr70.def.in b/mingw-w64-crt/lib32/msvcr70.def.in index e80d2b68a5bc..31d09fe9f92b 100644 --- a/mingw-w64-crt/lib32/msvcr70.def.in +++ b/mingw-w64-crt/lib32/msvcr70.def.in @@ -238,15 +238,15 @@ __winitenv DATA _abnormal_termination _access _acmdln DATA -_adj_fdiv_m16i@4 -_adj_fdiv_m32@4 -_adj_fdiv_m32i@4 -_adj_fdiv_m64@8 +_adj_fdiv_m16i ; msvc symbol is without decoration but callee pop stack (like stdcall @4) +_adj_fdiv_m32 ; msvc symbol is without decoration but callee pop stack (like stdcall @4) +_adj_fdiv_m32i ; msvc symbol is without decoration but callee pop stack (like stdcall @4) +_adj_fdiv_m64 ; msvc symbol is without decoration but callee pop stack (like stdcall @8) _adj_fdiv_r -_adj_fdivr_m16i@4 -_adj_fdivr_m32@4 -_adj_fdivr_m32i@4 -_adj_fdivr_m64@8 +_adj_fdivr_m16i ; msvc symbol is without decoration but callee pop stack (like stdcall @4) +_adj_fdivr_m32 ; msvc symbol is without decoration but callee pop stack (like stdcall @4) +_adj_fdivr_m32i ; msvc symbol is without decoration but callee pop stack (like stdcall @4) +_adj_fdivr_m64 ; msvc symbol is without decoration but callee pop stack (like stdcall @8) _adj_fpatan _adj_fprem _adj_fprem1 diff --git a/mingw-w64-crt/lib32/msvcr71.def.in b/mingw-w64-crt/lib32/msvcr71.def.in index 66c87d1dc654..afd74527d065 100644 --- a/mingw-w64-crt/lib32/msvcr71.def.in +++ b/mingw-w64-crt/lib32/msvcr71.def.in @@ -232,15 +232,15 @@ __winitenv DATA _abnormal_termination _access _acmdln DATA -_adj_fdiv_m16i@4 -_adj_fdiv_m32@4 -_adj_fdiv_m32i@4 -_adj_fdiv_m64@8 +_adj_fdiv_m16i ; msvc symbol is without decoration but callee pop stack (like stdcall @4) +_adj_fdiv_m32 ; msvc symbol is without decoration but callee pop stack (like stdcall @4) +_adj_fdiv_m32i ; msvc symbol is without decoration but callee pop stack (like stdcall @4) +_adj_fdiv_m64 ; msvc symbol is without decoration but callee pop stack (like stdcall @8) _adj_fdiv_r -_adj_fdivr_m16i@4 -_adj_fdivr_m32@4 -_adj_fdivr_m32i@4 -_adj_fdivr_m64@8 +_adj_fdivr_m16i ; msvc symbol is without decoration but callee pop stack (like stdcall @4) +_adj_fdivr_m32 ; msvc symbol is without decoration but callee pop stack (like stdcall @4) +_adj_fdivr_m32i ; msvc symbol is without decoration but callee pop stack (like stdcall @4) +_adj_fdivr_m64 ; msvc symbol is without decoration but callee pop stack (like stdcall @8) _adj_fpatan _adj_fprem _adj_fprem1 diff --git a/mingw-w64-crt/lib32/msvcr80.def.in b/mingw-w64-crt/lib32/msvcr80.def.in index 254330b8b508..6073d4c582a2 100644 --- a/mingw-w64-crt/lib32/msvcr80.def.in +++ b/mingw-w64-crt/lib32/msvcr80.def.in @@ -336,15 +336,15 @@ imaxabs == _abs64 _access _access_s _acmdln DATA -_adj_fdiv_m16i@4 -_adj_fdiv_m32@4 -_adj_fdiv_m32i@4 -_adj_fdiv_m64@8 +_adj_fdiv_m16i ; msvc symbol is without decoration but callee pop stack (like stdcall @4) +_adj_fdiv_m32 ; msvc symbol is without decoration but callee pop stack (like stdcall @4) +_adj_fdiv_m32i ; msvc symbol is without decoration but callee pop stack (like stdcall @4) +_adj_fdiv_m64 ; msvc symbol is without decoration but callee pop stack (like stdcall @8) _adj_fdiv_r -_adj_fdivr_m16i@4 -_adj_fdivr_m32@4 -_adj_fdivr_m32i@4 -_adj_fdivr_m64@8 +_adj_fdivr_m16i ; msvc symbol is without decoration but callee pop stack (like stdcall @4) +_adj_fdivr_m32 ; msvc symbol is without decoration but callee pop stack (like stdcall @4) +_adj_fdivr_m32i ; msvc symbol is without decoration but callee pop stack (like stdcall @4) +_adj_fdivr_m64 ; msvc symbol is without decoration but callee pop stack (like stdcall @8) _adj_fpatan _adj_fprem _adj_fprem1 diff --git a/mingw-w64-crt/lib32/msvcr90.def.in b/mingw-w64-crt/lib32/msvcr90.def.in index c5a70d3e9ce9..b0c6fb88dc43 100644 --- a/mingw-w64-crt/lib32/msvcr90.def.in +++ b/mingw-w64-crt/lib32/msvcr90.def.in @@ -334,15 +334,15 @@ imaxabs == _abs64 _access _access_s _acmdln DATA -_adj_fdiv_m16i@4 -_adj_fdiv_m32@4 -_adj_fdiv_m32i@4 -_adj_fdiv_m64@8 +_adj_fdiv_m16i ; msvc symbol is without decoration but callee pop stack (like stdcall @4) +_adj_fdiv_m32 ; msvc symbol is without decoration but callee pop stack (like stdcall @4) +_adj_fdiv_m32i ; msvc symbol is without decoration but callee pop stack (like stdcall @4) +_adj_fdiv_m64 ; msvc symbol is without decoration but callee pop stack (like stdcall @8) _adj_fdiv_r -_adj_fdivr_m16i@4 -_adj_fdivr_m32@4 -_adj_fdivr_m32i@4 -_adj_fdivr_m64@8 +_adj_fdivr_m16i ; msvc symbol is without decoration but callee pop stack (like stdcall @4) +_adj_fdivr_m32 ; msvc symbol is without decoration but callee pop stack (like stdcall @4) +_adj_fdivr_m32i ; msvc symbol is without decoration but callee pop stack (like stdcall @4) +_adj_fdivr_m64 ; msvc symbol is without decoration but callee pop stack (like stdcall @8) _adj_fpatan _adj_fprem _adj_fprem1 diff --git a/mingw-w64-crt/lib32/msvcr90d.def.in b/mingw-w64-crt/lib32/msvcr90d.def.in index ba7dffa1cdad..3cdc83708fe6 100644 --- a/mingw-w64-crt/lib32/msvcr90d.def.in +++ b/mingw-w64-crt/lib32/msvcr90d.def.in @@ -377,15 +377,15 @@ imaxabs == _abs64 _access _access_s _acmdln DATA -_adj_fdiv_m16i@4 -_adj_fdiv_m32@4 -_adj_fdiv_m32i@4 -_adj_fdiv_m64@8 +_adj_fdiv_m16i ; msvc symbol is without decoration but callee pop stack (like stdcall @4) +_adj_fdiv_m32 ; msvc symbol is without decoration but callee pop stack (like stdcall @4) +_adj_fdiv_m32i ; msvc symbol is without decoration but callee pop stack (like stdcall @4) +_adj_fdiv_m64 ; msvc symbol is without decoration but callee pop stack (like stdcall @8) _adj_fdiv_r ; Check!!! Couldn't determine function argument count. Function doesn't return. -_adj_fdivr_m16i@4 -_adj_fdivr_m32@4 -_adj_fdivr_m32i@4 -_adj_fdivr_m64@8 +_adj_fdivr_m16i ; msvc symbol is without decoration but callee pop stack (like stdcall @4) +_adj_fdivr_m32 ; msvc symbol is without decoration but callee pop stack (like stdcall @4) +_adj_fdivr_m32i ; msvc symbol is without decoration but callee pop stack (like stdcall @4) +_adj_fdivr_m64 ; msvc symbol is without decoration but callee pop stack (like stdcall @8) _adj_fpatan _adj_fprem _adj_fprem1 diff --git a/mingw-w64-crt/lib32/msvcrt20.def.in b/mingw-w64-crt/lib32/msvcrt20.def.in index 1ac4d4701ffd..4f7fcef10956 100644 --- a/mingw-w64-crt/lib32/msvcrt20.def.in +++ b/mingw-w64-crt/lib32/msvcrt20.def.in @@ -1569,15 +1569,15 @@ _wpgmptr DATA ; These symbols are not available in the original Microsoft Visual C++ 2.0 version of msvcrt20.dll ; They were added in Microsoft Visual C++ 2.1 Upgrade version of msvcrt20.dll and are present also in all OS system version of msvcrt20.dll -_adj_fdiv_m16i@4 -_adj_fdiv_m32@4 -_adj_fdiv_m32i@4 -_adj_fdiv_m64@8 +_adj_fdiv_m16i ; msvc symbol is without decoration but callee pop stack (like stdcall @4) +_adj_fdiv_m32 ; msvc symbol is without decoration but callee pop stack (like stdcall @4) +_adj_fdiv_m32i ; msvc symbol is without decoration but callee pop stack (like stdcall @4) +_adj_fdiv_m64 ; msvc symbol is without decoration but callee pop stack (like stdcall @8) _adj_fdiv_r -_adj_fdivr_m16i@4 -_adj_fdivr_m32@4 -_adj_fdivr_m32i@4 -_adj_fdivr_m64@8 +_adj_fdivr_m16i ; msvc symbol is without decoration but callee pop stack (like stdcall @4) +_adj_fdivr_m32 ; msvc symbol is without decoration but callee pop stack (like stdcall @4) +_adj_fdivr_m32i ; msvc symbol is without decoration but callee pop stack (like stdcall @4) +_adj_fdivr_m64 ; msvc symbol is without decoration but callee pop stack (like stdcall @8) _adj_fpatan _adj_fprem _adj_fprem1 diff --git a/mingw-w64-crt/lib32/msvcrt40.def.in b/mingw-w64-crt/lib32/msvcrt40.def.in index 2dbd8fc87276..da23d05698fc 100644 --- a/mingw-w64-crt/lib32/msvcrt40.def.in +++ b/mingw-w64-crt/lib32/msvcrt40.def.in @@ -1043,15 +1043,15 @@ __unDName __wgetmainargs _abnormal_termination _access -_adj_fdiv_m16i@4 -_adj_fdiv_m32@4 -_adj_fdiv_m32i@4 -_adj_fdiv_m64@8 +_adj_fdiv_m16i ; msvc symbol is without decoration but callee pop stack (like stdcall @4) +_adj_fdiv_m32 ; msvc symbol is without decoration but callee pop stack (like stdcall @4) +_adj_fdiv_m32i ; msvc symbol is without decoration but callee pop stack (like stdcall @4) +_adj_fdiv_m64 ; msvc symbol is without decoration but callee pop stack (like stdcall @8) _adj_fdiv_r -_adj_fdivr_m16i@4 -_adj_fdivr_m32@4 -_adj_fdivr_m32i@4 -_adj_fdivr_m64@8 +_adj_fdivr_m16i ; msvc symbol is without decoration but callee pop stack (like stdcall @4) +_adj_fdivr_m32 ; msvc symbol is without decoration but callee pop stack (like stdcall @4) +_adj_fdivr_m32i ; msvc symbol is without decoration but callee pop stack (like stdcall @4) +_adj_fdivr_m64 ; msvc symbol is without decoration but callee pop stack (like stdcall @8) _adj_fpatan _adj_fprem _adj_fprem1 -- 2.20.1 _______________________________________________ Mingw-w64-public mailing list Mingw-w64-public@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/mingw-w64-public