This is an archive of the discontinued LLVM Phabricator instance.

cmake: Enable 64bit off_t on 32bit glibc systems
AbandonedPublic

Authored by MaskRay on Dec 20 2022, 12:54 PM.

Details

Reviewers
None
Summary

Pass -D_FILE_OFFSET_BITS=64 to compiler flags on 32bit glibc based
systems. This will make sure that 64bit versions of LFS functions are
used e.g. seek will behave same as lseek64. Also revert [1] partially
because this added a cmake test to detect lseek64 but then forgot to
pass the needed macro to actual compile, this test was incomplete too
since libc implementations like musl has 64bit off_t by default on 32bit
systems and does not bundle[2] -D_LARGEFILE64_SOURCE under -D_GNU_SOURCE
like glibc, which means the compile now fails on musl because the cmake
check passes but we do not have _LARGEFILE64_SOURCE defined. Using the
*64 function was transitional anyways so use -D_FILE_OFFSET_BITS=64
instead

[1] https://github.com/llvm/llvm-project/commit/8db7e5e4eed4c4e697dc3164f2c9351d8c3e942b
[2] https://git.musl-libc.org/cgit/musl/commit/?id=25e6fee27f4a293728dd15b659170e7b9c7db9bc

Diff Detail

Event Timeline

MaskRay created this revision.Dec 20 2022, 12:54 PM
Herald added a project: Restricted Project. · View Herald TranscriptDec 20 2022, 12:54 PM
MaskRay requested review of this revision.Dec 20 2022, 12:54 PM
Herald added a project: Restricted Project. · View Herald TranscriptDec 20 2022, 12:54 PM
MaskRay updated this revision to Diff 484361.Dec 20 2022, 12:56 PM

include gn and bazel changes