Sebastian Lackner
d2ec61105d
ntdll: Do not cast unaligned pointer to M128A in set_context_reg.
...
GCC 7.x will assume 'val' is properly aligned when using a cast.
Signed-off-by: Sebastian Lackner <sebastian@fds-team.de>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-06-05 19:48:44 +02:00
Andrew Wesie
9eecacbeb1
ntdll: Save rdi and rsi in raise_func_trampoline.
...
Signed-off-by: Andrew Wesie <awesie@gmail.com>
Signed-off-by: Sebastian Lackner <sebastian@fds-team.de>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-03-07 21:59:22 +01:00
Piotr Caban
67f2a1eaf9
ntdll: Don't incorrectly overwrite orig_context in call_stack_handlers.
...
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-08-26 23:23:40 +09:00
Daniel Lehman
594ddb6140
ntdll: Set Rip in for longjmp in RtlRestoreContext.
...
Signed-off-by: Daniel Lehman <dlehman@esri.com>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-08-26 23:23:39 +09:00
Piotr Caban
b4991f20cb
ntdll: Remove no longer accessible TEB frames in RtlRestoreContext.
...
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-08-23 14:17:31 +09:00
Piotr Caban
4af2012729
ntdll: Pass updated context inside dispatch.ContextRecord in call_stack_handlers.
...
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-08-18 11:57:01 +09:00
Piotr Caban
10fa7c6e45
ntdll: Print fixme message in case of nested exception.
...
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-08-18 11:56:45 +09:00
Piotr Caban
b23de3cd4a
ntdll: Add support for exceptions inside termination handlers in __C_specific_handler.
...
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-08-18 11:56:29 +09:00
Piotr Caban
7c060d0061
ntdll: Call exception handler with correct context.
...
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-08-18 11:56:16 +09:00
Piotr Caban
abebb81412
ntdll: Add support for ExceptionCollidedUnwind return from exception handler.
...
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-08-18 11:55:59 +09: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
Daniel Lehman
0b6e5fae74
ntdll: Call __finally blocks in __C_specific_handler.
...
Signed-off-by: Daniel Lehman <dlehman@esri.com>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-08-10 22:22:07 +09:00
Piotr Caban
978ee87a25
ntdll: Fix KNONVOLATILE_CONTEXT_POINTERS parameter handling in RtlVirtualUnwind.
...
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-08-08 18:41:30 +09:00
Ken Thomases
3d8efb2388
ntdll: For Mac 64-bit, poke NtCurrentTeb()->ThreadLocalStoragePointer to the corresponding offset from %gs.
...
64-bit Windows apps have hard-coded accesses to %gs:0x58 baked into them. They
need to find the ThreadLocalStoragePointer there.
Technically, the gsbase register and the memory it points to belong to the
pthread implementation on macOS. It's used for the pthread TLS implementation.
Slot 11 (offset 0x58) is currently used for the implementation of the ttyname()
system library function. We do not anticipate that Wine or any of the system
libraries or frameworks it uses will call ttyname(). Furthermore, Apple has
made it so that future releases of macOS will no longer use that slot. So, we
hijack it for our purposes.
Signed-off-by: Ken Thomases <ken@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-29 12:04:10 +09:00
Ken Thomases
7501942008
ntdll: For Mac 64-bit, poke the TEB address to %gs:0x30 and re-enable the inlining of NtCurrentTeb().
...
64-bit Windows apps have hard-coded accesses to %gs:0x30 baked into them. They
need to find the TEB self pointer there.
Technically, the gsbase register and the memory it points to belong to the
pthread implementation on macOS. It's used for the pthread TLS implementation.
However, study of the sources and experimentation reveal that TLS slot 6
(offset 0x30) is not currently used. Furthermore, Apple has promised to not
use that slot in the future. So, we hijack it for our purposes.
Signed-off-by: Ken Thomases <ken@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-28 21:38:01 +09:00
Piotr Caban
4c50ef6995
ntdll: Add RtlRestoreContext implementation.
...
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-06 11:49:33 +09:00
Sebastian Lackner
d25ae3ca25
ntdll: Handle stack guard pages on x86_64.
...
Signed-off-by: Sebastian Lackner <sebastian@fds-team.de>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-04-15 17:56:59 +09:00
Sebastian Lackner
d4ab672cf5
ntdll: Fix off-by-one errors in __wine_set_signal_handler.
...
Signed-off-by: Sebastian Lackner <sebastian@fds-team.de>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-03-28 18:41:00 +09:00
Sebastian Lackner
123185c3a2
ntdll: Set correct number of arguments for breakpoint exceptions.
...
Signed-off-by: Sebastian Lackner <sebastian@fds-team.de>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-02-19 11:20:12 +09:00
Sebastian Lackner
d0cc0dd69f
ntdll: Fix up instruction pointer in context for EXCEPTION_BREAKPOINT on x86_64.
...
Similar to eab168cf9e
for x86.
Signed-off-by: Sebastian Lackner <sebastian@fds-team.de>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-02-19 11:20:08 +09:00
Sebastian Lackner
e1d68b2e16
ntdll: Implement handling of int $0x2d for x86_64.
...
Signed-off-by: Sebastian Lackner <sebastian@fds-team.de>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-02-19 00:49:12 +09:00
Sebastian Lackner
897ac569c8
ntdll: Check ContextFlags before restoring registers on x86_64.
...
Signed-off-by: Sebastian Lackner <sebastian@fds-team.de>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-01-06 15:50:30 +01:00
Sebastian Lackner
cbb5705216
ntdll: Use wrapper function for consolidate callback on x86_64.
...
Signed-off-by: Sebastian Lackner <sebastian@fds-team.de>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-10-21 19:19:08 +09:00
Francois Gouget
93a7845ae8
ntdll: Use #ifdef to check for potentially undefined macros.
2015-08-07 23:44:30 +09:00
Ken Thomases
82dd799d52
ntdll: Add partial support for version 3 of DWARF CIEs which are generated by Clang/LLVM.
2015-06-05 18:40:39 +09:00
Ken Thomases
bbcfa6b4ee
ntdll: Add support for using libunwind to unwind the stack for x86_64.
...
On OS X, Apple uses compact unwind info in preference to DWARF unwind info.
2015-06-05 15:08:02 +09:00
Sebastian Lackner
33c3990e4d
ntdll: Fix various bugs RtlUnwindEx on x86_64.
2015-04-03 17:07:36 +09:00
Sebastian Lackner
6bec132c7a
ntdll: Try to handle write-watches while we're on the signal stack.
2015-02-27 14:59:08 +09:00
Charles Davis
97bda9a05f
ntdll: Support 64-bit Mac OS.
2015-02-06 22:35:17 +09:00
Alexandre Julliard
d7f6f8ee6c
ntdll: Define arch_prctl since it is missing on Android.
2014-07-24 20:44:50 +02:00
Alexandre Julliard
8d817997ce
configure: Add a check for sys/ucontext.h and include it where appropriate.
2014-07-23 19:06:58 +02:00
Sebastian Lackner
dd0e9fe91e
ntdll/tests: Fix exception test failures on x86_64.
2014-06-11 19:15:01 +02:00
Akihiro Sagawa
e67f84122d
ntdll: Add %gs support for NetBSD.
2014-04-14 20:19:01 +02:00
Sebastian Lackner
4d8edf7612
ntdll: Implement RtlInstallFunctionTableCallback on x86_64.
2014-04-08 19:23:14 +02:00
Sebastian Lackner
98307b22fb
ntdll: Implement RtlAddFunctionTable / RtlDeleteFunctionTable for x86_64.
2014-04-08 18:28:31 +02:00
Sebastian Lackner
a71d1e389f
ntdll: Unify exception function lookup on x86_64.
2014-04-08 18:28:30 +02:00
Frédéric Delanoy
416930d498
ntdll: Use BOOL type where appropriate.
2013-11-04 11:03:43 +01:00
Alexandre Julliard
c2d7347e2a
ntdll: Silence some printf format warnings.
2013-08-20 20:52:17 +02:00
Dmitry Timoshkov
10476af626
include: Make KNONVOLATILE_CONTEXT_POINTERS match PSDK definition.
2013-04-30 11:47:05 +02:00
Alexandre Julliard
bb23d63663
ntdll: Export _local_unwind.
2012-05-29 21:33:45 +02:00
Alexandre Julliard
3d4a73e601
ntdll: Add a __chkstk entry point for x86_64.
2012-04-02 12:46:40 +02:00
Alexandre Julliard
a777676bc4
ntdll: Also call the unwind handler for the target frame.
2012-03-30 14:42:55 +02:00
Alexandre Julliard
c0610daf77
ntdll: Properly follow jumps when checking a function epilog.
2012-03-15 20:29:23 +01:00
Alexandre Julliard
b663a6dea4
ntdll: Add support for jump instructions in function epilogs.
2012-03-12 19:18:37 +01:00
Alexandre Julliard
34c875bf8b
ntdll: Add support for rep;ret instruction in function epilogs.
2012-03-12 18:59:51 +01:00
Alexandre Julliard
e562623a15
ntdll: Add support for the special STATUS_UNWIND_CONSOLIDATE exception code.
2012-03-12 16:04:49 +01:00
Alexandre Julliard
f996c89274
ntdll: Trace the exception extra information also in RtlUnwindEx.
2012-03-12 16:04:44 +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
Alexandre Julliard
7c36b51aaf
ntdll: Restore the original context for the last frame instead of the result of the unwind handler.
2012-03-12 13:04:36 +01:00
Alexandre Julliard
de9330cbcb
ntdll: Use the context argument as working variable instead of making a copy in RtlUnwindEx.
2012-03-12 13:04:35 +01:00