MSVCRT calling convention issue
Uwe Bonnes
bon at elektron.ikp.physik.tu-darmstadt.de
Mon May 5 07:27:47 CDT 2003
>>>>> "us" == us <us at the-edmeades.demon.co.uk> writes:
us> While debugging a game which only installs if we use the windows
us> msvcrt, I have identified the problem but dont know how to fix it!
us> The problem revolves around the function
us> MSVCRT_type_info_raw_name. This is defined as stdcall, but
us> disassembling the windows version, it clearly shows use of a calling
us> convention I had never heard of, 'thiscall'. According to the MSDN,
us> thiscall is stdcall BUT the 'this' pointer on x86 machines is stored
us> in the ECX register.
us> How can we fix this?
us> My thought: Change the definition to not take a ptr arg, and define
us> a local, this as being in the ECX register, but (a) I dont know how
us> to do this, and (b) is not a solution for winelib applications.
us> For now I can continue having put the msvcrt.dll from another
us> machine in, but it would be nice to solve this issue. I'd also guess
us> it affects more than just that one function.
We have the -register adder in the spec file. Look at e.g. how
__CxxFrameHandler is defined in msvcrt.spec and implemented in
dlls/msvcrt/cppexcept.c.
Great, I also noticed an error in some function of the MSVCRT_type_ group of
calls with Altera's Quartus package, but couldn't figure out...
Bye
--
Uwe Bonnes bon at elektron.ikp.physik.tu-darmstadt.de
Institut fuer Kernphysik Schlossgartenstrasse 9 64289 Darmstadt
--------- Tel. 06151 162516 -------- Fax. 06151 164321 ----------
More information about the wine-devel
mailing list