Hi Matthias,
> 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?
Since _TIME_BITS isn't used in Solaris system headers at all, there's no
impact.
However, the sanitizer_procmaps_solaris.cpp change needs to go into
upstream LLVM first and can only then be cherry-picked into libsanitizer
once it has been committed there.
Rainer
--
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University