mirror of
https://github.com/python/cpython.git
synced 2025-07-07 11:25:30 +00:00
gh-132026: Ensure _MIPS_SIM has defined _ABI identifiers for comparison (GH-132027)
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.
This commit is contained in:
parent
20be6ba61a
commit
6985e2e6de
2 changed files with 13 additions and 12 deletions
|
@ -0,0 +1 @@
|
|||
Fix use of undefined identifiers in platform triplet detection on MIPS Linux platforms.
|
|
@ -57,21 +57,21 @@ PLATFORM_TRIPLET=arm-linux-androideabi
|
|||
# endif
|
||||
# if defined(_MIPS_SIM)
|
||||
# if defined(__mips_hard_float)
|
||||
# if _MIPS_SIM == _ABIO32
|
||||
# if defined(_ABIO32) && _MIPS_SIM == _ABIO32
|
||||
# define LIBC_MIPS gnu
|
||||
# elif _MIPS_SIM == _ABIN32
|
||||
# elif defined(_ABIN32) && _MIPS_SIM == _ABIN32
|
||||
# define LIBC_MIPS gnuabin32
|
||||
# elif _MIPS_SIM == _ABI64
|
||||
# elif defined(_ABI64) && _MIPS_SIM == _ABI64
|
||||
# define LIBC_MIPS gnuabi64
|
||||
# else
|
||||
# error unknown mips sim value
|
||||
# endif
|
||||
# else
|
||||
# if _MIPS_SIM == _ABIO32
|
||||
# if defined(_ABIO32) && _MIPS_SIM == _ABIO32
|
||||
# define LIBC_MIPS gnusf
|
||||
# elif _MIPS_SIM == _ABIN32
|
||||
# elif defined(_ABIN32) && _MIPS_SIM == _ABIN32
|
||||
# define LIBC_MIPS gnuabin32sf
|
||||
# elif _MIPS_SIM == _ABI64
|
||||
# elif defined(_ABI64) && _MIPS_SIM == _ABI64
|
||||
# define LIBC_MIPS gnuabi64sf
|
||||
# else
|
||||
# error unknown mips sim value
|
||||
|
@ -107,21 +107,21 @@ PLATFORM_TRIPLET=arm-linux-androideabi
|
|||
# endif
|
||||
# if defined(_MIPS_SIM)
|
||||
# if defined(__mips_hard_float)
|
||||
# if _MIPS_SIM == _ABIO32
|
||||
# if defined(_ABIO32) && _MIPS_SIM == _ABIO32
|
||||
# define LIBC_MIPS musl
|
||||
# elif _MIPS_SIM == _ABIN32
|
||||
# elif defined(_ABIN32) && _MIPS_SIM == _ABIN32
|
||||
# define LIBC_MIPS musln32
|
||||
# elif _MIPS_SIM == _ABI64
|
||||
# elif defined(_ABI64) && _MIPS_SIM == _ABI64
|
||||
# define LIBC_MIPS musl
|
||||
# else
|
||||
# error unknown mips sim value
|
||||
# endif
|
||||
# else
|
||||
# if _MIPS_SIM == _ABIO32
|
||||
# if defined(_ABIO32) && _MIPS_SIM == _ABIO32
|
||||
# define LIBC_MIPS muslsf
|
||||
# elif _MIPS_SIM == _ABIN32
|
||||
# elif defined(_ABIN32) && _MIPS_SIM == _ABIN32
|
||||
# define LIBC_MIPS musln32sf
|
||||
# elif _MIPS_SIM == _ABI64
|
||||
# elif defined(_ABI64) && _MIPS_SIM == _ABI64
|
||||
# define LIBC_MIPS muslsf
|
||||
# else
|
||||
# error unknown mips sim value
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue