gcc/libsanitizer/interception
Stefan Schulze Frielinghaus 1bd03564f2 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.
2025-01-06 19:17:09 +01:00
..
interception.h Add type __sanitizer::ssize (#116957) 2025-01-06 19:17:09 +01:00
interception_linux.cpp libsanitizer: merge from upstream (c425db2eb558c263) 2023-11-15 12:45:58 +01:00
interception_linux.h libsanitizer: merge from upstream (61a6439f35b6de28) 2024-11-12 21:56:06 +08:00
interception_mac.cpp
interception_mac.h
interception_type_test.cpp libsanitizer: merge from upstream (61a6439f35b6de28) 2024-11-12 21:56:06 +08:00
interception_win.cpp libsanitizer: merge from upstream (61a6439f35b6de28) 2024-11-12 21:56:06 +08:00
interception_win.h libsanitizer: merge from upstream (c425db2eb558c263) 2023-11-15 12:45:58 +01:00
Makefile.am libsanitizer: Remove -pedantic from AM_CXXFLAGS [PR117732] 2024-11-25 09:36:41 +01:00
Makefile.in libsanitizer: Remove -pedantic from AM_CXXFLAGS [PR117732] 2024-11-25 09:36:41 +01:00