diff mbox series

libsanitizer: also undef _TIME_BITS in sanitizer_procmaps_solaris.cpp

Message ID 20240719203014.2060082-1-thomas.petazzoni@bootlin.com
State New
Headers show
Series libsanitizer: also undef _TIME_BITS in sanitizer_procmaps_solaris.cpp | expand

Commit Message

Thomas Petazzoni July 19, 2024, 8:30 p.m. UTC
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.petazzoni@bootlin.com>
---
 libsanitizer/sanitizer_common/sanitizer_procmaps_solaris.cpp | 1 +
 1 file changed, 1 insertion(+)
diff mbox series

Patch

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>