Timo Kreuzer
9c887efa0e
[UCRT:VCRUNTIME] Add initializer sections
...
Use #pragma section only for MSVC (and Clang-cl), because Clang doesn't like allocating non-const variables in a read-only section, while GCC doesn't understand these pragmas and ignores them.
2025-01-26 18:08:55 +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
ef440b9aef
[UCRT] Add a hack for a clang bug
...
See CORE-19902
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
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
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
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
d622c4a7a0
[UCRT] Fix a typo/bug in __acrt_mbs_to_wcs_cp_array
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