Timo Kreuzer
3cf2bea0de
[RTL] Fix RtlWalkFrameChain and wrap it in SEH
2021-06-05 13:52:42 +02:00
Timo Kreuzer
e6af7d9dfe
[RTL] Simplify RtlRaiseException
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
65c3911ffc
[RTL] Improve / fix the SList code
...
Don't push a register in the middle of a an asm function. Instead add a proper prolog and store rbx in a home param slot.
2021-06-05 13:52:42 +02:00
Timo Kreuzer
0520c75aaf
[CRT] Implement __C_specific_handler
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
Stanislav Motylkov
11687e9e43
[CRT][ARM] Fix uninitialized variables caught by RTC
...
CORE-17613
2021-06-02 13:18:40 +03:00
Timo Kreuzer
0c3812eb7e
[RTL/x64] Implement RtlRestoreContext
2021-05-29 21:20:48 +02:00
Timo Kreuzer
abb338b13d
[RTL/x64] Improve RtlCaptureContext
...
Use movaps instead of movdqa, it does the same thing, but is one byte shorter.
Shuffle instructions around a bit to maximize parallel execution.
2021-05-29 21:20:48 +02:00
Timo Kreuzer
3831c0ca31
[RTL/x64] Improve RtlInitializeContext
2021-05-29 21:20:48 +02:00
Timo Kreuzer
db0c59cbd4
[CRT] Use the asm version of sqrt on amd64
2021-05-28 11:52:42 +02:00
Hermès Bélusca-Maïto
7c3aabc088
[CONUTILS] Implement ConSetThreadUILanguage() as a wrapper for kernel32!SetThreadUILanguage().
...
CORE-17601
Dynamically load SetThreadUILanguage(), so as to support systems where this API is not present.
Hopefully implemented in a thread-safe manner.
2021-05-26 01:42:10 +02:00
Hermès Bélusca-Maïto
35f499e52f
[CONUTILS][CMD] Add and use a helper ConStdStreamsSetCacheCodePage() macro instead of repeatedly calling ConStreamSetCacheCodePage() on the standard streams.
2021-05-26 01:42:09 +02:00
Hermès Bélusca-Maïto
f268430c05
[CONUTILS] Update some documentation.
2021-05-26 01:42:09 +02:00
Hervé Poussineau
1a1dac04c7
[SMLIB] Implement SmStartCsr and SmStopCsr
2021-05-25 19:02:16 +02:00
Mark Jansen
b58c3d73ca
[RTL][KERNEL32] Move the STUB printing code to a place where it's actually called
2021-05-22 16:33:19 +02:00
Jérôme Gardou
a3629ab08b
[RTL] SAL-annotate RtlUnicodeStringToCountedOemString
...
Brought to you by Hermès
2021-05-19 22:50:29 +02:00
Jérôme Gardou
30f2ad7949
[RTL] Properly truncate 8dot3 names when using a MultiByte OEM code page
...
CORE-17571
2021-05-19 22:50:29 +02:00
Jérôme Gardou
49fcbe7cd8
[RTL] Fix RtlIsValidOemCharacter implementation for Multibyte code pages
...
CORE-17571
2021-05-19 22:50:29 +02:00
Jérôme Gardou
1b08836338
[RTL] Properly implement RtlUnicodeToOemN
...
CORE-17571
2021-05-19 22:50:29 +02:00
Jérôme Gardou
0f723105c6
[CMAKE] Allow compiling amd64 port with GCC on Windows
...
Dedicated to Daniel
2021-05-19 14:13:51 +02:00
Mark Jansen
264aaa9e05
[RTL] Implement RtlGetLengthWithoutLastFullDorOrNtPathElement
...
CORE-17248
2021-05-08 19:24:23 +02:00
Mark Jansen
3e7e4ee360
[RTL] Implement RtlpApplyLengthFunction
...
CORE-17248
2021-05-08 19:24:23 +02:00
Jérôme Gardou
d312ef234b
[PSEH] Fix use of dummy implementation in C++
2021-05-03 22:00:57 +02:00
Jérôme Gardou
07dcec0325
[PSEH] Use dummy PSEH for clang(-cl) amd64 build
2021-05-03 22:00:57 +02:00
Jérôme Gardou
802665a4ac
[CRT] Also use alias _rot functions for clang-cl amd64 build
2021-05-03 22:00:57 +02:00
Jérôme Gardou
439aefb31d
[CRT] Sync tlssup.c with mingw-w64
...
This allows amd64 built binary to be loaded.
2021-04-28 13:10:23 +02:00
Jérôme Gardou
fe3278d4d6
[CRT] We never use the mthread library
2021-04-28 13:10:23 +02:00
Jérôme Gardou
ba74a05a17
[PSEH] Add implementation for GCC amd64
...
Also, put include directory next to the library and use
target_include_directories(.. INTERFACE ..) to get this right.
This is because :
- Having includes & implementation in two different places buggers me
- This makes sure that there is no "if it compiles everything is fine" behaviour from anyone
because now even static libraries need it for GCC amd64 build
Also add __USE_PSEH2__ define for the non SEH-aware compilers out there and use it in a few headers
where we define macros involving __try
2021-04-28 13:10:23 +02:00
Jérôme Gardou
d31856cda1
[CRT] Do not include unneeded PSEH header
2021-04-28 13:10:23 +02:00
Jérôme Gardou
e470b58376
[REACTOS] Explicitly link against pseh & include pseh headers in a few places
2021-04-28 13:10:23 +02:00
Jérôme Gardou
8abcd18742
[RTL] Use addressing relative to rip
2021-04-28 13:10:23 +02:00
Serge Gautherie
b8ae966634
[CRT] exp2*.c: Add an explicit type for 'TWO' variable
...
Addendum to 199adee
.
2021-04-27 10:36:54 +03:00
Jérôme Gardou
3731fd1661
[CRT] Properly declare rot functions in public headers
2021-04-09 15:12:13 +02:00
Jérôme Gardou
620f333252
[CRT] Fix rot functions aliases in non-x86 clang builds
2021-04-09 15:00:07 +02:00
Jérôme Gardou
199adee3fe
[CRT] Add a generic C version of exp2(f) and use it for all architecture
2021-04-09 14:59:07 +02:00
Jérôme Gardou
a19ca409ae
[PSEH] Each amd64 compiler that we use support SEH
2021-04-09 12:36:04 +02:00
Victor Perevertkin
74ec94e12c
[CMAKE] Some options are only supported by GCC, don't use them for clang
...
These are (so far):
-Wno-format-overflow
-Wno-nonnull-compare
-Wno-old-style-declaration
-Wno-unused-but-set-variable
2021-04-09 03:58:19 +03:00
Jérôme Gardou
3a14c97d0c
[LIBCNTPR] Fix a typo
...
There is no console to display to.
2021-03-25 11:54:49 +01:00
Serge Gautherie
49639c7759
[ATL] CWindowImplBaseT::WindowProc(): Narrow 2 ATLASSERT() down ( #3529 )
...
Addendum to e076e05
. CORE-17505
2021-03-25 19:51:29 +09:00
Jérôme Gardou
162f51e6b8
[OLDNAMES] Add missing isascii
2021-03-17 18:52:58 +01:00
Jérôme Gardou
7e5c1872ee
[RTL] Improve performance by introducing a hint array for free entries
...
The array is there for the entries smaller than the decommit threshold, the rationale
being that entries which are larger will likely be split for honoring other allocations
or be coalesced and eventually decommitted.
This with the previous commits make a huge perf boost to memory-intensive applications like cmake
CORE-15793
2021-03-16 13:23:21 +01:00
Jérôme Gardou
325737f855
[SDK:RTL] Track the end of uncommitted ranges thanks to a "Guard" entry that we put at the end of each committed page
...
This avoids busy loop to get the last valid entry of the previous committed range when committing a new one.
CORE-15793
2021-03-16 13:23:21 +01:00
Katayama Hirofumi MZ
e076e0576f
[ATL] Add NULL-check in CWindowImplBaseT::WindowProc assertions
...
CORE-17505
2021-03-11 21:20:40 +09:00
Katayama Hirofumi MZ
9259ded8ae
[ATL][SHELL32][EXPLORER] Disable ATLASSERT ( #3527 )
...
We are not ready for enabling ATLASSERT. Enabling ATL assertions takes time to realize. CORE-17505
- Disable ATLASSERT by undefining _DEBUG.
- Revert currently non-fixable codes.
2021-03-11 20:26:45 +09:00
Katayama Hirofumi MZ
4f83032a12
[ATL] Split CWindowImplBaseT::WindowProc asserion
...
CORE-9281
2021-03-11 17:18:43 +09:00
Serge Gautherie
0975c5ef40
[ATL] CMakeLists.txt: Use a bare endif() ( #3523 )
...
Addendum to 98203ce
.
2021-03-11 08:38:04 +09:00
Victor Perevertkin
df35c8d05e
[SDK:KMDF] Populate OsVersionInfo in our static linking hack
2021-03-10 18:41:46 +03:00