Jon Griffiths <[EMAIL PROTECTED]> writes:
> After _far_ too long arsing around with vc++ exception handling, heres the
> first incarnation of msvcrt.dll. Thread safety for files and a couple of
> minor thread issues still need to be resolved and will be fixed shortly. A
> patch to make crtdll use msvcrt will also follow soon (more testing).
OK, I've applied everything except for the exception handling
routines; these will need some more work to be acceptable.
First, as already mentioned here, you cannot access %esp from inline
assembly and hope to have it point to something specific, gcc is free
to manage the stack however it wants. Also you should really use the
existing mechanisms from wine/exception.h, as well as register
functions, instead of using inline assembly all over the place.
If you need to call functions with a specific %ebp, you can write a
small wrapper function (using __ASM_GLOBAL_FUNC) that does just that;
but all the rest should be doable in C. Also note that setting %ebp
before calling MSVCRT_local_unwind2 is useless, the first thing gcc
will do in the function entry code is to change %ebp. If
MSVCRT_local_unwind2 needs the %ebp value it has to be a register
function.
--
Alexandre Julliard
[EMAIL PROTECTED]