Timo Kreuzer
66aa25b1cd
[RTL] Implement RtlUnwind
2022-11-24 21:17:58 +02:00
Timo Kreuzer
8d3bc7c572
[RTL] Set unwind flags in RtlUnwindEx
2022-11-24 21:17:58 +02:00
Timo Kreuzer
0c211b975f
[RTL] Fixes for RtlpUnwindInternal
2022-11-24 21:17:58 +02:00
Timo Kreuzer
aade1ab01b
[RTL] Fix RtlVirtualUnwind
2022-11-24 21:17:58 +02:00
Timo Kreuzer
90d2e12dfa
[RTL] Fix RtlpCaptureNonVolatileContextPointers
2022-11-24 21:17:58 +02:00
Timo Kreuzer
45f75d5d32
[NTOS:KE/x64] Handle user faults in KiGeneralProtectionFaultHandler
2022-07-14 18:35:28 +02:00
Timo Kreuzer
8521f6d7b5
[RTL] Implement dynamic function tables for x64
2022-06-25 21:45:47 +02:00
Kento Oki
3ba1d82c41
[RTL/x64] Fix a typo RtplUnwindInternal -> RtlpUnwindInternal ( #3912 )
2021-08-16 04:23:02 +03:00
Timo Kreuzer
d24700f82e
[RTL/x64] Properly handle UNW_FLAG_CHAININFO
2021-07-03 12:56:48 +02:00
Victor Perevertkin
34593d933b
[FORMATTING][NTOS][HAL][DRIVERS][SDK] Fix trailing spaces
2021-06-11 15:33:08 +03:00
Timo Kreuzer
3cf2bea0de
[RTL] Fix RtlWalkFrameChain and wrap it in SEH
2021-06-05 13:52:42 +02:00
Timo Kreuzer
3ec1ca9b46
[RTL] Implement RtplUnwindInternal and wrap RtlUnwindEx and RtlDispatchException around it
...
Based on the description in this blog article: http://www.nynaeve.net/?p=106
2021-06-05 13:52:42 +02:00
Timo Kreuzer
1d58e84736
[RTL] Improve RtlVirtualUnwind
...
* Add support for version 2 unwind info
* Implement UnwindOpSlots() and use it (based on https://github.com/dotnet/coreclr/blob/master/src/unwinder/amd64/unwinder_amd64.cpp )
* Fix handling of UWOP_PUSH_MACHFRAME
2021-06-05 13:52:42 +02:00
Timo Kreuzer
5075f7d746
[RTL] Move exception handling code to except.c
2021-06-05 13:52:42 +02:00
Timo Kreuzer
e801b7dda2
[RTL/x64] Implement RtlpCaptureNonVolatileContextPointers and RtlSetUnwindContext
...
RtlpCaptureNonVolatileContextPointers walks the stack and captures the addresses of all non-volatile registers on the stack, when they have been saved first. This is needed to be able to fix up the non-volatile on a system call, which doesn't capture non-volatiles, but relies on them to be restored by the callees.
Instead of only checking for the TargetFrame, also check for a mode change, i.e. RIP went from kernel to user, in which case the target frame was not reached yet, because it was too large, but processing can't continue here.
RtlSetUnwindContext uses RtlpCaptureNonVolatileContextPointers to set the non-volatile registers in the the stack. They will be picked up, when returning back or unwinding, e.g. to the system call handler.
2021-06-02 18:25:36 +02:00
Timo Kreuzer
6b1ca75899
[REACTOS] Fix 64 bit build ( #465 )
...
* [HAL] Simplify HalpReboot() and make it portable
* [NTOS:MM] Cast constant to PVOID
* [BINPATCH] Fix 64 bit build
* [VFDDRV] Fix 64 bit build and buffer overruns
* [USBOHCI] Fix structure alignment issues
* [ATL_APITEST] Fix 64 bit build
* [XDK] Update unwind structures in winnt.h
* [NTDLL_APITEST] Fix 64 bit build
* [NTDLL_WINETEST] Fix 64 bit build
* [TFTPD] Fix x64 build
* [USBPORT] Fix a C_ASSERT
* [DSOUND] Fix x64 build
* [HAL] Remove obsolete GetPteAddress() macro
2018-04-03 15:13:17 -06:00
Colin Finck
c2c66aff7d
Git conversion: Make reactos the root directory, move rosapps, rostests, wallpapers into modules, and delete rossubsys.
2017-10-03 07:45:34 +00:00