forked from OSchip/llvm-project
[profile] Test the exported symbol set for empty programs
Programs without any code in them should export the exact same set of symbols as programs with code, at least on Darwin. This is done to make text-based API verification possible for certain Darwin frameworks. llvm-svn: 326351
This commit is contained in:
parent
9a041a7522
commit
a4c56923d2
|
@ -1,7 +1,7 @@
|
|||
// REQUIRES: osx-ld64-live_support
|
||||
// REQUIRES: lto
|
||||
|
||||
// RUN: %clang_profgen=%t.profraw -fcoverage-mapping -mllvm -enable-name-compression=false -Wl,-dead_strip -o %t %s
|
||||
// RUN: %clang_profgen=%t.profraw -fcoverage-mapping -mllvm -enable-name-compression=false -DCODE=1 -Wl,-dead_strip -o %t %s
|
||||
// RUN: %run %t
|
||||
// RUN: llvm-profdata merge -o %t.profdata %t.profraw
|
||||
// RUN: llvm-profdata show --all-functions %t.profdata | FileCheck %s -check-prefix=PROF
|
||||
|
@ -10,7 +10,7 @@
|
|||
// RUN: otool -s __DATA __llvm_prf_names %t | FileCheck %s -check-prefix=PRF_NAMES
|
||||
// RUN: otool -s __DATA __llvm_prf_cnts %t | FileCheck %s -check-prefix=PRF_CNTS
|
||||
|
||||
// RUN: %clang_lto_profgen=%t.lto.profraw -fcoverage-mapping -mllvm -enable-name-compression=false -Wl,-dead_strip -flto -o %t.lto %s
|
||||
// RUN: %clang_lto_profgen=%t.lto.profraw -fcoverage-mapping -mllvm -enable-name-compression=false -DCODE=1 -Wl,-dead_strip -flto -o %t.lto %s
|
||||
// RUN: %run %t.lto
|
||||
// RUN: llvm-profdata merge -o %t.lto.profdata %t.lto.profraw
|
||||
// RUN: llvm-profdata show --all-functions %t.lto.profdata | FileCheck %s -check-prefix=PROF
|
||||
|
@ -22,12 +22,24 @@
|
|||
// Note: We expect foo() and some of the profiling data associated with it to
|
||||
// be dead-stripped.
|
||||
|
||||
// Note: When there is no code in a program, we expect to see the exact same
|
||||
// set of external functions provided by the profile runtime.
|
||||
|
||||
// RUN: %clang_profgen -fcoverage-mapping -Wl,-dead_strip -dynamiclib -o %t.nocode.dylib %s
|
||||
// RUN: nm -jgU %t.nocode.dylib > %t.nocode.syms
|
||||
// RUN: nm -jgU %t | grep -vE "main|foo|mh_execute_header" > %t.code.syms
|
||||
// RUN: diff %t.nocode.syms %t.code.syms
|
||||
|
||||
#ifdef CODE
|
||||
|
||||
// COV: [[@LINE+1]]{{ *}}|{{ *}}0|void foo()
|
||||
void foo() {}
|
||||
|
||||
// COV: [[@LINE+1]]{{ *}}|{{ *}}1|int main
|
||||
int main() { return 0; }
|
||||
|
||||
#endif // CODE
|
||||
|
||||
// NM-NOT: foo
|
||||
|
||||
// PROF: Counters:
|
||||
|
|
Loading…
Reference in New Issue