crt: Fix _adj_fdiv_m* and _adj_fdivr_m* symbols 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. Signed-off-by: LIU Hao <lh_mouse@126.com>
diff --git a/mingw-w64-crt/lib-common/msvcrt.def.in b/mingw-w64-crt/lib-common/msvcrt.def.in index e39a0c1..b5b971d 100644 --- a/mingw-w64-crt/lib-common/msvcrt.def.in +++ b/mingw-w64-crt/lib-common/msvcrt.def.in
@@ -419,15 +419,15 @@ _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 e80d2b6..31d09fe 100644 --- a/mingw-w64-crt/lib32/msvcr70.def.in +++ b/mingw-w64-crt/lib32/msvcr70.def.in
@@ -238,15 +238,15 @@ _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 66c87d1..afd7452 100644 --- a/mingw-w64-crt/lib32/msvcr71.def.in +++ b/mingw-w64-crt/lib32/msvcr71.def.in
@@ -232,15 +232,15 @@ _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 254330b..6073d4c 100644 --- a/mingw-w64-crt/lib32/msvcr80.def.in +++ b/mingw-w64-crt/lib32/msvcr80.def.in
@@ -336,15 +336,15 @@ _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 c5a70d3..b0c6fb8 100644 --- a/mingw-w64-crt/lib32/msvcr90.def.in +++ b/mingw-w64-crt/lib32/msvcr90.def.in
@@ -334,15 +334,15 @@ _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 ba7dffa..3cdc837 100644 --- a/mingw-w64-crt/lib32/msvcr90d.def.in +++ b/mingw-w64-crt/lib32/msvcr90d.def.in
@@ -377,15 +377,15 @@ _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 1ac4d47..4f7fcef 100644 --- a/mingw-w64-crt/lib32/msvcrt20.def.in +++ b/mingw-w64-crt/lib32/msvcrt20.def.in
@@ -1569,15 +1569,15 @@ ; 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 2dbd8fc..da23d05 100644 --- a/mingw-w64-crt/lib32/msvcrt40.def.in +++ b/mingw-w64-crt/lib32/msvcrt40.def.in
@@ -1043,15 +1043,15 @@ __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