Source: python3.14
Version: 3.14.0-2
Severity: normal
Tags: patch upstream
User: [email protected]
Usertags: m68k
X-Debbugs-Cc: [email protected]

Hello,

the previously reported FTBFS regression with GCC 15 turned out to be a bug
in the m68k-specific assembler code in the Python interpretor, see [1].

The attached patch fixes the problem. I will send the patch upstream.

Adrian

> [1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=122211

--
 .''`.  John Paul Adrian Glaubitz
: :' :  Debian Developer
`. `'   Physicist
  `-    GPG: 62FF 8A75 84E0 2956 9546  0006 7426 3B37 F5B5 F913
Index: python3.14-3.14.0/Include/internal/pycore_pymath.h
===================================================================
--- python3.14-3.14.0.orig/Include/internal/pycore_pymath.h
+++ python3.14-3.14.0/Include/internal/pycore_pymath.h
@@ -146,17 +146,17 @@ extern void _Py_set_387controlword(unsig
     unsigned int old_fpcr, new_fpcr
 #define _Py_SET_53BIT_PRECISION_START                                   \
     do {                                                                \
-        __asm__ ("fmove.l %%fpcr,%0" : "=g" (old_fpcr));                \
+        __asm__ ("fmove.l %%fpcr,%0" : "=dm" (old_fpcr));               \
         /* Set double precision / round to nearest.  */                 \
         new_fpcr = (old_fpcr & ~0xf0) | 0x80;                           \
         if (new_fpcr != old_fpcr) {                                     \
-              __asm__ volatile ("fmove.l %0,%%fpcr" : : "g" (new_fpcr));\
+            __asm__ volatile ("fmove.l %0,%%fpcr" : : "dm" (new_fpcr)); \
         }                                                               \
     } while (0)
 #define _Py_SET_53BIT_PRECISION_END                                     \
     do {                                                                \
         if (new_fpcr != old_fpcr) {                                     \
-            __asm__ volatile ("fmove.l %0,%%fpcr" : : "g" (old_fpcr));  \
+            __asm__ volatile ("fmove.l %0,%%fpcr" : : "dm" (old_fpcr)); \
         }                                                               \
     } while (0)
 #endif
Index: python3.14-3.14.0/configure.ac
===================================================================
--- python3.14-3.14.0.orig/configure.ac
+++ python3.14-3.14.0/configure.ac
@@ -6074,8 +6074,8 @@ AS_VAR_IF([ac_cv_gcc_asm_for_x87], [yes]
 AC_CACHE_CHECK([whether we can use gcc inline assembler to get and set mc68881 
fpcr], [ac_cv_gcc_asm_for_mc68881], [
 AC_LINK_IFELSE(   [AC_LANG_PROGRAM([[]], [[
   unsigned int fpcr;
-  __asm__ __volatile__ ("fmove.l %%fpcr,%0" : "=g" (fpcr));
-  __asm__ __volatile__ ("fmove.l %0,%%fpcr" : : "g" (fpcr));
+  __asm__ __volatile__ ("fmove.l %%fpcr,%0" : "=dm" (fpcr));
+  __asm__ __volatile__ ("fmove.l %0,%%fpcr" : : "dm" (fpcr));
 ]])],[ac_cv_gcc_asm_for_mc68881=yes],[ac_cv_gcc_asm_for_mc68881=no])
 ])
 AS_VAR_IF([ac_cv_gcc_asm_for_mc68881], [yes], [

Reply via email to