Clang: patch to fix linking shared libraries
This commit is contained in:
parent
3ccfec38cb
commit
555af21de7
|
@ -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());
|
||||||
|
|
Loading…
Reference in New Issue
Block a user