Hi Zeb, On 5/4/21 6:41 AM, Zebediah Figura wrote:
-@ cdecl -ret64 _Getcvt() +@ cdecl -ret64 _Getcvt(ptr) It used to be: @ cdecl _Getcvt(ptr)
Taking in account there was some discussion regarding lldiv I guess it should be changed differently. Probably current implementation is incorrect on some platforms. I guess it should look like this: #if (defined(__GNUC__) && defined(__i386__) //TODO: check if we need similar workaround for x86_64 /* Workaround a bug in GCC */ ULONGLONG __cdecl _Getcvt(void) { union { _Cvtvec cvtvec; ULONGLONG ull; } ret; TRACE("\n"); ret.cvtvec.page = ___lc_codepage_func(); ret.cvtvec.handle = ___lc_handle_func()[LC_CTYPE]; return ret.ull; } #else _Cvtvec __cdecl _Getcvt(void) { _Cvtvec ret = {0}; #if _MSVCP_VER >= 110 int i; #endif TRACE("\n"); ret.cvtvec.page = ___lc_codepage_func(); #if _MSVCP_VER < 110 ret.cvtvec.handle = ___lc_handle_func()[LC_CTYPE]; #else ret->mb_max = ___mb_cur_max_func(); if(ret->mb_max > 1) { for(i=0; i<256; i++) if(_ismbblead(i)) ret->isleadbyte[i/8] |= 1 << (i&7); } #endif return ret; } #endif And the spec file entry can be changed to: @ cdecl -norelay _Getcvt() Please note that code written here is completely untested. I'm just raising some possible concerns. Thanks, Piotr