forked from OSchip/llvm-project
Link in profile library on Linux using --whole-archive
llvm-svn: 205012
This commit is contained in:
parent
03b1bc7a2a
commit
4a37d60aca
|
@ -1817,18 +1817,16 @@ static void addProfileRT(
|
||||||
Args.hasArg(options::OPT_coverage)))
|
Args.hasArg(options::OPT_coverage)))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// Pull in runtime for -fprofile-inst-generate. This is required since there
|
|
||||||
// are no calls to the runtime in the code.
|
|
||||||
if (Args.hasArg(options::OPT_fprofile_instr_generate)) {
|
|
||||||
CmdArgs.push_back("-u");
|
|
||||||
CmdArgs.push_back("___llvm_profile_runtime");
|
|
||||||
}
|
|
||||||
|
|
||||||
SmallString<128> LibProfile = getCompilerRTLibDir(TC);
|
SmallString<128> LibProfile = getCompilerRTLibDir(TC);
|
||||||
llvm::sys::path::append(LibProfile,
|
llvm::sys::path::append(LibProfile,
|
||||||
Twine("libclang_rt.profile-") + getArchNameForCompilerRTLib(TC) + ".a");
|
Twine("libclang_rt.profile-") + getArchNameForCompilerRTLib(TC) + ".a");
|
||||||
|
|
||||||
CmdArgs.push_back(Args.MakeArgString(LibProfile));
|
SmallVector<const char *, 3> LibProfileArgs;
|
||||||
|
LibProfileArgs.push_back("-whole-archive");
|
||||||
|
LibProfileArgs.push_back(Args.MakeArgString(LibProfile));
|
||||||
|
LibProfileArgs.push_back("-no-whole-archive");
|
||||||
|
|
||||||
|
CmdArgs.insert(CmdArgs.end(), LibProfileArgs.begin(), LibProfileArgs.end());
|
||||||
}
|
}
|
||||||
|
|
||||||
static void addSanitizerRTLinkFlags(
|
static void addSanitizerRTLinkFlags(
|
||||||
|
|
|
@ -16,8 +16,11 @@
|
||||||
// RUN: | FileCheck --check-prefix=CHECK-LINUX-X86-64 %s
|
// RUN: | FileCheck --check-prefix=CHECK-LINUX-X86-64 %s
|
||||||
//
|
//
|
||||||
// CHECK-LINUX-X86-64: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
|
// CHECK-LINUX-X86-64: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
|
||||||
// CHECK-LINUX-X86-64: "{{.*}}/Inputs/resource_dir{{/|\\\\}}lib{{/|\\\\}}linux{{/|\\\\}}libclang_rt.profile-x86_64.a" {{.*}} "-lc"
|
// CHECK-LINUX-X86-64: "-whole-archive"
|
||||||
//
|
// CHECK-LINUX-X86-64: "{{.*}}/Inputs/resource_dir{{/|\\\\}}lib{{/|\\\\}}linux{{/|\\\\}}libclang_rt.profile-x86_64.a"
|
||||||
|
// CHECK-LINUX-X86-64: "-no-whole-archive"
|
||||||
|
// CHECK-LINUX-X86-64: "-lc"
|
||||||
|
|
||||||
// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
|
// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
|
||||||
// RUN: -target x86_64-unknown-freebsd --coverage \
|
// RUN: -target x86_64-unknown-freebsd --coverage \
|
||||||
// RUN: -resource-dir=%S/Inputs/resource_dir \
|
// RUN: -resource-dir=%S/Inputs/resource_dir \
|
||||||
|
|
Loading…
Reference in New Issue