Skip to content

Commit

Permalink
[3.13] gh-124609: Fix _Py_ThreadId for Windows builds using MinGW (GH…
Browse files Browse the repository at this point in the history
…-124663) (#124698)

gh-124609: Fix _Py_ThreadId for Windows builds using MinGW (GH-124663)
(cherry picked from commit 0881e2d)

Co-authored-by: Tony Roberts <tony@pyxll.com>
  • Loading branch information
miss-islington and tonyroberts authored Sep 27, 2024
1 parent cf98f39 commit 4618c0e
Show file tree
Hide file tree
Showing 4 changed files with 12 additions and 0 deletions.
4 changes: 4 additions & 0 deletions Include/Python.h
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
6 changes: 6 additions & 0 deletions Include/object.h
Original file line number Diff line number Diff line change
Expand Up @@ -247,6 +247,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__)
Expand Down
1 change: 1 addition & 0 deletions Misc/ACKS
Original file line number Diff line number Diff line change
Expand Up @@ -1550,6 +1550,7 @@ Lisa Roach
Carl Robben
Ben Roberts
Mark Roberts
Tony Roberts
Andy Robinson
Jim Robinson
Yolanda Robla
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Fix ``_Py_ThreadId`` for Windows builds using MinGW. Patch by Tony Roberts.

0 comments on commit 4618c0e

Please sign in to comment.