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
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 12 additions and 0 deletions

View File

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

View File

@ -180,6 +180,12 @@ _Py_ThreadId(void)
tid = __readfsdword(24);
#elif defined(_MSC_VER) && defined(_M_ARM64)
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__)
__asm__("movl %%gs:0, %0" : "=r" (tid)); // 32-bit always uses GS
#elif defined(__MACH__) && defined(__x86_64__)

View File

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

View File

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