2
0

Clang: patch to fix linking shared libraries

This commit is contained in:
Ehmry - 2020-05-08 21:03:24 +05:30
parent 3ccfec38cb
commit 555af21de7

View File

@ -121,10 +121,10 @@ index 1a46073aaa3..72b6f7389a3 100644
StringRef S = A->getValue(); StringRef S = A->getValue();
diff --git a/lib/Driver/ToolChains/Genode.cpp b/lib/Driver/ToolChains/Genode.cpp diff --git a/lib/Driver/ToolChains/Genode.cpp b/lib/Driver/ToolChains/Genode.cpp
new file mode 100644 new file mode 100644
index 00000000000..91cb8362a14 index 00000000000..cf87b10ba2a
--- /dev/null --- /dev/null
+++ b/lib/Driver/ToolChains/Genode.cpp +++ b/lib/Driver/ToolChains/Genode.cpp
@@ -0,0 +1,138 @@ @@ -0,0 +1,145 @@
+//===--- Genode.cpp - Genode ToolChain Implementations ----------*- C++ -*-===// +//===--- Genode.cpp - Genode ToolChain Implementations ----------*- C++ -*-===//
+// +//
+// The LLVM Compiler Infrastructure +// The LLVM Compiler Infrastructure
@ -201,9 +201,14 @@ index 00000000000..91cb8362a14
+ if (Args.hasArg(options::OPT_static)) { + if (Args.hasArg(options::OPT_static)) {
+ CmdArgs.push_back("-Bstatic"); + CmdArgs.push_back("-Bstatic");
+ } else { + } else {
+ CmdArgs.push_back(Args.MakeArgString("-T" + D.SysRoot + "/ld/genode_dyn.ld")); + if (Args.hasArg(options::OPT_shared)) {
+ CmdArgs.push_back(Args.MakeArgString("--dynamic-list=" + D.SysRoot + "/ld/genode_dyn.dl")); + CmdArgs.push_back(Args.MakeArgString("-shared"));
+ CmdArgs.push_back("--dynamic-linker=ld.lib.so"); + CmdArgs.push_back(Args.MakeArgString("-T" + D.SysRoot + "/ld/genode_rel.ld"));
+ } else {
+ CmdArgs.push_back(Args.MakeArgString("-T" + D.SysRoot + "/ld/genode_dyn.ld"));
+ CmdArgs.push_back(Args.MakeArgString("--dynamic-list=" + D.SysRoot + "/ld/genode_dyn.dl"));
+ CmdArgs.push_back("--dynamic-linker=ld.lib.so");
+ }
+ if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs)) { + if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs)) {
+ CmdArgs.push_back("-l:ld.lib.so"); + CmdArgs.push_back("-l:ld.lib.so");
+ } + }
@ -220,7 +225,9 @@ index 00000000000..91cb8362a14
+ +
+ if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs, options::OPT_noposix)) { + if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs, options::OPT_noposix)) {
+ CmdArgs.push_back("-lc"); + CmdArgs.push_back("-lc");
+ CmdArgs.push_back("-lposix"); + if (!Args.hasArg(options::OPT_shared)) {
+ CmdArgs.push_back("-lposix");
+ }
+ } + }
+ +
+ const char *Exec = Args.MakeArgString(ToolChain.GetLinkerPath()); + const char *Exec = Args.MakeArgString(ToolChain.GetLinkerPath());