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
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 &
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
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 +-
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
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
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
- 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é
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 +
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
10 matches
Mail list logo