Skip to content

Commit 4618c0e

Browse files
[3.13] gh-124609: Fix _Py_ThreadId for Windows builds using MinGW (GH-124663) (#124698)
gh-124609: Fix _Py_ThreadId for Windows builds using MinGW (GH-124663) (cherry picked from commit 0881e2d) Co-authored-by: Tony Roberts <[email protected]>
1 parent cf98f39 commit 4618c0e

File tree

4 files changed

+12
-0
lines changed

4 files changed

+12
-0
lines changed

Include/Python.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,10 @@
5555
# include <intrin.h> // __readgsqword()
5656
#endif
5757

58+
#if defined(Py_GIL_DISABLED) && defined(__MINGW32__)
59+
# include <intrin.h> // __readgsqword()
60+
#endif
61+
5862
// Include Python header files
5963
#include "pyport.h"
6064
#include "pymacro.h"

Include/object.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,12 @@ _Py_ThreadId(void)
247247
tid = __readfsdword(24);
248248
#elif defined(_MSC_VER) && defined(_M_ARM64)
249249
tid = __getReg(18);
250+
#elif defined(__MINGW32__) && defined(_M_X64)
251+
tid = __readgsqword(48);
252+
#elif defined(__MINGW32__) && defined(_M_IX86)
253+
tid = __readfsdword(24);
254+
#elif defined(__MINGW32__) && defined(_M_ARM64)
255+
tid = __getReg(18);
250256
#elif defined(__i386__)
251257
__asm__("movl %%gs:0, %0" : "=r" (tid)); // 32-bit always uses GS
252258
#elif defined(__MACH__) && defined(__x86_64__)

Misc/ACKS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1550,6 +1550,7 @@ Lisa Roach
15501550
Carl Robben
15511551
Ben Roberts
15521552
Mark Roberts
1553+
Tony Roberts
15531554
Andy Robinson
15541555
Jim Robinson
15551556
Yolanda Robla
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Fix ``_Py_ThreadId`` for Windows builds using MinGW. Patch by Tony Roberts.

0 commit comments

Comments
 (0)