gh-124609: Fix _Py_ThreadId for Windows builds using MinGW (#124663)

This commit is contained in:
Tony Roberts
2024-09-27 19:52:23 +01:00
committed by GitHub
parent 2e155536ca
commit 0881e2d3b1
4 changed files with 12 additions and 0 deletions

View File

@@ -55,6 +55,10 @@
# include <intrin.h> // __readgsqword() # include <intrin.h> // __readgsqword()
#endif #endif
#if defined(Py_GIL_DISABLED) && defined(__MINGW32__)
# include <intrin.h> // __readgsqword()
#endif
// Include Python header files // Include Python header files
#include "pyport.h" #include "pyport.h"
#include "pymacro.h" #include "pymacro.h"

View File

@@ -180,6 +180,12 @@ _Py_ThreadId(void)
tid = __readfsdword(24); tid = __readfsdword(24);
#elif defined(_MSC_VER) && defined(_M_ARM64) #elif defined(_MSC_VER) && defined(_M_ARM64)
tid = __getReg(18); tid = __getReg(18);
#elif defined(__MINGW32__) && defined(_M_X64)
tid = __readgsqword(48);
#elif defined(__MINGW32__) && defined(_M_IX86)
tid = __readfsdword(24);
#elif defined(__MINGW32__) && defined(_M_ARM64)
tid = __getReg(18);
#elif defined(__i386__) #elif defined(__i386__)
__asm__("movl %%gs:0, %0" : "=r" (tid)); // 32-bit always uses GS __asm__("movl %%gs:0, %0" : "=r" (tid)); // 32-bit always uses GS
#elif defined(__MACH__) && defined(__x86_64__) #elif defined(__MACH__) && defined(__x86_64__)

View File

@@ -1552,6 +1552,7 @@ Lisa Roach
Carl Robben Carl Robben
Ben Roberts Ben Roberts
Mark Roberts Mark Roberts
Tony Roberts
Andy Robinson Andy Robinson
Izan "TizzySaurus" Robinson Izan "TizzySaurus" Robinson
Jim Robinson Jim Robinson

View File

@@ -0,0 +1 @@
Fix ``_Py_ThreadId`` for Windows builds using MinGW. Patch by Tony Roberts.