From 4094cbc6af06216b5ef909e5fceceb332b86a77b Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Mon, 14 Sep 2015 19:30:53 +0000 Subject: [PATCH] [Solaris] Add -lc also when linking shared libraries MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit This is actually needed, otherwise libc won't be added at all. For instance when building libclang.so all the libc symbols won't be found, with ld warning about libc being an "implicit dependency". Patch by Xan López! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@247603 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Driver/Tools.cpp | 2 +- test/Driver/solaris-ld.c | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp index b7791880ed..0adc05c946 100644 --- a/lib/Driver/Tools.cpp +++ b/lib/Driver/Tools.cpp @@ -6962,9 +6962,9 @@ void solaris::Linker::ConstructJob(Compilation &C, const JobAction &JA, if (getToolChain().getDriver().CCCIsCXX()) getToolChain().AddCXXStdlibLibArgs(Args, CmdArgs); CmdArgs.push_back("-lgcc_s"); + CmdArgs.push_back("-lc"); if (!Args.hasArg(options::OPT_shared)) { CmdArgs.push_back("-lgcc"); - CmdArgs.push_back("-lc"); CmdArgs.push_back("-lm"); } } diff --git a/test/Driver/solaris-ld.c b/test/Driver/solaris-ld.c index 0e1b89ff4e..d871b592eb 100644 --- a/test/Driver/solaris-ld.c +++ b/test/Driver/solaris-ld.c @@ -14,3 +14,20 @@ // CHECK: "{{.*}}/usr/gcc/4.8/lib/gcc/sparc-sun-solaris2.11/4.8.2{{/|\\\\}}crtbegin.o" // CHECK: "{{.*}}/usr/gcc/4.8/lib/gcc/sparc-sun-solaris2.11/4.8.2{{/|\\\\}}crtend.o" // CHECK: "{{.*}}/usr/lib/crtn.o" +// CHECK "-lc" +// CHECK "-lgcc_s" +// CHECK "-lgcc" +// CHECK "-lm" + +// Check the right -l flags are present with -shared +// RUN: %clang -no-canonical-prefixes %s -### -o %t.o -shared 2>&1 \ +// RUN: --target=sparc-sun-solaris2.11 \ +// RUN: --gcc-toolchain="" \ +// RUN: --sysroot=%S/Inputs/sparc-sun-solaris2.11 \ +// RUN: | FileCheck --check-prefix=CHECK-SHARED %s + +// CHECK-SHARED: ld{{.*}}" +// CHECK-SHARED "-lc" +// CHECK-SHARED "-lgcc_s" +// CHECK-SHARED-NOT "-lgcc" +// CHECK-SHARED-NOT: "-lm" -- 2.50.1