2
0
Fork 0

Clang: patch to fix linking shared libraries

This commit is contained in:
Ehmry - 2020-05-08 21:03:24 +05:30
parent 541cd34b7a
commit cffa29c68d
1 changed files with 13 additions and 6 deletions

View File

@ -121,10 +121,10 @@ index 1a46073aaa3..72b6f7389a3 100644
StringRef S = A->getValue();
diff --git a/lib/Driver/ToolChains/Genode.cpp b/lib/Driver/ToolChains/Genode.cpp
new file mode 100644
index 00000000000..91cb8362a14
index 00000000000..cf87b10ba2a
--- /dev/null
+++ b/lib/Driver/ToolChains/Genode.cpp
@@ -0,0 +1,138 @@
@@ -0,0 +1,145 @@
+//===--- Genode.cpp - Genode ToolChain Implementations ----------*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
@ -201,9 +201,14 @@ index 00000000000..91cb8362a14
+ if (Args.hasArg(options::OPT_static)) {
+ CmdArgs.push_back("-Bstatic");
+ } 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_shared)) {
+ CmdArgs.push_back(Args.MakeArgString("-shared"));
+ 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)) {
+ 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)) {
+ 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());