[PATCH] D93164: [AST] Add generator for source location introspection

Andrew Anderson via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed Jan 19 02:20:20 PST 2022

andrew-wja added a comment.

In D93164#3252509 <https://reviews.llvm.org/D93164#3252509>, @lancethepants wrote:

> In D93164#3250945 <https://reviews.llvm.org/D93164#3250945>, @andrew-wja wrote:
>> In D93164#3048130 <https://reviews.llvm.org/D93164#3048130>, @lancethepants wrote:
>>> In D93164#2653067 <https://reviews.llvm.org/D93164#2653067>, @mgorny wrote:
>>>> This change breaks cross-compilation now, as it tries running an executable built for the target system:
>>>>   FAILED: tools/clang/lib/Tooling/ASTNodeAPI.json 
>>>>   cd /home/mgorny/llvm-project/build.arm64/tools/clang/lib/Tooling && /home/mgorny/llvm-project/build.arm64/bin/clang-ast-dump --skip-processing=0 --astheader=/home/mgorny/llvm-project/build.arm64/tools/clang/lib/Tooling/ASTTU.cpp -I /home/mgorny/llvm-project/build.arm64/lib/clang/13.0.0/include -I /home/mgorny/llvm-project/llvm/../clang/include -I /home/mgorny/llvm-project/build.arm64/tools/clang/include -I /home/mgorny/llvm-project/build.arm64/include -I /home/mgorny/llvm-project/llvm/include -I /sysroot/arm64/usr/include/c++/v1 -I /usr/lib/clang/11.0.1/include -I /sysroot/arm64/usr/include --json-output-path /home/mgorny/llvm-project/build.arm64/tools/clang/lib/Tooling/ASTNodeAPI.json
>>>>   /bin/sh: /home/mgorny/llvm-project/build.arm64/bin/clang-ast-dump: Exec format error
>>>> I guess you can look at TableGens how to correctly generate and use host executables.
>>> I am now running into this error now that clang13 has released.  I cannot figure a way around this. I do not see any cmake options similar to the tablegens that allow you to specify the binary for the build system.  Am I missing something or is clang13 just broken for cross compilation?
>> Another confirmation that this change has broken cross compilation. I have tried setting both `-DCLANG_TOOLING_BUILD_AST_INTROSPECTION=OFF` and `-DCMAKE_CROSSCOMPILING=ON` separately and in combination. This means that LLVM cannot be cross compiled for AArch64, which is a pretty serious problem!
> So I did find a solution. Maybe somewhere else in the forums or on irc. Can't remember for sure.
> Add this is well to your cmake invocation. For some reason this triggers in cmake that we are cross-compiling. Why -DCMAKE_CROSSCOMPILING=ON is insufficient I have no idea why. I'm compiling on linux for linux, didn't think I'd need it.  Kind of unintuitive, but that should hopefully get you going.

@lancethepants @smeenai thanks for the pointers! Unfortunately, it still doesn't work for me after passing -DCMAKE_SYSTEM_NAME="Linux". Passing that option did change the CMake output, so it's definitely recognized at least (the messages about which sanitizer tests will run now call the platform "Linux" as opposed to referring to the platform as default). I am also compiling on Linux for Linux, I'm just trying to build an AArch64 toolchain which I can copy to an SD card for testing on an AArch64 board. @lancethepants could you check your CMake version where you got this to work? I'm using CMake 3.22.1 and trying to build llvmorg-13.0.0

The full invocation I'm using is the following:

  cmake -G Ninja \
    -DLLVM_TABLEGEN=${TOP}/${CLANG_TBLGEN_DIR}/bin/llvm-tblgen \
    -DCLANG_TABLEGEN=${TOP}/${CLANG_TBLGEN_DIR}/bin/clang-tblgen \
    -DCMAKE_C_COMPILER=aarch64-linux-gnu-gcc \
    -DCMAKE_CXX_COMPILER=aarch64-linux-gnu-g++ \
    -DLLVM_DEFAULT_TARGET_TRIPLE=aarch64-linux-gnu \
    -DLLVM_TARGET_ARCH="AArch64" \
    -DLLVM_ENABLE_PROJECTS="clang;compiler-rt;lld;" \

  rG LLVM Github Monorepo



More information about the cfe-commits mailing list