dlls/ntdll/exception.c / unit-at-a-time problem?
Marcus Meissner
marcus at jet.franken.de
Fri Oct 28 11:22:25 CDT 2005
On Fri, Oct 28, 2005 at 11:51:50AM +0200, Marcus Meissner wrote:
> Hi,
>
> dlls/ntdll/exception.c is showing strange behaviour.
>
> If compiled with -O2 it shows different behaviour than when
> compiled with -O2 -fno-unit-at-a-time.
>
> The latter options should only be responsible for reordering functions.
>
> Is reordering of function order a problem with the DEFINE_REGS_ENTRYPOINT()
> functions in this file?
The problem is that unit-at-a-time rewrites the argument order(!!!)
of the static EXC_CallHandler() function. (It is allowed to do that,
since it 'sees' all callers within the file.)
Once I remove the static from it, everything works (this makes the
compiler not reorder the arguments).
The comment above it says:
|Call an exception handler, setting up an exception frame to catch exceptions
|happening during the handler execution.
|Please do not change the first 4 parameters order in any way - some exceptions handlers
|rely on Base Pointer (EBP) to have a fixed position related to the exception frame
So must the argument order of EXC_CallHandler() be exactly as is?
Ciao, Marcus
More information about the wine-devel
mailing list