raj.khem created this revision. raj.khem added reviewers: jhuber6, JonChesterfield. Herald added subscribers: guansong, yaxunl. raj.khem requested review of this revision. Herald added a reviewer: jdoerfert. Herald added subscribers: cfe-commits, sstefan1. Herald added a project: clang.
OpenEmbedded based SDKs stage toolchains outsides the target rootfs and libomp.so is part of the target rootfs and not part of compiler toolchain install or relative to it. It finds the libraries via --sysroot during compile. This ensures that -rpath is not added for such systems, since it is adding cross-compile paths to rpath which is not correct when the binaries are run on real targets. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D119590 Files: clang/lib/Driver/ToolChains/CommonArgs.cpp Index: clang/lib/Driver/ToolChains/CommonArgs.cpp =================================================================== --- clang/lib/Driver/ToolChains/CommonArgs.cpp +++ clang/lib/Driver/ToolChains/CommonArgs.cpp @@ -648,6 +648,11 @@ void tools::addOpenMPRuntimeSpecificRPath(const ToolChain &TC, const ArgList &Args, ArgStringList &CmdArgs) { + // OpenEmbedded/Yocto installs libomp.so into <sysroot>/usr/lib + // therefore using -rpath is not needed, on the contrary it adds + // paths from cross compiler install location which is not correct + if (TC.getTriple().getVendor() == llvm::Triple::OpenEmbedded) + return; if (Args.hasFlag(options::OPT_fopenmp_implicit_rpath, options::OPT_fno_openmp_implicit_rpath, true)) {
Index: clang/lib/Driver/ToolChains/CommonArgs.cpp =================================================================== --- clang/lib/Driver/ToolChains/CommonArgs.cpp +++ clang/lib/Driver/ToolChains/CommonArgs.cpp @@ -648,6 +648,11 @@ void tools::addOpenMPRuntimeSpecificRPath(const ToolChain &TC, const ArgList &Args, ArgStringList &CmdArgs) { + // OpenEmbedded/Yocto installs libomp.so into <sysroot>/usr/lib + // therefore using -rpath is not needed, on the contrary it adds + // paths from cross compiler install location which is not correct + if (TC.getTriple().getVendor() == llvm::Triple::OpenEmbedded) + return; if (Args.hasFlag(options::OPT_fopenmp_implicit_rpath, options::OPT_fno_openmp_implicit_rpath, true)) {
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits