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