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
f1ed97d6cc
[NTOS:KE/x64] Implement KiSetTrapContext
...
KiSetTrapContext is an asm wrapper around RtlSetUnwindContext, which first stores an exception frame to assure that all non-volatile registers were put on the stack, then calls RtlSetUnwindContext to update their first saving positions on the stack and finally restore the exception frame to potentially load any updated registers, that haven't been saved elsewhere on the stack.
2021-06-02 18:25:36 +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
Timo Kreuzer
90a0e426ed
[NTOS:KE] Add IRQL checks and fix KiInitiateUserApc
2021-05-28 11:52:42 +02:00
Timo Kreuzer
42e1fefcc6
[ASM] Clear interrupt flag in ExitTrap before returning
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
5f94b23d2b
[HOST-TOOLS] Configure environment for MSVC cross-compiling
...
This makes ARM builds on a non-arm host work again.
CORE-17542
CORE-17517
2021-05-24 17:34:49 +02:00
Mark Jansen
a555892027
[SDK] Remove duplicate definition
2021-05-24 17:34:49 +02:00
Mark Jansen
0911e8f457
[CMAKE] Add some arm/arm64 specific paths
...
CORE-17517 CORE-17518
2021-05-24 17:34:28 +02:00
Eric Kohl
894cc4ac0c
[dnsapi][dnsrslvr] Implement DnsFlushResolverCacheEntry_A/_UTF8/_W
2021-05-24 14:43:30 +02:00
Mark Jansen
18e95f5a4e
[CMAKE] Store and re-use M4 and BISON_PKGDATADIR env variables
...
ROSBE-174
2021-05-22 16:38:17 +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
8d1e01be0e
[NLS] Use files provided by Microsoft to generate most of our NLS files
...
Instead of binary blobs coming from who-knows-where
CORE-17571
2021-05-19 22:50:29 +02:00
Jérôme Gardou
79b2d9c2ff
[TXT2NLS] Rewrite the tool
...
With support for multibyte codepages & glyph tables
CORE-17571
2021-05-19 22:50:29 +02:00
Jérôme Gardou
1549f0837f
[SDK] Turn txt2nls into a host tool
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
53a6c44f74
[NTDLL_APITEST] Add some tests for RtlUnicodeStringToCountedOemString
...
CORE-17571
2021-05-19 22:50:29 +02:00
Dmitry Borisov
999345a4fe
[XDK] Update the prototype of IO_COMPLETION_ROUTINE
2021-05-19 20:14: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
Jérôme Gardou
3adf450867
[REACTOS] Addendum to 5c7ce4475e
- Fix MSVC 2015 build
...
Put data into PAGEDATA or INITDATA sections
Keep section declaration for prototypes
CORE-17540
2021-05-12 11:04:29 +02:00
Dmitry Borisov
6e33c8ffd3
[PEFIXUP] Fixup of resource sections in GCC builds. ( #3594 )
...
Make resource sections discardable for kernel-mode drivers and DLLs.
2021-05-10 00:36:38 +02:00
George Bișoc
0fe7fdbdea
[NDK][NTOS:SE] Fix the member offsets in TOKEN, again...
...
The member offsets in comments were wrong again, whoops....
2021-05-09 18:17:53 +02:00
George Bișoc
f5dc1c77b5
[NDK][NTOS:SE] Add the missing "LogonSession" member to TOKEN structure
...
And also fix the wrong member offsets in comments. The said offset values are based upon the ones retrieved with WinDBG.
2021-05-09 17:34:02 +02:00
Hermès Bélusca-Maïto
9e0a3cdf6c
[PEFIXUP] Add support for overriding the attributes of specific PE sections. ( #3598 )
...
Use a syntax identical to the one from the EDITBIN tool:
--section:name[=newname][,[[!]{CDEIKOMPRSUW}][A{1248PTSX}]]
https://docs.microsoft.com/en-us/cpp/build/reference/section-editbin?view=msvc-160
2021-05-09 01:39:21 +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
Katayama Hirofumi MZ
941dfd2dee
[INCLUDE][XDK] Add FILE_ATTRIBUTE_VIRTUAL macro into winnt_old.h ( #3649 )
...
PR #3642 needs it. CORE-17443
2021-05-08 21:08:34 +09:00
Serge Gautherie
2b52f3bb56
[SDK] wine/typeof.h: Remove duplicate ImeGetRegisterWordStyle line
...
Fix msbuild amd64
'...\sdk\include\reactos\wine/typeof.h(50,64): error C2059: syntax error: '<parameter-list>' [D:\a\reactos\reactos\build\dll\win32\msxml3\msxml3.vcxproj]'
Addendum to 32072cf
(r42469).
2021-05-06 22:09:03 +03:00
Hermès Bélusca-Maïto
eb29a33169
[PEFIXUP] Section names are case-sensitive, so we can just use strncmp() instead of the non-standard strncasecmp() for names comparisons. ( #3598 )
2021-05-05 19:15:02 +02:00
Hermès Bélusca-Maïto
ea26767353
[PEFIXUP] Avoid multi-level nesting of code with the error handling done at the very end. Use size_t variables for file sizes. ( #3598 )
2021-05-05 19:15:01 +02:00
Hermès Bélusca-Maïto
88b933330d
[PEFIXUP] Only recalculate the PE checksum if the image is not from a reproducible build (original checksum == 0). ( #3598 )
2021-05-05 19:15:01 +02:00
Hermès Bélusca-Maïto
7ad33940c2
[PEFIXUP] Use vfprintf() with the va_args list. ( #3598 )
2021-05-05 19:14:57 +02:00
Hermès Bélusca-Maïto
db089c517e
[PSDK] Remove a buggy GNU-specific "PACKED" attribute in KEY_EVENT_RECORD structure declaration. ( #3619 )
...
CORE-17545
No other public header out there (in MS PSDK, MinGW, Wine, etc...) does have
this hack (that was introduced back in the days in r15141 / commit 01df92bc
).
Add static assert on KEY_EVENT_RECORD's uChar member to ensure it's properly aligned.
May fix Clang warning:
win32ss/user/winsrv/consrv/lineinput.c:457:62: warning: taking address of packed member 'uChar' of class or structure '_KEY_EVENT_RECORD' may result in an unaligned pointer value [-Waddress-of-packed-member]
LineInputEdit(Console, (Overstrike ? 1 : 0), 1, &KeyEvent->uChar.UnicodeChar);
^~~~~~~~~~~~~~~~~~~~~~~~~~~
and whatnot...
2021-05-05 17:24:12 +02:00
Jérôme Gardou
f421bccbcc
[NTOS:MM] First shot for Working Set list support
...
- Initialize
- Add private page (no shared page support yet)
- Remove pages
- Trim
Yes, this is C++ in the kernel.
2021-05-04 12:02:41 +02:00
Jérôme Gardou
5466fc13a3
[NDK] Make kefuncs.h C++ aware
2021-05-04 12:02:41 +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
aa51bcfbcb
[CMAKE] Do not use a flag which clang doesn't know
2021-05-03 22:00:57 +02:00
Jérôme Gardou
523912536e
[KERNEL32] Sync NLS RC files with wine 6.7
...
Mostly for having them UTF-8 encoded
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
8aea84dab7
[CRT] Do not define builtin functions if not needed
2021-05-03 22:00:57 +02:00
Jérôme Gardou
7197620b89
[CMAKE] Always use cl to build host tools
2021-05-03 22:00:57 +02:00
Jérôme Gardou
061c7ecb1a
[FRAMEDYN] Fix the whole situation with regards to wchar_t
...
Alias CHSTRING_WCHAR to unsigned short and use inline wrappers
to be able to use the thing with modern compilers
Put the GCC aliases into the public header.
Enable build with clang-cl
2021-05-03 22:00:57 +02:00
Jérôme Gardou
a8255233f8
[SPEC2DEF] Fix imports of C++ stdcall exports
...
Too much mangling mangles it too much
2021-05-03 22:00:57 +02:00
Jérôme Gardou
ec68a3311f
[CMAKE] Use SEH exceptions for c++ in clang amd64 build
2021-05-03 22:00:57 +02:00
Jérôme Gardou
976c4c10aa
[CRT] Fix SEH macros for clang x64
2021-05-03 22:00:57 +02:00
Jérôme Gardou
b52ab2493b
Revert "[CMAKE] Disable SSE instruction on GCC amd64 builds"
...
The right fix is to ensure that the stack is properly 16-bit aligned
This reverts commit 63944988a2
.
2021-05-03 22:00:57 +02:00
George Bișoc
11a60cebea
[NTOS:PS] Add some data structures
...
These are needed for API tests. The following structures are taken from Process Hacker.
2021-05-02 21:03:09 +02:00
Serge Gautherie
f1689cdcea
[PSDK] UnlockResource(): Improve definition
...
Sync' with
a9e50da352
2021-05-01 09:48:02 +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
2413530acf
[SDK] Use GAS SEH capabilities instead of CFI
...
Also remove a hack for x86 GAS which no longer holds
2021-04-28 13:10:23 +02:00
Jérôme Gardou
63944988a2
[CMAKE] Disable SSE instruction on GCC amd64 builds
...
Except for user-mode modules
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
37bc01f42b
[CMAKE] Introduce a GCC plugin for helping with amd64 SEH implementation
...
\#pragma REACTOS SEH(except)
\#pragma REACTOS SEH(finally)
What it does is counting the number of SEH __try blocks and emit the proper assembly statements at function prologue
It also checks for mixing C++ & SEH exception handling, which wouldn't work
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
Jérôme Gardou
96a2b18903
[PSEH] Make the dummy PSEH at least usable.
...
Not screwing the code flow when no exception happens would be the least
2021-04-28 13:10:23 +02:00
Jérôme Gardou
955b5c27b1
[CRT] Fix __ll_lshift, __ll_rshift and __ull_rshift intrinsics on gcc-amd64
2021-04-28 13:10:23 +02:00
Jérôme Gardou
97a8953538
[CMAKE:GCC] Enforce file alignment on driver & kernel images
2021-04-28 13:10:23 +02:00
Jérôme Gardou
382426f02e
[NDK] Add some missing defines for EFLAGS on amd64
2021-04-28 13:10:23 +02:00
Jérôme Gardou
7513cc9fca
[PSDK] Do not compare to max value if we can make sure that the value fits in target type
...
This fixes clang warning -Wtautological-constant-out-of-range-compare
2021-04-28 13:10:23 +02:00
Jérôme Gardou
a4138329a1
[CRT] Add macros to disable diagnostics from GCC and clang
...
Instead of disabling them globally, this will help making finer grained decisions
2021-04-28 13:10:23 +02:00
Jérôme Gardou
1d1a21a920
[SDK] Make sure we build pefixup with AMD64 definitions
2021-04-28 13:10:23 +02:00
Jérôme Gardou
b513c61cd1
[SDK] Fix definition of IMAGE_NT_HEADERS64 in host tools
2021-04-28 13:10:23 +02:00
George Bișoc
44fb528fcc
[NTOS:SE] Implement the NtImpersonateAnonymousToken system call
...
Implement SepImpersonateAnonymousToken private helpers, which is necessary for the complete implementation of NtImpersonateAnonymousToken function and thus finally we're able to impersonate the anonymous logon token.
2021-04-27 12:25:03 +02:00
Jérôme Gardou
9ef5a7eb7a
[CMAKE] Fix compilation with newer windres versions
...
Also use clang as preprocessor when using it
Also, use *our* headers instead of the platform ones
2021-04-27 11:54:12 +02:00
Jérôme Gardou
ba9a7decba
[PSDK] Import winuser.rh from wine 6.7
2021-04-27 11:54:12 +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
Serge Gautherie
b6493654a3
[CRT] intrin_x86.h: Fix '_InterlockedIncrement64' copypasta
...
Addendum to bc3a471
.
2021-04-27 10:36:54 +03:00
Serge Gautherie
c41007624f
[CMAKE] config.cmake: Fix 'STEQUAL' typo, in a comment
...
Addendum to e90b6bb
.
2021-04-27 10:36:54 +03:00
Konrad Dybcio
d5421d5a3d
[HHPCOMP] Add ARM64/AArch64 types
...
These were missing... not anymore!
Addendum to 4c7b71ac
. CORE-17518
Signed-off-by: Konrad Dybcio <konrad.dybcio@somainline.org>
2021-04-25 21:08:17 +03:00
Katayama Hirofumi MZ
66f6abfc4a
[SDK][INCLUDE] Fix offsetof and CCSIZEOF_STRUCT for Clang-CL build ( #3624 )
...
Clang-CL was failing with "error: function declaration cannot have variably modified type". This PR will fix the Clang-CL build. CORE-17547
2021-04-25 13:38:22 +09:00
Serge Gautherie
0dedb9b474
[WINLOGON][MPR][SDK] WNetClearConnections: Fix function parameter type ( #3480 )
...
Addendum to 62f79fae93
.
Signed-off-by: Serge Gautherie <reactos-git_serge_171003@gautherie.fr>
2021-04-18 21:58:44 +03:00
Victor Perevertkin
d10728a645
[CMAKE] Rely less on CMAKE_BUILD_TYPE variable
...
Having conditional statements with CMAKE_BUILD_TYPE is an antipattern
See https://stackoverflow.com/questions/66079007/having-conditional-statements-on-build-type-variable-a-good-design
We use both single- and multi-config generators (Ninja and VS), so we
can't really rely on CMAKE_BUILD_TYPE, because it's not always set.
This commit alters some conditional flags to use <$CONFIG:...>
generator expression, but is still not complete. Also, our default
optimization level (4) now has what was always a de-facto flags
2021-04-15 06:44:56 +03:00
Victor Perevertkin
72ad37c1cd
[CMAKE] Unify configs for architectures
...
config*.cmake files are constantly getting out of sync between
each other. Besides that, the parameters are not really dependent
on a target architecture, but rather on a compiler (except *ARCH)
This approach seems to be more future-prone, and allows to see
all the options in one file (there are really not that many of them)
2021-04-15 06:44:52 +03:00
Serge Gautherie
8ddbfdeb57
[BOOTDATA][CMAKE] Sort 2 directories out
...
winsxs\x86_reactos.newapi_6595b64144ccf1df_1.0.0.0_none_deadbeef:
removed: silently added on 8d30456
and never used.
bin\suppl:
moved: to 60 from 80.
2021-04-12 17:40:18 +02: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
Jérôme Gardou
76a241dea6
[CMAKE] Also set GCC/CLANG variables on amd64 builds
2021-04-09 12:35:30 +02:00
Jérôme Gardou
bc3a471413
[CRT] Do not try to implement x86_64 builtins of clang
2021-04-09 10:33:05 +02:00