1From 5c0d026419a69d5b8722f1abb0000caa4c151885 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Fri, 11 Feb 2022 12:29:14 -0800
4Subject: [PATCH] clang: exclude openembedded distributions from setting rpath
5 on openmp executables
6
7OpenEmbedded based SDKs stage toolchains outsides the target rootfs and
8libomp.so is part of the target rootfs and not part of compiler
9toolchain install or relative to it. It finds the libraries via
10--sysroot during compile. This ensures that -rpath is not added for such
11systems, since it is adding cross-compile paths to rpath which is not
12correct when the binaries are run on real targets.
13
14Upstream-Status: Submitted [https://reviews.llvm.org/D119590]
15Signed-off-by: Khem Raj <raj.khem@gmail.com>
16---
17 clang/lib/Driver/ToolChains/CommonArgs.cpp | 5 +++++
18 1 file changed, 5 insertions(+)
19
20diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp b/clang/lib/Driver/ToolChains/CommonArgs.cpp
21index dbc91e427dfb..b2cbfca9898c 100644
22--- a/clang/lib/Driver/ToolChains/CommonArgs.cpp
23+++ b/clang/lib/Driver/ToolChains/CommonArgs.cpp
24@@ -648,6 +648,11 @@ void tools::addLTOOptions(const ToolChain &ToolChain, const ArgList &Args,
25 void tools::addOpenMPRuntimeSpecificRPath(const ToolChain &TC,
26                                           const ArgList &Args,
27                                           ArgStringList &CmdArgs) {
28+  // OpenEmbedded/Yocto installs libomp.so into <sysroot>/usr/lib
29+  // therefore using -rpath is not needed, on the contrary it adds
30+  // paths from cross compiler install location which is not correct
31+  if (TC.getTriple().getVendor() == llvm::Triple::OpenEmbedded)
32+    return;
33
34   if (Args.hasFlag(options::OPT_fopenmp_implicit_rpath,
35                    options::OPT_fno_openmp_implicit_rpath, true)) {
36