[PATCH] D59702: Unbreak the build of compiler-rt on Linux/mips64el
Simon Atanasyan via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Tue Apr 23 13:58:08 PDT 2019
atanasyan added a comment.
I'm sorry for delay with handling this issue.
The **160** constant in the `FIRST_32_SECOND_64(144, 104)` depends on the following fragment from the `cmake/modules/HandleLLVMOptions.cmake` file introduced by the rL301171 <https://reviews.llvm.org/rL301171>. If `_LARGEFILE_SOURCE` and `_FILE_OFFSET_BITS=64` are defined, `sizeof(struct stat)` equals to **160**. This constant was configured by the rL301307 <https://reviews.llvm.org/rL301307>. Unfortunately, in case of building on MIPS 64-bit `CMAKE_SIZEOF_VOID_P` equals to **8** and these definitions are not provided to the compiler. It's a separate problem. Probably it needs to be handled by supporting the `LLVM_BUILD_32_BITS` option for MIPS targets. These option is used to build 32-bit binaries on 64-bit host. But now it's supported on limited set of architectures.
if( CMAKE_SIZEOF_VOID_P EQUAL 4 AND NOT LLVM_FORCE_SMALLFILE_FOR_ANDROID)
# FIXME: It isn't handled in LLVM_BUILD_32_BITS.
add_definitions( -D_LARGEFILE_SOURCE )
add_definitions( -D_FILE_OFFSET_BITS=64 )
Meanwhile, could you try to workaround the issue by explicitly providing `-mabi=32` (for building MIPS 32-bit binaries) and `-mabi=64` (for building MIPS 64-bit binaries) options to the cmake? Something like that:
rCRT Compiler Runtime
CHANGES SINCE LAST ACTION
More information about the cfe-commits