Commit Graph

57 Commits

Author SHA1 Message Date
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
Alexandre Julliard 3850c1ae16 Moved most USER string functions to dlls/user.
Cleaned up a few more inter-dll dependencies.
2000-08-06 02:42:46 +00:00
Francois Gouget ae41e8c804 Reordered the CALLBACK and WINAPI directives so that it compiles with
old g++ versions.
2000-06-11 20:07:58 +00:00
Ulrich Weigand 7d43bceb7e Moved debugger to libwine to make it available to WineLib apps.
Try to invoke external debugger if internal debugger crashes.
Try to handle early invocation of debugger more gracefully.
2000-01-30 21:16:45 +00:00
Ulrich Weigand eb94c7d2c4 Adapted to new register function handling. 1999-11-13 23:54:04 +00:00