In MSVC mode, the __SEH__ macro isn't defined, but the .seh directives are supported in assembly. In these cases, we have to hardcode which architectures we know clang supports SEH directives in as it's not exposed otherwise.
Signed-off-by: Martin Storsjo martin@martin.st
--- This is admittedly rather ugly, but fixes a few unwinding cases with a wine in PE mode, built with clang in MSVC mode. --- include/wine/asm.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/include/wine/asm.h b/include/wine/asm.h index ed44a7dd6dd..236b35cf8fe 100644 --- a/include/wine/asm.h +++ b/include/wine/asm.h @@ -41,7 +41,7 @@ # define __ASM_CFI(str) #endif
-#ifdef __SEH__ +#if defined(__SEH__) || (defined(_MSC_VER) && defined(__clang__) && (defined(__x86_64__) || defined(__aarch64__))) # if defined(__aarch64__) && defined(__clang_major__) && (__clang_major__ < 12 || defined(__apple_build_version__)) /* Clang got support for aarch64 SEH assembly directives in Clang 12, * before that, only .seh_startproc/.seh_endproc but nothing else was