[Mingw-w64-public] [PATCH v4 5/9] winpthreads: Don't use GCC __sync_synchronize

2024-01-26 Thread Antonin Décimo
The __sync_synchronize built-in function [1] is deprecated, and not defined with MSVC. Prefer MemoryBarrier [2] and _ReadWriteBarrier [3]. [1]: https://gcc.gnu.org/onlinedocs/gcc/_005f_005fsync-Builtins.html#index-_005f_005fsync_005fsynchronize [2]: https://learn.microsoft.com/en-us/windows/win3

[Mingw-w64-public] [PATCH v4 9/9] winpthreads: Move __declspec specifiers before types

2024-01-26 Thread Antonin Décimo
Microsoft documentation states that MSVC doesn't support __declspec after the pointer star for a return type. Move all the specifiers before return types for consistency. // Recommended, selectany & int both part of decl-specifier __declspec(selectany) int * pi1 = 0; // OK, selectany &

[Mingw-w64-public] [PATCH v4 7/9] winpthreads: Simplify placing a symbol in a section

2024-01-26 Thread Antonin Décimo
It is sufficient to specify the section on the symbol declaration. Signed-off-by: Antonin Décimo --- mingw-w64-libraries/winpthreads/src/thread.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mingw-w64-libraries/winpthreads/src/thread.c b/mingw-w64-libraries/winpthrea

[Mingw-w64-public] [PATCH v4 8/9] winpthreads: Use GetModuleHandleA to prevent Unicode errors

2024-01-26 Thread Antonin Décimo
The non-suffixed macro GetModuleHandle depends on whether the file is being compiled in Unicode mode or not. Prefer using the char string literal here, for compatibility with old Windows not supporting Unicode. Signed-off-by: Antonin Décimo --- mingw-w64-libraries/winpthreads/src/misc.c | 2 +-

[Mingw-w64-public] [PATCH v4 6/9] winpthreads: Unify discovery of recent WinAPI functions

2024-01-26 Thread Antonin Décimo
Some WinAPI functions were introduced in recent versions of Windows. We could detect whether to use the newer functions based on the _WIN32_WINNT define. However, the issue is that _WIN32_WINNT defaults to Win10 these days, so a default build of a toolchain won't work for older targets, which is wh

[Mingw-w64-public] [PATCH v4 4/9] winpthreads: Replace GCC's __sync comparisons with WinAPI functions

2024-01-26 Thread Antonin Décimo
Legacy `__sync_*` GCC built-in functions for memory access [1] are deprecated and MSVC doesn't provide them. Consequently, use Windows' Interlocked Variable Access [2] functions instead. [1]: https://gcc.gnu.org/onlinedocs/gcc/_005f_005fsync-Builtins.html [2]: https://learn.microsoft.com/en-us/wi

[Mingw-w64-public] [PATCH v4 0/9] winpthreads: MSVC support without GCC extensions

2024-01-26 Thread Antonin Décimo
Hello all, At the risk of flooding a bit the list, I'm submitting the v4 of this patch series. This patch series enables building winpthreads with MSVC. The missing steps were about removing uses of GCC extensions, in favor of using functions already provided by windows.h. MinGW also provides the

[Mingw-w64-public] [PATCH v4 2/9] winpthreads: Fix pthread_create_wrapper type

2024-01-26 Thread Antonin Décimo
- Make pthread_create_wrapper return an unsigned; _beginthreadindex takes a function returning an unsigned. The variable holding the return value of pthread_create_wrapper is already an unsigned. - Make pthread_create_wrapper __stdcall. Co-authored-by: Samuel Hym Signed-off-by: Antonin Dé

[Mingw-w64-public] [PATCH v4 3/9] winpthreads: Use YieldProcessor in pthread_spin_lock

2024-01-26 Thread Antonin Décimo
Use YieldProcessor which already has the best definition for all MSVC and MinGW supported architectures of the memory pause / yield instruction. Signed-off-by: Antonin Décimo --- mingw-w64-libraries/winpthreads/src/misc.h | 8 mingw-w64-libraries/winpthreads/src/spinlock.c | 8 +

[Mingw-w64-public] [PATCH v4 1/9] winpthreads: Check if requested stack size fits in an unsigned int

2024-01-26 Thread Antonin Décimo
The requested stack size is a `size_t`, whereas _beginthreadex takes an `unsigned int`. This provides a bit of input sanitation, and prevents a compiler warning. Co-authored-by: Samuel Hym Signed-off-by: Antonin Décimo --- mingw-w64-libraries/winpthreads/src/thread.c | 7 +-- 1 file changed