[PATCH] ntdll: Only call wine exception handlers on the current stack.
Paul Gofman
pgofman at codeweavers.com
Tue Feb 1 09:24:07 CST 2022
On 2/1/22 18:06, Jacek Caban wrote:
> On 2/1/22 13:57, Paul Gofman wrote:
>> Not sure though if that is good enough though, the prior
>> understanding was that these sort of fixes are waiting for mingw .seh
>> support.
>
>
> It's not just SEH support that's missing in mingw (in fact, GCC mingw
> already supports SEH on x86_64 and llvm-mingw on all targets), but
> it'd also need some sort of __try/__except support (or something
> similar), which is not present in GCC.
>
If by SEH support you mean generating .SEH unwind info for functions
then yes, of course, not sure how things would work without at all in
x64 PE (although without a way to link exception handler, that is, __try
/ __except). If you mean .seh catch on the asm level than yes, that's
how I am suggesting to do that for the select function or two like
RtlUserThreadStart. Or do you mean some other support?
>
> clang already supports it on all targets. I gave it a try when I was
> working on clang support and it looked promising. Back then, I decided
> to put it aside until clang builds are generally in a better shape. I
> just gave it another quick look and with the attached patch, I was
> able to build x64_64 Wine. Unfortunately it fails to run iexplore (my
> quick test), so there is more work needed. If you'd like to give it a
> try, use something like this for configure:
Please correct me if I am wrong, but it seems like having clang as the
default build looks like a long shot for now. The asm solution should be
functionally correct and work both on gcc and clang (I presume? I think
I tried ".seh_handler handler_func, @except" on clang some time ago
although need to recheck). Of course it may still appear a no go due to
inherent ugliness and not targeting arm64.
More information about the wine-devel
mailing list