Paul Gofman
6b78bcff92
ntdll: Restore FP status words from MSVCRT_JUMP_BUFFER on x64.
...
Signed-off-by: Paul Gofman <pgofman@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-12-21 16:52:07 +01:00
Alexandre Julliard
e5e857c290
ntdll: Add support for dispatching exception from 32-bit code in Wow64 mode.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-12-01 18:13:53 +01:00
Alexandre Julliard
b56a4b3efc
ntdll: Implement KiUserCallbackDispatcher().
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-17 11:55:39 +02:00
Zebediah Figura
dae60a374e
ntdll: Use a separate +unwind debug channel for unwinding on x86-64.
...
Constant spam from unwinding routines makes +seh logs hard to read, especially
for programs that throw a lot of exceptions as part of normal execution. Since
unwind information is rarely useful, don't display it unless specifically
requested.
Make +unwind the default channel in these files, though, since there are more
unwind messages than exception messages.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-19 12:30:48 +02:00
Alexandre Julliard
72ace07c6f
ntdll: Pass an extra context arguments to APC functions on 64-bit.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-25 21:13:00 +02:00
Alexandre Julliard
ee0b909f87
ntdll: Export RtlWow64Get/SetThreadContext() on all 64-bit platforms.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-18 17:53:30 +02:00
Zebediah Figura
07ea3061e2
ntdll: Use %I64x instead of %lx to trace 64-bit values.
...
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-13 10:41:03 +02:00
Rémi Bernon
96f5968a65
ntdll: Clear the first ~1MB of stack in signal_start_thread.
...
Instead of the whole stack.
Stack creation in virtual_alloc_thread_stack and RtlCreateUserStack, as
well as Windows rounding logic, enforce a minimum reserved size of 1MB.
There's a few guard and canary pages used on the bottom, plus a few more
on the top for initial context, and we have to keep a bit of space if we
ever need a stack while doing this, so we clear a bit less than 1MB to
be safe.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-04-21 09:42:45 +02:00
Zebediah Figura
195c57eeb7
ntdll: Report SegDs to be identical to SegSs in x86_64 exception handlers.
...
Based on a patch by Dávid Török.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=47970
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-29 22:44:35 +02:00
Paul Gofman
66a819ef0c
ntdll: Print an ERR for assertion exceptions only.
...
Signed-off-by: Paul Gofman <pgofman@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-03 21:54:44 +01:00
Jacek Caban
bdf4b3b400
ntdll: Use NtContinue in RtlRestoreContext.
...
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-22 20:19:12 +01:00
Rémi Bernon
da3be6b0b6
ntdll: Print a warning or an error for other exceptions.
...
Depending on EH_NONCONTINUABLE.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-08 11:04:17 +01:00
Rémi Bernon
30ecf517e4
ntdll: Print a warning for debug print exceptions.
...
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-08 11:00:25 +01:00
Rémi Bernon
6edf3d3b09
ntdll: Print a warning for thread rename exceptions.
...
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-08 11:00:20 +01:00
Paul Gofman
71a43335ab
ntdll: Save unwind information in KiUserApcDispatcher() on x64.
...
Signed-off-by: Paul Gofman <pgofman@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-12-17 10:35:46 +01:00
Daniel Lehman
bd02a82d9c
ntdll: Handle 64-bit addresses in +seh traces on x64.
...
Signed-off-by: Daniel Lehman <dlehman25@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-12-01 13:15:31 +01:00
Paul Gofman
36dcb69651
ntdll: Fix xmm registers copy offset in call_consolidate_callback() on x86_64.
...
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=50010
Signed-off-by: Paul Gofman <pgofman@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-10-22 22:02:03 +02:00
Paul Gofman
8aa370e991
ntdll: Clear CONTEXT_XSTATE flag in RtlUnwindEx().
...
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=49749
Signed-off-by: Paul Gofman <pgofman@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-08-31 21:41:07 +02:00
Alexandre Julliard
3863b243fe
ntdll: Clear the thread stack by hand instead of remapping zero pages.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-08-27 12:24:05 +02:00
Paul Gofman
057e7f1940
ntdll: Also save unwind info for rbp in call_consolidate_callback() on x64.
...
Fixes Bloons TD 6 crash on start.
Signed-off-by: Paul Gofman <pgofman@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-08-24 11:16:40 +02:00
Paul Gofman
16ed88a952
ntdll: Support AVX context in fault exceptions on Linux x86_64.
...
Signed-off-by: Paul Gofman <pgofman@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-08-21 16:54:38 +02:00
Alexandre Julliard
4a7cd0f492
ntdll: Call NtContinue() from LdrInitializeThunk() instead of returning.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-08-20 18:23:44 +02:00
Paul Gofman
f332f2e4e2
ntdll: Don't transfer xmm registers explicitly during context save and restore on x64.
...
fxsave / fxrstor already do that.
Signed-off-by: Paul Gofman <pgofman@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-08-19 10:16:57 +02:00
Paul Gofman
71090bdc2f
ntdll: Don't mind epilog in RtlVirtualUnwind() in case of zero op count on x64.
...
Signed-off-by: Paul Gofman <pgofman@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-08-14 22:02:04 +02:00
Paul Gofman
ae07938ba6
ntdll: Support nested exceptions on x64.
...
Signed-off-by: Paul Gofman <pgofman@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-08-14 22:02:04 +02:00
Paul Gofman
c76dc32fef
ntdll: Fix unwind from call_consolidate_callback() for PE build on x64.
...
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=49698
Signed-off-by: Paul Gofman <pgofman@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-08-13 12:28:32 +02:00
Paul Gofman
76556bc588
ntdll: Support UWOP_PUSH_MACHFRAME opcode in RtlVirtualUnwind() on x64.
...
Signed-off-by: Paul Gofman <pgofman@codeweavers.com>
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-08-13 12:27:03 +02:00
Alexandre Julliard
06c09fca31
ntdll/tests: Add tests for RtlCaptureContext() and NtGetContextThread() on x86_64.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-28 14:13:48 +02:00
Paul Gofman
12dba1b2ae
ntdll: Fix PE unwind info for %rsi, %rdi in KiUserExceptionDispatcher.
...
Fixes StarCraft crash on start.
Signed-off-by: Paul Gofman <pgofman@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-17 00:04:13 +02:00
Paul Gofman
e722660114
ntdll: Fixup instruction pointer for EXCEPTION_BREAKPOINT in the Unix part on x86/x86_64.
...
Signed-off-by: Paul Gofman <pgofman@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-09 19:41:40 +02:00
Paul Gofman
af3aee8a5a
ntdll: Don't call NtRaiseException() on x64 if debugger is not present.
...
Signed-off-by: Paul Gofman <pgofman@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-07 13:07:23 +02:00
Paul Gofman
c02b63fb60
ntdll: Add PE frame handling to KiUserExceptionDispatcher() on x64.
...
Signed-off-by: Paul Gofman <pgofman@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-02 18:01:21 +02:00
Paul Gofman
887332f9c7
ntdll: Fix KiUserExceptionDispatcher ABI on x86_64.
...
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=49436
Signed-off-by: Paul Gofman <pgofman@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-01 15:07:33 +02:00
Alexandre Julliard
8a169390c9
ntdll: Build with msvcrt.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-30 12:25:08 +02:00
Alexandre Julliard
38c78a9682
ntdll: Avoid some Unix dependencies.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-29 19:51:47 +02:00
Alexandre Julliard
c031662fd0
ntdll: Always set the thread context through NtSetContextThread().
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-25 23:08:30 +02:00
Alexandre Julliard
10dbd1edd1
ntdll: Move the libunwind support to the Unix library.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-25 23:08:30 +02:00
Rémi Bernon
f5a8ed47a3
ntdll: Leave some space around DbgBreakPoint and DbgUserBreakPoint.
...
CoD: Black Ops 3 and CoD: WWII modify these (and several others) and
expect to have enough space for a few instructions.
It then verifies later that the patches are still in place, and
terminates if the byte sequence do not match. Having small symbols can
make the patches to overlap and the check to fail.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-24 18:31:09 +02:00
Alexandre Julliard
2e6a2cf9c6
ntdll: Move the WoW64 thread context functions to the Unix library.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-18 14:48:15 +02:00
Alexandre Julliard
2333099c52
ntdll: Move signal handlers to the Unix library.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-09 15:25:52 +02:00
Alexandre Julliard
683583faf2
ntdll: Remove support for setting custom signal handlers.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-06 16:45:36 +02:00
Alexandre Julliard
7f28a1c521
ntdll: Use NtContinue() to restore context after an exception.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-06 15:17:07 +02:00
Alexandre Julliard
e561ce4b92
ntdll: Move NtRaiseException() implementation to the Unix library.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-06 14:31:00 +02:00
Alexandre Julliard
be0eb9c92e
ntdll: Move the thread startup code to the Unix library.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-03 20:01:16 +02:00
Alexandre Julliard
c96ef78b6d
ntdll: Move the virtual memory functions to the Unix library.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-02 17:19:12 +02:00
Alexandre Julliard
7c32b2dd93
ntdll: Move NtGetContextThread() implementation to the Unix library.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-02 14:23:21 +02:00
Alexandre Julliard
ac90898f72
ntdll: Move NtSetContextThread() implementation to the Unix library.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-02 14:01:10 +02:00
Alexandre Julliard
3e9f8c87e5
ntdll: Move the threading initialization functions to the Unix library.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-01 22:10:28 +02:00
Matteo Bruni
2e5c2c7cdb
ntdll: Use memcpy() in set_float_reg().
...
The source address might not be aligned although the compiler can
expect alignment when using a plain assignment.
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-05-25 20:20:09 +02:00
Alexandre Julliard
bd9a1e23f2
ntdll: Move TEB allocation to the common code.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-04-28 14:03:26 +02:00