Bug report
Bug description:
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
Bug report
Bug description:
When built on a MIPS architecture,
_MIPS_SIMis used to determine architecture specifics. The value is expected to match either_ABIO32,_ABIN32or_ABI64.In
gccconfig/mips/mips.h these values are defined as compilerbuiltin_defineinside of a switch/case. That means, mips64el and mips64 architectures know about_ABI64but don't know about_ABIO32and_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:CPython versions tested on:
3.13
Operating systems tested on:
Linux
Linked PRs