Timo Kreuzer
4ea1841f31
[UCRT:LOCALE] Implement __acrt_GetStringTypeW
2025-01-26 18:08:55 +02:00
Timo Kreuzer
f07ea94798
[UCRT] Fix build of memcpy_s.cpp
...
extern inline creates a global symbol on MSVC, but not on GCC. Use extern instead.
2025-01-22 18:56:08 +02:00
Timo Kreuzer
fea0f9243d
[UCRT] Remove __inline from conversion functions
...
Otherwise no actual symbols will be created.
2025-01-22 18:56:08 +02:00
Timo Kreuzer
61175644d0
[UCRT] Add architecturally optimized code to build
2025-01-22 18:56:08 +02:00
Timo Kreuzer
94eb475177
[UCRT][ASM] Make asm code GCC compatible
2025-01-22 18:56:08 +02:00
Timo Kreuzer
4fec953e6e
[UCRT][ASM] Rename all .asm files to .s
2025-01-22 18:56:08 +02:00
Timo Kreuzer
72aed01dbd
[ASM] Fix up some x86 assembly code
2025-01-22 18:56:08 +02:00
Timo Kreuzer
e2ffc35894
[UCRT] Fix/improve __crt_state_management
2025-01-22 18:56:08 +02:00
Timo Kreuzer
c2b1271dbe
[UCRT] Improve __crt_seh_guarded_call
...
This is a workaround for an MSVC compiler bug, which would result in degraded performance. See https://developercommunity.visualstudio.com/t/_local_unwind-generated-when-returning-f/10673261 ?
2025-01-22 18:56:08 +02:00
Timo Kreuzer
a58b713a5e
[UCRT] Properly implement __crt_fast_encode/decode_pointer
2025-01-22 18:56:08 +02:00
Timo Kreuzer
c1145f0c89
[UCRT] Properly implement parameter checking macros
...
Partly copied from corecrt_internal_strtox.h, partly imported from dotnet runtime (https://github.com/dotnet/runtime/blob/release/8.0/src/coreclr/pal/src/safecrt/internal.h )
2025-01-22 18:56:08 +02:00
Timo Kreuzer
7bb12665d6
[UCRT] Add CMake files
2025-01-16 14:18:53 +02:00
Timo Kreuzer
ef440b9aef
[UCRT] Add a hack for a clang bug
...
See CORE-19902
2025-01-16 14:18:53 +02:00
Timo Kreuzer
2eb3149565
[UCRT] Make includes unix compatible
2025-01-16 14:18:53 +02:00
Timo Kreuzer
90dad446b7
[UCRT] Fix GCC build of __crt_char_traits
...
This is a workaround for GCC. It will disable debugging for tdupenv_s_crt.
How it works on MSVC? Magic.
2025-01-16 14:18:53 +02:00
Timo Kreuzer
693f9f51a0
[UCRT] Hack some template code, so that retarded compilers can handle it
2025-01-16 14:18:53 +02:00
Timo Kreuzer
f9dc185ede
[UCRT] Use a C cast instead of const_cast for GCC
...
This is because GCC will generate errors for both const_cast and static_cast depending on the template parameter:
- With const_cast: error: invalid 'const_cast' from type 'std::nullptr_t' to type 'const wchar_t**'
- With static_cast: error: invalid 'static_cast' from type 'wchar_t** const' to type 'const wchar_t**'
2025-01-16 14:18:53 +02:00
Timo Kreuzer
47e3f49e52
[UCRT] No __declspec(spectre(nomitigation)) for GCC/Clang
2025-01-16 14:18:53 +02:00
Timo Kreuzer
97e20ef342
[UCRT] Fix GCC/Clang build of SSE2/AVX code
...
On GCC the code using extended ISA cannot be inlined and must either be marked with a function attribute or compiled with the proper target options ('-mavx2' on the command line or '#pragma GCC target("avx2")' inside the code)
2025-01-16 14:18:53 +02:00
Timo Kreuzer
e98e9000c7
[UCRT] Make SEH blocks ReactOS PSEH compatible
2025-01-16 14:18:53 +02:00
Timo Kreuzer
7bb9f6bf28
[UCRT] Fix GCC/Clang build of enum_system_locales_ex_nolock
...
Add static function for Clang.
Add missing __stdcall in a lambda for GCC.
MSVC does this automagically. See https://devblogs.microsoft.com/oldnewthing/20150220-00/?p=44623 .
2025-01-16 14:18:53 +02:00
Timo Kreuzer
2cc6699f0d
[UCRT] Silence warning about returning noreturn function
2025-01-16 14:18:53 +02:00
Timo Kreuzer
a21a206c89
[UCRT] Add workaround for va_arg warning about type promotion
2025-01-16 14:18:53 +02:00
Timo Kreuzer
faedd8ff75
[UCRT] Use GCC inline assembler
...
Clang requires the asm to be split, otherwise it complains that it doesn't have enough registers.
2025-01-16 14:18:53 +02:00
Timo Kreuzer
0cdde63c57
[UCRT] Add casts to make GCC happy
2025-01-16 14:18:53 +02:00
Timo Kreuzer
dbd58d7666
[UCRT] Fix GCC/Clang compilation of template specializations
2025-01-16 14:18:53 +02:00
Timo Kreuzer
c15b618a17
[UCRT] Add using declatarions for template base-classes (GCC compatibility)
2025-01-16 14:18:53 +02:00
Timo Kreuzer
5ba105e9b5
[UCRT] Add some missing typename for GCC compatibility
2025-01-16 14:18:53 +02:00
Timo Kreuzer
90fb8391fc
[UCRT] Fix shadowing template parameters
2025-01-16 14:18:53 +02:00
Timo Kreuzer
482f318a23
[UCRT] Fix template specialization
2025-01-16 14:18:53 +02:00
Timo Kreuzer
7a764cf610
[UCRT] Fix invalid storage type specification
2025-01-16 14:18:53 +02:00
Timo Kreuzer
4de4349109
[UCRT] Fix non-standard literal suffixes
2025-01-16 14:18:53 +02:00
Timo Kreuzer
ffd69754f9
[UCRT] Fix non-standard extern "C" usage
2025-01-16 14:18:53 +02:00
Timo Kreuzer
9ed5151de9
[UCRT] Fix benign typo ('\0' instead of nullptr)
2025-01-16 14:18:53 +02:00
Timo Kreuzer
f8e7a249ba
[UCRT] Fix a signed/unsigned comparison
2025-01-16 14:18:53 +02:00
Timo Kreuzer
2d753d95fb
[UCRT] Fix multiple missing dereferences
...
This is a bug in MS UCRT code. MSVC allows to check a pointer to be > 0, GCC emits a warning.
2025-01-16 14:18:53 +02:00
Timo Kreuzer
d622c4a7a0
[UCRT] Fix a typo/bug in __acrt_mbs_to_wcs_cp_array
2025-01-16 14:18:53 +02:00
Timo Kreuzer
48d8d198b2
[UCRT] Add missing line breaks at end of file
2025-01-16 14:18:53 +02:00
Timo Kreuzer
995e16d4d4
[UCRT] Add missing headers
...
These are minimal definitions, just enough to make things compile.
2025-01-16 14:18:53 +02:00
Timo Kreuzer
04e0dc4a7a
[UCRT] Import Microsoft.Windows.SDK.CRTSource version 10.0.22621.3
...
Imported from https://www.nuget.org/packages/Microsoft.Windows.SDK.CRTSource/10.0.22621.3
License: MIT
2025-01-16 14:18:53 +02:00