diff --git a/driver-main/llvm-goc.cpp b/driver-main/llvm-goc.cpp
index 1299be9..6167db3 100644
--- a/driver-main/llvm-goc.cpp
+++ b/driver-main/llvm-goc.cpp
@@ -67,6 +67,12 @@
 #include <sys/types.h>
 #include <unistd.h>
 
+#ifdef USING_SPLIT_STACK
+constexpr bool using_splitstack = true;
+#else
+constexpr bool using_splitstack = false;
+#endif
+
 using namespace llvm;
 using namespace gollvm::driver;
 
@@ -204,7 +210,7 @@
     return 1;
 
   // Create driver.
-  Driver driver(clp.args(), opts.get(), argv[0]);
+  Driver driver(clp.args(), opts.get(), argv[0], using_splitstack);
 
   // Set up driver, select target and toolchain.
   ToolChain *toolchain = driver.setup();
diff --git a/driver/Driver.cpp b/driver/Driver.cpp
index e00d3bc..dc65e5b 100644
--- a/driver/Driver.cpp
+++ b/driver/Driver.cpp
@@ -28,10 +28,12 @@
 
 Driver::Driver(opt::InputArgList &args,
                opt::OptTable *optTable,
-               const char *argv0)
+               const char *argv0,
+               bool using_splitstack)
     : args_(args),
       opts_(optTable),
-      progname_(argv0)
+      progname_(argv0),
+      usingSplitStack_(using_splitstack)
 {
   if (const opt::Arg *arg = args.getLastArg(gollvm::options::OPT_sysroot_EQ))
     sysroot_ = arg->getValue();
diff --git a/driver/Driver.h b/driver/Driver.h
index 1b62faa..173f53a 100644
--- a/driver/Driver.h
+++ b/driver/Driver.h
@@ -45,7 +45,8 @@
  public:
   Driver(llvm::opt::InputArgList &args,
          llvm::opt::OptTable *optTable,
-         const char *argv0);
+         const char *argv0,
+         bool using_splitstack);
   ~Driver();
 
   // Set up target and select toolchain. Returns nullptr on error.
@@ -104,6 +105,7 @@
   llvm::PIELevel::Level getPieLevel();
   bool picIsPIE();
   bool isPIE();
+  bool usingSplitStack() const { return usingSplitStack_; }
   template<typename IT>
   llvm::Optional<IT> getLastArgAsInteger(gollvm::options::ID id,
                                          IT defaultValue);
@@ -132,6 +134,7 @@
   // Maps non-input actions to output artifacts.
   std::unordered_map<Action *, Artifact*> artmap_;
   std::vector<std::string> prefixes_;
+  bool usingSplitStack_;
 
   bool processAction(Action *act, Compilation &compilation, bool lastAct);
   ArtifactList collectInputArtifacts(Action *act, InternalTool *it);
diff --git a/driver/GnuTools.cpp b/driver/GnuTools.cpp
index 38b69f6..4d99232 100644
--- a/driver/GnuTools.cpp
+++ b/driver/GnuTools.cpp
@@ -266,7 +266,8 @@
   cmdArgs.push_back("-lm");
   cmdArgs.push_back("-u");
   cmdArgs.push_back("pthread_create");
-  cmdArgs.push_back("--wrap=pthread_create");
+  if (toolchain().driver().usingSplitStack())
+    cmdArgs.push_back("--wrap=pthread_create");
 
   // Libgcc and libc.
   cmdArgs.push_back("--start-group");
@@ -291,7 +292,8 @@
   if (isStaticLibgo || havePthreadFlag)
     cmdArgs.push_back("-lpthread");
   cmdArgs.push_back("-lm");
-  cmdArgs.push_back("--wrap=pthread_create");
+  if (toolchain().driver().usingSplitStack())
+    cmdArgs.push_back("--wrap=pthread_create");
 
   // Libgcc and libc.
   addLibGcc(args, cmdArgs);
