From: Petr Hosek Date: Sun, 17 Feb 2019 02:42:48 +0000 (+0000) Subject: [Driver][Gnu] Support -nolibc flag X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d5b2f330362f8135bc4198fefbaf9bdcae5f9dd2;p=clang [Driver][Gnu] Support -nolibc flag This can be used to disable libc linking. This flag is supported by GCC since version 9 as well as some Clang target toolchains. Differential Revision: https://reviews.llvm.org/D58326 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@354210 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Driver/ToolChains/Gnu.cpp b/lib/Driver/ToolChains/Gnu.cpp index e94a895373..6eb8fe2217 100644 --- a/lib/Driver/ToolChains/Gnu.cpp +++ b/lib/Driver/ToolChains/Gnu.cpp @@ -518,7 +518,8 @@ void tools::gnutools::Linker::ConstructJob(Compilation &C, const JobAction &JA, if (Args.hasArg(options::OPT_fsplit_stack)) CmdArgs.push_back("--wrap=pthread_create"); - CmdArgs.push_back("-lc"); + if (!Args.hasArg(options::OPT_nolibc)) + CmdArgs.push_back("-lc"); // Add IAMCU specific libs, if needed. if (IsIAMCU) diff --git a/test/Driver/nodefaultlib.c b/test/Driver/nodefaultlib.c index 08bcea56fa..e6c7d217ad 100644 --- a/test/Driver/nodefaultlib.c +++ b/test/Driver/nodefaultlib.c @@ -1,4 +1,4 @@ -// RUN: %clang -target i686-pc-linux-gnu -### -nodefaultlibs %s 2>&1 | FileCheck -check-prefix=TEST1 %s +// RUN: %clang -target i686-pc-linux-gnu -### -rtlib=libgcc -nodefaultlibs %s 2>&1 | FileCheck -check-prefix=TEST1 %s // TEST1-NOT: start-group // TEST1-NOT: "-lgcc" // TEST1-NOT: "-lc" diff --git a/test/Driver/nolibc.c b/test/Driver/nolibc.c new file mode 100644 index 0000000000..1fa144247e --- /dev/null +++ b/test/Driver/nolibc.c @@ -0,0 +1,5 @@ +// RUN: %clang -target i686-pc-linux-gnu -### -rtlib=libgcc -nolibc %s 2>&1 | FileCheck %s +// CHECK: crtbegin +// CHECK: "-lgcc" +// CHECK-NOT: "-lc" +// CHECK: crtend