aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoseph Huber <jhuber6@vols.utk.edu>2023-02-01 12:01:44 -0600
committerJoseph Huber <jhuber6@vols.utk.edu>2023-02-01 12:03:03 -0600
commit51ff5481146475afc869cf54ebc0b46d9da15a14 (patch)
tree6170fa56bef5bd7552d4d2ae55e83e82225592b8
parentc8eff9560fc1d2462a60bccb560a9ef87a4ba5bb (diff)
downloadllvm-51ff5481146475afc869cf54ebc0b46d9da15a14.zip
llvm-51ff5481146475afc869cf54ebc0b46d9da15a14.tar.gz
llvm-51ff5481146475afc869cf54ebc0b46d9da15a14.tar.bz2
[LinkerWrapper] Fix passing `-rpath` directly to clang
Summary: This code passed the value of `-rpath` directly to the clang invocation. If we're using the linker then it'll be fine. However, if the linker is `gcc` as is the case when doing `-fopenmp-targets=x86_64` then this will cause problems. This patch adds the `-Wl,-rpath,` to feed it to the linker correctly.
-rw-r--r--clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp b/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp
index 6981e12..2980044 100644
--- a/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp
+++ b/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp
@@ -396,9 +396,11 @@ Expected<StringRef> clang(ArrayRef<StringRef> InputFiles, const ArgList &Args) {
CmdArgs.push_back("-Wl,-Bsymbolic");
CmdArgs.push_back("-shared");
ArgStringList LinkerArgs;
- for (const opt::Arg *Arg :
- Args.filtered(OPT_library, OPT_rpath, OPT_library_path))
+ for (const opt::Arg *Arg : Args.filtered(OPT_library, OPT_library_path))
Arg->render(Args, LinkerArgs);
+ for (const opt::Arg *Arg : Args.filtered(OPT_rpath))
+ LinkerArgs.push_back(
+ Args.MakeArgString("-Wl,-rpath," + StringRef(Arg->getValue())));
llvm::copy(LinkerArgs, std::back_inserter(CmdArgs));
}