diff options
-rw-r--r-- | clang/lib/Driver/Tools.cpp | 3 | ||||
-rw-r--r-- | clang/test/Driver/split-stack-ld.c | 17 |
2 files changed, 20 insertions, 0 deletions
diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp index 6a1517f1807..574bf5cd77d 100644 --- a/clang/lib/Driver/Tools.cpp +++ b/clang/lib/Driver/Tools.cpp @@ -9001,6 +9001,9 @@ void gnutools::Linker::ConstructJob(Compilation &C, const JobAction &JA, if (WantPthread && !isAndroid) CmdArgs.push_back("-lpthread"); + if (Args.hasArg(options::OPT_fsplit_stack)) + CmdArgs.push_back("--wrap=pthread_create"); + CmdArgs.push_back("-lc"); if (Args.hasArg(options::OPT_static)) diff --git a/clang/test/Driver/split-stack-ld.c b/clang/test/Driver/split-stack-ld.c new file mode 100644 index 00000000000..3441d542cb8 --- /dev/null +++ b/clang/test/Driver/split-stack-ld.c @@ -0,0 +1,17 @@ +// Test split stack ld flags. +// +// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ +// RUN: -target i386-unknown-linux -fsplit-stack \ +// RUN: -resource-dir=%S/Inputs/resource_dir \ +// RUN: --sysroot=%S/Inputs/basic_linux_tree \ +// RUN: | FileCheck --check-prefix=CHECK-LINUX-I386 %s +// +// CHECK-LINUX-I386: "--wrap=pthread_create" +// +// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ +// RUN: -target x86_64-unknown-linux -fsplit-stack \ +// RUN: -resource-dir=%S/Inputs/resource_dir \ +// RUN: --sysroot=%S/Inputs/basic_linux_tree \ +// RUN: | FileCheck --check-prefix=CHECK-LINUX-X86-64 %s +// +// CHECK-LINUX-X86-64: "--wrap=pthread_create" |