61 Commits

Author SHA1 Message Date
Alexandre Julliard
97847eeee8 ntdll: Avoid referencing winecrt0 exception handlers from the Unix library.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-08-24 22:14:44 +02:00
Jacek Caban
59336f2ff2 wine/exception.h: Don't override __attribute__ keyword on clang MSVC target.
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-04-27 12:04:02 +02:00
Jacek Caban
944ef25f1f include: Fix DECLSPEC_NORETURN usage.
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-04-15 22:53:48 +02:00
Alexandre Julliard
8d40f81d1e include: Remove no longer needed dependency on setjmp.h.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-09-25 16:26:59 +02:00
Alexandre Julliard
61680b4449 winecrt0: Provide our own setjmp/longjmp functions for exception handling.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-18 23:51:51 +02:00
Alexandre Julliard
60df3b14b5 include: Make the Wine exception handlers cdecl.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-30 15:04:06 +02:00
Alexandre Julliard
351bd33069 winecrt0: Reimplement __wine_rtl_unwind() as a proper asm function.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-14 17:19:45 +02:00
Alexandre Julliard
9177a75acc winecrt0: Store the appropriate longjmp() function in the exception frame.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-14 17:19:45 +02:00
Alexandre Julliard
d8454f9231 kernel32: Remove support for vm86 exceptions.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-02-02 14:42:38 +01:00
Piotr Caban
4e863fa7c7 msvcp100: Support exceptions while copying object in _Concurrent_queue_base_v4::_Internal_push.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-23 18:29:09 +01:00
Alex Henrie
224d284f99 include: Discourage use of 'break' or 'continue' inside __TRY/__EXCEPT.
Signed-off-by: Alex Henrie <alexhenrie24@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-12-14 09:58:28 +01:00
Piotr Caban
3eae4807dc include: Add __EXCEPT_CTX/__FINALLY_CTX macros.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Daniel Lehman <dlehman@esri.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-06-05 11:26:30 +02:00
Piotr Caban
66567dbdf1 ntdll: Add support for collided unwinds.
Based on work by Alexandre Julliard.

Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-08-18 11:55:16 +09:00
Alexandre Julliard
3dc0474cfc include: Android supports sigsetjmp now. 2013-07-30 14:43:34 +02:00
Alexandre Julliard
34ff565708 exception.h: Android doesn't have sigsetjmp. 2013-03-13 16:27:50 +01:00
Alexandre Julliard
2bce0c698e ntdll: Set the TARGET_UNWIND flag when calling the unwind handler for the target frame. 2012-03-12 13:04:37 +01:00
Michael Stefaniuc
68f90d9697 kernel32/ntdll: Mark a variable as unused. 2011-10-28 19:10:30 +02:00
Alexandre Julliard
655292ae00 include: Move the exception handling support functions to winecrt0 instead of having them inline. 2010-04-08 17:34:17 +02:00
Alexandre Julliard
c152b4e7d1 include: Add a target address for unwinding for platforms that need it. 2009-06-18 15:17:26 +02:00
Alexandre Julliard
58010a9750 include: Update the comments about the Wine exception macros. 2009-01-26 15:07:50 +01:00
Alexandre Julliard
a7a4f84366 include: Add the needed dllimport attribute to the RtlUnwind declaration. 2008-12-22 20:20:48 +01:00
Alexandre Julliard
e21cbfe7e8 include: Add extern "C" to the exported Wine headers. 2008-11-06 10:43:31 +01:00
Alexandre Julliard
94e217891c exception.h: Make the RtlUnwind wrapper available separately.
Also avoid dependency on winternl.h.
2008-07-03 13:08:19 +02:00
Alexandre Julliard
10e795a091 libport: Move the sigsetjmp replacement to exception.h to make it available for Winelib too. 2008-05-26 19:23:43 +02:00
Alexandre Julliard
69c29866c1 exception.h: Preserve registers when calling RtlUnwind. 2008-05-01 11:07:53 +02:00
Alexandre Julliard
c20e8c9005 exception.h: Only push the exception frame after sigsetjmp.
Otherwise on Windows longjmp may want to mess with the exception frame.
2008-05-01 11:07:08 +02:00
Alexandre Julliard
0ee44f5e20 ntdll: Make the exception handling functions inline. 2008-05-01 10:57:54 +02:00
Rob Shearman
4a4b1269fa include: Include excpt.h from wine/exception.h.
Some files use wine/exception.h without also including excpt.h, but 
excpt.h is needed when using native exception handling.
2008-02-21 20:15:56 +01:00
Rob Shearman
8608e895eb Add a new convenience macro for an exception handler that handles all exceptions.
When using native compiler exceptions, the previous method of doing 
this, __EXCEPT(NULL), would expand to __except( 
(NULL)(GetExceptionInformation())) which doesn't compile as NULL isn't a 
function.

So add a new macro, __EXCEPT_ALL, which works correctly both when using 
native compiler exceptions and without and which makes the meaning of 
code in which it is used clearer.
2008-02-16 14:58:24 +01:00
Rob Shearman
a82f4dd9b7 Don't use GetExceptionCode and GetExceptionInformation in exception filter functions.
When using native compiler exceptions, it isn't valid to use 
GetExceptionCode and GetExceptionInformation anywhere other than in the 
filter or handler blocks since it would be very hard for the compiler to 
work out where to retrieve the exception information from on the stack.

Therefore, remove the WINE_EXCEPTION_FILTER and WINE_FINALLY_FUNC macros 
which enabled GetExceptionCode, GetExceptionInformation and 
AbnormalTermination to be used inside of the functions they declared and 
fix up all callers to access the information directly.
2008-02-16 14:57:44 +01:00
Alexandre Julliard
b1789fc73f kernel32: Don't save the signal mask in sigsetjmp.
This shouldn't be needed anymore now that exceptions are not handled
on the signal stack, and signal mask handling is broken on Mac OS.
2008-02-12 22:39:54 +01:00
Rob Shearman
9f8d379fb3 include: Move Wine-specific EH_* defines from winnt.h to include/wine/exception.h. 2007-12-03 11:54:10 +01:00
Alexandre Julliard
530e765035 include: Exception filters should return LONG, not DWORD.
Also move UnhandledExceptionFilter definitions to winbase.h since they
are there in the latest SDK.
2006-09-20 11:26:59 +02:00
Jonathan Ernst
360a3f9142 Update the address of the Free Software Foundation. 2006-05-23 14:11:13 +02:00
Alexandre Julliard
324d86a3af Exception handling: Added a magic __EXCEPT_PAGE_FAULT macro to make it
easier to handle the common case of trapping page faults.
2005-12-16 16:58:47 +01:00
Alexandre Julliard
b0394dea42 Get rid of the WINE_UNUSED macro. 2004-09-01 17:36:04 +00:00
Alexandre Julliard
2e4f0bc9ba Use sigsetjmp instead of setjmp in Wine internal exception handlers to
make sure the signal mask is restored properly.
2003-10-24 04:30:13 +00:00
Dimitrie O. Paun
53f9c21fb7 Use angle brackets (<>) rather than quotes ("") for the include
directives in our .h files. This should avoid some potentially nasty
surprises for Winelib apps.
2003-08-28 21:43:34 +00:00
Alexandre Julliard
ee106783d0 Renamed EXCEPTION_FRAME to EXCEPTION_REGISTRATION_RECORD since that
seems to be the official name.
2003-08-28 03:07:56 +00:00
Alexandre Julliard
b4a4c05aed Removed a few more #ifdef __WINE__. 2003-01-04 00:19:17 +00:00
Alexandre Julliard
435e2e63f4 winnt.h should not be self-contained, it must depend on windef.h so
that STRICT works correctly; moved some definitions back to windef.h
where they belong, and removed a couple of definitions that don't
exist on Windows.
2002-12-10 22:56:43 +00:00
Lionel Ulmer
bdb44555a3 Raise an exception if any Wine or Winelib code does an assert. 2002-10-28 23:56:58 +00:00
Alexandre Julliard
0799c1a780 Added LGPL standard comment, and copyright notices where necessary.
Global replacement of debugtools.h by wine/debug.h.
2002-03-09 23:29:33 +00:00
Patrik Stridvall
f94462fb75 Move __stdcall/__cdecl to the right place. 2002-01-31 23:22:07 +00:00
Alexandre Julliard
5016e921f5 Added support for cleaning up the TEB from inside the exiting thread. 2002-01-07 18:04:07 +00:00
Alexandre Julliard
634824be58 Raise an exception when a stub entry point is called. 2000-10-26 22:03:34 +00:00
Alexandre Julliard
83f52d11c1 Moved all Win16 definitions out of the standard Windows headers. 2000-09-26 22:20:14 +00:00
Alexandre Julliard
b59627c89f Added support for exception handling while in vm86 mode.
Fixed a couple of bugs in vm86 support.
2000-09-24 03:11:54 +00:00
Alexandre Julliard
45b2c868bb Added preliminary support for switching to vm86 mode with proper
exception handling.
2000-09-18 02:15:07 +00:00
Alexandre Julliard
8328a9d67d Fixed finally handler name. 2000-08-23 19:19:35 +00:00