libsanitizer fails to build with -D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64, triggering an #error in /usr/include/features-time64.h

--- 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>
--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp
+++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp
@@ -18,6 +18,7 @@
 // depends on _FILE_OFFSET_BITS setting.
// To get this "true" dirent definition, we undefine _FILE_OFFSET_BITS below.
 #undef _FILE_OFFSET_BITS
+#undef _TIME_BITS
 #endif

 // Must go after undef _FILE_OFFSET_BITS.


The patch to sanitizer_platform_limits_posix.cpp is already present in trunk, but missing from the branches.

Because all platform files are built in GCC, you also see the failure in sanitizer_procmaps_solaris.cpp. Just doing the same as for the posix files fixes the issue and libsanitizer builds again.

Does this have any effect on the solaris builds? If not, ok for the trunk and the branches?

Matthias

Reply via email to