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" This change has also been proposed to upstream LLVM: https://github.com/llvm/llvm-project/pull/99699 Signed-off-by: Thomas Petazzoni <thomas.petazz...@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