crt: msvcr80: Fix decorated fastcall exports Symbols @_calloc_crt@8, @_malloc_crt@4 and @_realloc_crt@8 are exported from msvcr80 DLL libraries with their @suffix decoration. This is not usual. Those decorated symbols refers to fastcall function calling convention. When generating import library, @suffix must not be trimmed (which is done by default by mingw-w64 build procedure due to usage of dlltool --kill-at switch), otherwise linking would fail. Note that suffix @size for fastcall functions does not refer to size of the stack used for arguments, but rather to size of all arguments (passed in registers + stack). All these functions take arguments only in registers. So fix symbols in import libraries by rename operator '==' like it is already used for stdcall decorated symbols. dlltool --kill-at switch does not trim right side of the rename operator '=='. To make declarations of these functions more readable, introduce a new FASTCALL_DECORATED_EXPORT() macro for it. Signed-off-by: LIU Hao <lh_mouse@126.com>
diff --git a/mingw-w64-crt/def-include/func.def.in b/mingw-w64-crt/def-include/func.def.in index 0d1ea77..fdda790 100644 --- a/mingw-w64-crt/def-include/func.def.in +++ b/mingw-w64-crt/def-include/func.def.in
@@ -63,6 +63,7 @@ #if defined(DEF_I386) #define STDCALL_DECORATED_EXPORT(symbol) symbol == _ ## symbol +#define FASTCALL_DECORATED_EXPORT(symbol) symbol == symbol #endif #endif // FUNC_DEF_IN
diff --git a/mingw-w64-crt/lib32/msvcr80.def.in b/mingw-w64-crt/lib32/msvcr80.def.in index 9d4e30e..0e68425 100644 --- a/mingw-w64-crt/lib32/msvcr80.def.in +++ b/mingw-w64-crt/lib32/msvcr80.def.in
@@ -143,9 +143,9 @@ ; Symbols from the original Microsoft Visual C++ 2005 version of msvcr80.dll __uncaught_exception -@_calloc_crt@8 -@_malloc_crt@4 -@_realloc_crt@8 +FASTCALL_DECORATED_EXPORT(@_calloc_crt@8) +FASTCALL_DECORATED_EXPORT(@_malloc_crt@4) +FASTCALL_DECORATED_EXPORT(@_realloc_crt@8) $I10_OUTPUT _CIacos _CIasin
diff --git a/mingw-w64-crt/lib32/msvcr80d.def.in b/mingw-w64-crt/lib32/msvcr80d.def.in index 6bcbf03..ed7d3e8 100644 --- a/mingw-w64-crt/lib32/msvcr80d.def.in +++ b/mingw-w64-crt/lib32/msvcr80d.def.in
@@ -160,9 +160,9 @@ ; Symbols from the original Microsoft Visual C++ 2005 version of msvcr80d.dll __uncaught_exception -@_calloc_crt@8 -@_malloc_crt@4 -@_realloc_crt@8 +FASTCALL_DECORATED_EXPORT(@_calloc_crt@8) +FASTCALL_DECORATED_EXPORT(@_malloc_crt@4) +FASTCALL_DECORATED_EXPORT(@_realloc_crt@8) $I10_OUTPUT _CIacos _CIasin