llvm / llvm-project

The LLVM Project is a collection of modular and reusable compiler and toolchain technologies.
http://llvm.org
Other
27.21k stars 11.14k forks source link

18.x: undefined symbol: main for llvm-omp-kernel-replay and llvm-omp-device-info #92845

Open liam-clink opened 2 months ago

liam-clink commented 2 months ago

I'm building release/18.x using this invocation:

cmake -S llvm -B build -G Ninja -DLLVM_ENABLE_PROJECTS="bolt;clang;clang-tools-extra;compiler-rt;cross-project-tests;libclc;lld;lldb;mlir;polly;pstl;openmp" -DCMAKE_BUILD_TYPE=Release -DLLVM_USE_LINKER=lld -DLLVM_TARGETS_TO_BUILD="AArch64;AMDGPU;ARM;AVR;WebAssembly;X86" -DLLVM_ENABLE_SPHINX=true -DLLVM_ENABLE_RTTI=true -DLLVM_INSTALL_UTILS=true -DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi;libunwind"

The error I'm getting:

[66/6814] Linking CXX executable bin/llvm-omp-kernel-replay
FAILED: bin/llvm-omp-kernel-replay 
: && /usr/local/gcc-12/bin/g++ -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -fno-lifetime-dse -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wno-maybe-uninitialized -Wno-nonnull -Wno-class-memaccess -Wno-redundant-move -Wno-pessimizing-move -Wno-noexcept-type -Wdelete-non-virtual-dtor -Wsuggest-override -Wno-comment -Wno-misleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -Wall -Wcast-qual -Wimplicit-fallthrough -Wsign-compare -Wno-extra -Wno-pedantic -Wno-maybe-uninitialized -fno-semantic-interposition -fdata-sections -O3 -DNDEBUG -fuse-ld=lld -Wl,--color-diagnostics    -Wl,--gc-sections  -flto projects/openmp/libomptarget/tools/kernelreplay/CMakeFiles/llvm-omp-kernel-replay.dir/llvm-omp-kernel-replay.cpp.o -o bin/llvm-omp-kernel-replay  -Wl,-rpath,"\$ORIGIN/../lib:/home/liam/repos/llvm-project/build/lib:"  lib/libLLVMSupport.a  lib/libomptarget.so.18.1  lib/libomp.so  -lm  lib/libLLVMObject.a  lib/libLLVMIRReader.a  lib/libLLVMBitReader.a  lib/libLLVMAsmParser.a  lib/libLLVMCore.a  lib/libLLVMRemarks.a  lib/libLLVMBitstreamReader.a  lib/libLLVMMCParser.a  lib/libLLVMMC.a  lib/libLLVMDebugInfoCodeView.a  lib/libLLVMTextAPI.a  lib/libLLVMBinaryFormat.a  lib/libLLVMTargetParser.a  lib/libLLVMSupport.a  -lrt  -ldl  -lm  /usr/lib/x86_64-linux-gnu/libz.so  /usr/lib/x86_64-linux-gnu/libzstd.so  /usr/lib/x86_64-linux-gnu/libtinfo.so  lib/libLLVMDemangle.a && :
ld.lld: error: undefined symbol: main
>>> referenced by /lib/x86_64-linux-gnu/crt1.o:(_start)
collect2: error: ld returned 1 exit status
[72/6814] Linking CXX executable bin/llvm-omp-device-info
FAILED: bin/llvm-omp-device-info 
: && /usr/local/gcc-12/bin/g++ -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -fno-lifetime-dse -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wno-maybe-uninitialized -Wno-nonnull -Wno-class-memaccess -Wno-redundant-move -Wno-pessimizing-move -Wno-noexcept-type -Wdelete-non-virtual-dtor -Wsuggest-override -Wno-comment -Wno-misleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -Wall -Wcast-qual -Wimplicit-fallthrough -Wsign-compare -Wno-extra -Wno-pedantic -Wno-maybe-uninitialized -fno-semantic-interposition -fdata-sections -O3 -DNDEBUG -fuse-ld=lld -Wl,--color-diagnostics    -Wl,--gc-sections  -flto projects/openmp/libomptarget/tools/deviceinfo/CMakeFiles/llvm-omp-device-info.dir/llvm-omp-device-info.cpp.o -o bin/llvm-omp-device-info  -Wl,-rpath,"\$ORIGIN/../lib:/home/liam/repos/llvm-project/build/lib:"  lib/libomptarget.so.18.1  lib/libomp.so  -lm  lib/libLLVMObject.a  lib/libLLVMIRReader.a  lib/libLLVMBitReader.a  lib/libLLVMAsmParser.a  lib/libLLVMCore.a  lib/libLLVMRemarks.a  lib/libLLVMBitstreamReader.a  lib/libLLVMMCParser.a  lib/libLLVMMC.a  lib/libLLVMDebugInfoCodeView.a  lib/libLLVMTextAPI.a  lib/libLLVMBinaryFormat.a  lib/libLLVMTargetParser.a  lib/libLLVMSupport.a  -lrt  -ldl  -lm  /usr/lib/x86_64-linux-gnu/libz.so  /usr/lib/x86_64-linux-gnu/libzstd.so  /usr/lib/x86_64-linux-gnu/libtinfo.so  lib/libLLVMDemangle.a && :
ld.lld: error: undefined symbol: main
>>> referenced by /lib/x86_64-linux-gnu/crt1.o:(_start)
collect2: error: ld returned 1 exit status
[99/6814] Building CXX object tools/clang/utils/TableGen/CMakeFiles/clang-tblgen.dir/MveEmitter.cpp.o
ninja: build stopped: subcommand failed.

Not sure what other info I could give that would help. Just let me know. Funny how I always seem to have a problem building libOMP...

llvmbot commented 2 months ago

@llvm/issue-subscribers-openmp

Author: Liam Clink (liam-clink)

I'm building release/18.x using this invocation: ``` cmake -S llvm -B build -G Ninja -DLLVM_ENABLE_PROJECTS="bolt;clang;clang-tools-extra;compiler-rt;cross-project-tests;libclc;lld;lldb;mlir;polly;pstl;openmp" -DCMAKE_BUILD_TYPE=Release -DLLVM_USE_LINKER=lld -DLLVM_TARGETS_TO_BUILD="AArch64;AMDGPU;ARM;AVR;WebAssembly;X86" -DLLVM_ENABLE_SPHINX=true -DLLVM_ENABLE_RTTI=true -DLLVM_INSTALL_UTILS=true -DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi;libunwind" ``` The error I'm getting: ``` [66/6814] Linking CXX executable bin/llvm-omp-kernel-replay FAILED: bin/llvm-omp-kernel-replay : && /usr/local/gcc-12/bin/g++ -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -fno-lifetime-dse -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wno-maybe-uninitialized -Wno-nonnull -Wno-class-memaccess -Wno-redundant-move -Wno-pessimizing-move -Wno-noexcept-type -Wdelete-non-virtual-dtor -Wsuggest-override -Wno-comment -Wno-misleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -Wall -Wcast-qual -Wimplicit-fallthrough -Wsign-compare -Wno-extra -Wno-pedantic -Wno-maybe-uninitialized -fno-semantic-interposition -fdata-sections -O3 -DNDEBUG -fuse-ld=lld -Wl,--color-diagnostics -Wl,--gc-sections -flto projects/openmp/libomptarget/tools/kernelreplay/CMakeFiles/llvm-omp-kernel-replay.dir/llvm-omp-kernel-replay.cpp.o -o bin/llvm-omp-kernel-replay -Wl,-rpath,"\$ORIGIN/../lib:/home/liam/repos/llvm-project/build/lib:" lib/libLLVMSupport.a lib/libomptarget.so.18.1 lib/libomp.so -lm lib/libLLVMObject.a lib/libLLVMIRReader.a lib/libLLVMBitReader.a lib/libLLVMAsmParser.a lib/libLLVMCore.a lib/libLLVMRemarks.a lib/libLLVMBitstreamReader.a lib/libLLVMMCParser.a lib/libLLVMMC.a lib/libLLVMDebugInfoCodeView.a lib/libLLVMTextAPI.a lib/libLLVMBinaryFormat.a lib/libLLVMTargetParser.a lib/libLLVMSupport.a -lrt -ldl -lm /usr/lib/x86_64-linux-gnu/libz.so /usr/lib/x86_64-linux-gnu/libzstd.so /usr/lib/x86_64-linux-gnu/libtinfo.so lib/libLLVMDemangle.a && : ld.lld: error: undefined symbol: main >>> referenced by /lib/x86_64-linux-gnu/crt1.o:(_start) collect2: error: ld returned 1 exit status [72/6814] Linking CXX executable bin/llvm-omp-device-info FAILED: bin/llvm-omp-device-info : && /usr/local/gcc-12/bin/g++ -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -fno-lifetime-dse -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wno-maybe-uninitialized -Wno-nonnull -Wno-class-memaccess -Wno-redundant-move -Wno-pessimizing-move -Wno-noexcept-type -Wdelete-non-virtual-dtor -Wsuggest-override -Wno-comment -Wno-misleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -Wall -Wcast-qual -Wimplicit-fallthrough -Wsign-compare -Wno-extra -Wno-pedantic -Wno-maybe-uninitialized -fno-semantic-interposition -fdata-sections -O3 -DNDEBUG -fuse-ld=lld -Wl,--color-diagnostics -Wl,--gc-sections -flto projects/openmp/libomptarget/tools/deviceinfo/CMakeFiles/llvm-omp-device-info.dir/llvm-omp-device-info.cpp.o -o bin/llvm-omp-device-info -Wl,-rpath,"\$ORIGIN/../lib:/home/liam/repos/llvm-project/build/lib:" lib/libomptarget.so.18.1 lib/libomp.so -lm lib/libLLVMObject.a lib/libLLVMIRReader.a lib/libLLVMBitReader.a lib/libLLVMAsmParser.a lib/libLLVMCore.a lib/libLLVMRemarks.a lib/libLLVMBitstreamReader.a lib/libLLVMMCParser.a lib/libLLVMMC.a lib/libLLVMDebugInfoCodeView.a lib/libLLVMTextAPI.a lib/libLLVMBinaryFormat.a lib/libLLVMTargetParser.a lib/libLLVMSupport.a -lrt -ldl -lm /usr/lib/x86_64-linux-gnu/libz.so /usr/lib/x86_64-linux-gnu/libzstd.so /usr/lib/x86_64-linux-gnu/libtinfo.so lib/libLLVMDemangle.a && : ld.lld: error: undefined symbol: main >>> referenced by /lib/x86_64-linux-gnu/crt1.o:(_start) collect2: error: ld returned 1 exit status [99/6814] Building CXX object tools/clang/utils/TableGen/CMakeFiles/clang-tblgen.dir/MveEmitter.cpp.o ninja: build stopped: subcommand failed. ``` Not sure what other info I could give that would help. Just let me know. Funny how I always seem to have a problem building libOMP...
shiltian commented 1 week ago

This should be due to the wrong signature of the main function.

Update: It doesn't look like the case, since TableGen and FileCheck also use the same signature. Can you print the symbol table of the two object files that contains main function?