From cbbd2fd8d62a37d19e7ca594a582354d87d9cfd1 Mon Sep 17 00:00:00 2001 From: Alexey Samsonov Date: Fri, 14 Nov 2014 00:16:26 +0000 Subject: [PATCH] [Profile] Always build profile runtime library with -fPIC. This change removes libclang_rt.profile-pic-.a version of profile runtime. Instead, it's sufficient to always build libclang_rt.profile-.a with -fPIC, as it can be linked into both executables and shared objects. llvm-svn: 221952 --- clang/lib/Driver/Tools.cpp | 12 +++--------- clang/test/Driver/instrprof-ld.c | 6 +++--- compiler-rt/lib/profile/CMakeLists.txt | 6 +----- 3 files changed, 7 insertions(+), 17 deletions(-) diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp index 042d7b1a0aaf..a648d61707b1 100644 --- a/clang/lib/Driver/Tools.cpp +++ b/clang/lib/Driver/Tools.cpp @@ -2181,16 +2181,10 @@ static void addProfileRT( Args.hasArg(options::OPT_coverage))) return; - // -fprofile-instr-generate requires position-independent code to build with - // shared objects. Link against the right archive. - const char *Lib = "libclang_rt.profile-"; - if (Args.hasArg(options::OPT_fprofile_instr_generate) && - Args.hasArg(options::OPT_shared)) - Lib = "libclang_rt.profile-pic-"; - SmallString<128> LibProfile = getCompilerRTLibDir(TC); - llvm::sys::path::append(LibProfile, - Twine(Lib) + getArchNameForCompilerRTLib(TC) + ".a"); + llvm::sys::path::append(LibProfile, Twine("libclang_rt.profile-") + + getArchNameForCompilerRTLib(TC) + + ".a"); CmdArgs.push_back(Args.MakeArgString(LibProfile)); } diff --git a/clang/test/Driver/instrprof-ld.c b/clang/test/Driver/instrprof-ld.c index f70ae474d0db..f16fa8f0ed34 100644 --- a/clang/test/Driver/instrprof-ld.c +++ b/clang/test/Driver/instrprof-ld.c @@ -35,7 +35,7 @@ // RUN: | FileCheck --check-prefix=CHECK-LINUX-I386-SHARED %s // // CHECK-LINUX-I386-SHARED: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}" -// CHECK-LINUX-I386-SHARED: "{{.*}}/Inputs/resource_dir{{/|\\\\}}lib{{/|\\\\}}linux{{/|\\\\}}libclang_rt.profile-pic-i386.a" {{.*}} "-lc" +// CHECK-LINUX-I386-SHARED: "{{.*}}/Inputs/resource_dir{{/|\\\\}}lib{{/|\\\\}}linux{{/|\\\\}}libclang_rt.profile-i386.a" {{.*}} "-lc" // // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ // RUN: -shared \ @@ -45,7 +45,7 @@ // RUN: | FileCheck --check-prefix=CHECK-LINUX-X86-64-SHARED %s // // CHECK-LINUX-X86-64-SHARED: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}" -// CHECK-LINUX-X86-64-SHARED: "{{.*}}/Inputs/resource_dir{{/|\\\\}}lib{{/|\\\\}}linux{{/|\\\\}}libclang_rt.profile-pic-x86_64.a" {{.*}} "-lc" +// CHECK-LINUX-X86-64-SHARED: "{{.*}}/Inputs/resource_dir{{/|\\\\}}lib{{/|\\\\}}linux{{/|\\\\}}libclang_rt.profile-x86_64.a" {{.*}} "-lc" // // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ // RUN: -shared \ @@ -55,4 +55,4 @@ // RUN: | FileCheck --check-prefix=CHECK-FREEBSD-X86-64-SHARED %s // // CHECK-FREEBSD-X86-64-SHARED: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}" -// CHECK-FREEBSD-X86-64-SHARED: "{{.*}}/Inputs/resource_dir{{/|\\\\}}lib{{/|\\\\}}freebsd{{/|\\\\}}libclang_rt.profile-pic-x86_64.a" +// CHECK-FREEBSD-X86-64-SHARED: "{{.*}}/Inputs/resource_dir{{/|\\\\}}lib{{/|\\\\}}freebsd{{/|\\\\}}libclang_rt.profile-x86_64.a" diff --git a/compiler-rt/lib/profile/CMakeLists.txt b/compiler-rt/lib/profile/CMakeLists.txt index ea4712d8993b..420d7660ee36 100644 --- a/compiler-rt/lib/profile/CMakeLists.txt +++ b/compiler-rt/lib/profile/CMakeLists.txt @@ -17,13 +17,9 @@ if(APPLE) else() foreach(arch ${PROFILE_SUPPORTED_ARCH}) add_compiler_rt_runtime(clang_rt.profile-${arch} ${arch} STATIC - SOURCES ${PROFILE_SOURCES}) - add_dependencies(profile clang_rt.profile-${arch}) - - add_compiler_rt_runtime(clang_rt.profile-pic-${arch} ${arch} STATIC CFLAGS -fPIC SOURCES ${PROFILE_SOURCES}) - add_dependencies(profile clang_rt.profile-pic-${arch}) + add_dependencies(profile clang_rt.profile-${arch}) endforeach() endif()