Issue |
93183
|
Summary |
offload fails to build on s390x
|
Labels |
openmp:libomptarget,
offload
|
Assignees |
|
Reporter |
nikic
|
`LIBOMPTARGET_ALL_PLUGIN_TARGETS` is initialized to include amdgpu, cuda and host. Then amdgpu and cuda are automatically disabled on non-x86/aarch64/ppc64 platforms, such as s390x. But lateron we assume that all plugins in LIBOMPTARGET_ALL_PLUGIN_TARGETS exist and link against them, resulting in linker errors like the following:
```
May 23 09:01:09 : && /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/./bin/clang++ --target=s390x-redhat-linux-gnu -fPIC -O2 -flto=thin -fexceptions -g1 -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS --config /usr/lib/rpm/redhat/redhat-hardened-clang.cfg -fstack-protector-strong -m64 -march=z13 -mtune=z14 -fasynchronous-unwind-tables -fstack-clash-protection -D_DEFAULT_SOURCE -Dasm=__asm__ -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -O2 -g -DNDEBUG -Wl,-z,relro -Wl,--as-needed -Wl,-z,now --config /usr/lib/rpm/redhat/redhat-hardened-clang-ld.cfg -Wl,--build-id=sha1 -Wl,-z,defs -Wl,-z,nodelete -Wl,--gc-sections -shared -Wl,-soname,libomptarget.so.19.0pre20240523.g1e86e924288221 -o /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libomptarget.so.19.0pre20240523.g1e86e924288221 offload/src/CMakeFiles/omptarget.dir/device.cpp.o offload/src/CMakeFiles/omptarget.dir/interface.cpp.o offload/src/CMakeFiles/omptarget.dir/omptarget.cpp.o offload/src/CMakeFiles/omptarget.dir/OffloadRTL.cpp.o offload/src/CMakeFiles/omptarget.dir/LegacyAPI.cpp.o offload/src/CMakeFiles/omptarget.dir/PluginManager.cpp.o offload/src/CMakeFiles/omptarget.dir/DeviceImage.cpp.o offload/src/CMakeFiles/omptarget.dir/OpenMP/API.cpp.o offload/src/CMakeFiles/omptarget.dir/OpenMP/Mapping.cpp.o offload/src/CMakeFiles/omptarget.dir/OpenMP/InteropAPI.cpp.o offload/src/CMakeFiles/omptarget.dir/OpenMP/OMPT/Callback.cpp.o -Wl,-rpath,"\$ORIGIN:/builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/runtimes/runtimes-bins/offload/src/..:/builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/runtimes/runtimes-bins/openmp/runtime/src:/builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64:" openmp/runtime/src/libomp.so -Wl,--version-script=/builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/offload/src/exports -lomptarget.rtl.amdgpu -lomptarget.rtl.cuda /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libomptarget.rtl.host.a -lm /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVM.so.19.0pre20240523.g1e86e924288221 /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMAMDGPUCodeGen.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMGlobalISel.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMMIRParser.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMPasses.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMHipStdPar.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMIRPrinter.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMCFGuard.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMCoroutines.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMAMDGPUAsmParser.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMAMDGPUDisassembler.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMAMDGPUDesc.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMMCDisassembler.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMAMDGPUInfo.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMAMDGPUUtils.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMNVPTXCodeGen.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMAsmPrinter.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMipo.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMFrontendOpenMP.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMFrontendOffloading.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMLinker.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMInstrumentation.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMSelectionDAG.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMCodeGen.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMScalarOpts.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMAggressiveInstCombine.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMInstCombine.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMBitWriter.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMObjCARCOpts.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMCodeGenTypes.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMTarget.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMVectorize.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMTransformUtils.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMAnalysis.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMProfileData.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMSymbolize.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMDebugInfoDWARF.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMDebugInfoPDB.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMObject.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMMCParser.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMIRReader.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMBitReader.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMAsmParser.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMTextAPI.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMDebugInfoMSF.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMDebugInfoBTF.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMCore.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMRemarks.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMBitstreamReader.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMNVPTXDesc.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMNVPTXInfo.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMMC.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMBinaryFormat.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMTargetParser.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMDebugInfoCodeView.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMSupport.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMDemangle.a -lrt -ldl -lm /usr/lib64/libz.so /usr/lib64/libzstd.so /usr/lib64/libtinfo.so /usr/lib64/libffi.so && :
May 23 09:01:09 /usr/bin/ld: cannot find -lomptarget.rtl.amdgpu: No such file or directory
May 23 09:01:09 /usr/bin/ld: cannot find -lomptarget.rtl.cuda: No such file or directory
```
This used to work before offload was separate from openmp.
Either the build system should make it a hard error to specify a plugin that can't be build (in which case the user has to explicitly adjust `LIBOMPTARGET_ALL_PLUGIN_TARGETS`), or it should not try link plugins that it did not build.
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs