Closed
Description
Bug report
Bug description:
#include <Python.h>
When built on a MIPS architecture, _MIPS_SIM
is used to determine architecture specifics. The value is expected to match either _ABIO32
, _ABIN32
or _ABI64
.
In gcc
config/mips/mips.h these values are defined as compiler builtin_define
inside of a switch/case. That means, mips64el and mips64 architectures know about _ABI64
but don't know about _ABIO32
and _ABIN32
. In turn, when CPython tries to use them in comparison, they may be undefined identifiers.
In default compiler behavior, the undefined identifier will be evaluated as zero, and it will not match _MIPS_SIM
. However, the issues pop up when -Wundef
(or, even worse, -Werror=undef
) compiler flag is enabled. Then suddenly it's visible as a warning or error:
In file included from /usr/include/python3.13/Python.h:14,
from example.c:1:
/usr/include/python3.13/pyconfig.h:59:20: error: "_ABIO32" is not defined, evaluates to 0 [-Werror=undef]
59 | # if _MIPS_SIM == _ABIO32
| ^~~~~~~
/usr/include/python3.13/pyconfig.h:61:22: error: "_ABIN32" is not defined, evaluates to 0 [-Werror=undef]
61 | # elif _MIPS_SIM == _ABIN32
| ^~~~~~~
CPython versions tested on:
3.13
Operating systems tested on:
Linux
Linked PRs
Metadata
Metadata
Assignees
Projects
Status
Done