aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorStefan Schulze Frielinghaus <stefansf@gcc.gnu.org>2025-01-06 19:17:09 +0100
committerStefan Schulze Frielinghaus <stefansf@gcc.gnu.org>2025-01-06 19:17:09 +0100
commit1bd03564f29dc31e67e67efd93137d50fa7bb8a4 (patch)
treedc5ee9c9a070428fbc22629b26cc0384aa4e5757 /gcc
parent0bb38b2786a097f97664afbcf6577b77dd305d44 (diff)
downloadgcc-1bd03564f29dc31e67e67efd93137d50fa7bb8a4.zip
gcc-1bd03564f29dc31e67e67efd93137d50fa7bb8a4.tar.gz
gcc-1bd03564f29dc31e67e67efd93137d50fa7bb8a4.tar.bz2
Add type __sanitizer::ssize (#116957)
Since the sanitizer merge in commit r15-5164-gfa321004f3f628 of GCC which entails LLVM commit 61a6439f35b6de28ff4aff4450d6fca970292fd5, GCCs bootstrap is broken on s390 -m31. This is due to commit ec68dc1ca4d967b599f1202855917d5ec9cae52f which introduces stricter type checking which is why GCC bootstrap fails with ``` In file included from /gcc/src/libsanitizer/interception/interception.h:18, from /gcc/src/libsanitizer/interception/interception_type_test.cpp:14: /gcc/src/libsanitizer/interception/interception_type_test.cpp:30:61: error: static assertion failed 30 | COMPILER_CHECK((__sanitizer::is_same<::SSIZE_T, ::ssize_t>::value)); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~ /gcc/src/libsanitizer/sanitizer_common/sanitizer_internal_defs.h:363:44: note: in definition of macro 'COMPILER_CHECK' 363 | #define COMPILER_CHECK(pred) static_assert(pred, "") | ^~~~ make[8]: *** [Makefile:469: interception_type_test.lo] Error 1 ``` The culprit seems to be that we don't check for equality of type sizes anymore but rather whether the types are indeed the same. On s390 -m31 we have that `sizeof(int)==sizeof(long)` holds which is why previously the checks succeeded. They fail now because ``` size_t => unsigned long ssize_t => long ptrdiff_t => int ::SSIZE_T => __sanitizer::sptr => int ::PTRDIFF_T => __sanitizer::sptr => int ``` This is fixed by mapping `SSIZE_T` to `long` in the end. ``` typedef long ssize; typedef sptr ssize; ``` Cherry picked from LLVM commit ce44640fe29550461120d22b0358e6cac4aed822. libsanitizer/ChangeLog: PR sanitizer/117725 * interception/interception.h: Cherry picked from LLVM commit ce44640fe29550461120d22b0358e6cac4aed822. * sanitizer_common/sanitizer_internal_defs.h: Ditto.
Diffstat (limited to 'gcc')
0 files changed, 0 insertions, 0 deletions