| From 7ad54084a2c07cca6d03dfe274893e903852d359 Mon Sep 17 00:00:00 2001 |
| From: Thomas Petazzoni <thomas.petazzoni@bootlin.com> |
| Date: Thu, 18 Jul 2024 23:13:41 +0200 |
| Subject: [PATCH] libsanitizer: also undef _TIME_BITS in |
| sanitizer_procmaps_solaris.cpp |
| |
| Upstream commit |
| https://github.com/llvm/llvm-project/commit/26800a2c7e7996dc773b4e990dd5cca41c45e1a9 |
| of LLVM added a #undef _TIME_BITS in |
| libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp to |
| fix the build on 32-bit Linux platforms that have enabled 64-bit |
| time_t using _TIME_BITS=64. |
| |
| Indeed, _TIME_BITS=64 can only be used when _FILE_OFFSET_BITS=64, but |
| sanitizer_platform_limits_posix.cpp undefines _FILE_OFFSET_BITS before |
| including any header file. To fix this, the upstream fix was to also |
| undef _TIME_BITS. |
| |
| This commit simply does the same in sanitizer_procmaps_solaris.cpp, |
| which also gets compiled under Linux (despite what the file name |
| says). In practice on Linux hosts (where _TIME_BITS=64 matters), |
| sanitizer_procmaps_solaris.cpp will expand to nothing, as pretty much |
| the rest of the file is inside a #ifdef SANITIZER_SOLARIS...#endif. So |
| the #undef _FILE_OFFSET_BITS and #undef _TIME_BITS are only here |
| before including sanitizer_platform.h, which will set the |
| SANITIZER_LINUX/SANITIZER_SOLARIS define depending on the platform. |
| |
| Fixes: |
| |
| armeb-buildroot-linux-gnueabi/sysroot/usr/include/features-time64.h:26:5: error: #error "_TIME_BITS=64 is allowed only with _FILE_OFFSET_BITS=64" |
| 26 | # error "_TIME_BITS=64 is allowed only with _FILE_OFFSET_BITS=64" |
| |
| Upstream: https://gcc.gnu.org/pipermail/gcc-patches/2024-July/657811.html |
| Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com> |
| --- |
| libsanitizer/sanitizer_common/sanitizer_procmaps_solaris.cpp | 1 + |
| 1 file changed, 1 insertion(+) |
| |
| diff --git a/libsanitizer/sanitizer_common/sanitizer_procmaps_solaris.cpp b/libsanitizer/sanitizer_common/sanitizer_procmaps_solaris.cpp |
| index eeb49e2afe3..1b23fd4d512 100644 |
| --- a/libsanitizer/sanitizer_common/sanitizer_procmaps_solaris.cpp |
| +++ b/libsanitizer/sanitizer_common/sanitizer_procmaps_solaris.cpp |
| @@ -11,6 +11,7 @@ |
| |
| // Before Solaris 11.4, <procfs.h> doesn't work in a largefile environment. |
| #undef _FILE_OFFSET_BITS |
| +#undef _TIME_BITS |
| #include "sanitizer_platform.h" |
| #if SANITIZER_SOLARIS |
| # include <fcntl.h> |
| -- |
| 2.45.2 |
| |