[compiler-rt] r326351 - [profile] Test the exported symbol set for empty programs

Vedant Kumar via llvm-commits llvm-commits at lists.llvm.org
Wed Feb 28 11:00:16 PST 2018


Author: vedantk
Date: Wed Feb 28 11:00:16 2018
New Revision: 326351

URL: http://llvm.org/viewvc/llvm-project?rev=326351&view=rev
Log:
[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.

Modified:
    compiler-rt/trunk/test/profile/instrprof-darwin-dead-strip.c

Modified: compiler-rt/trunk/test/profile/instrprof-darwin-dead-strip.c
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/profile/instrprof-darwin-dead-strip.c?rev=326351&r1=326350&r2=326351&view=diff
==============================================================================
--- compiler-rt/trunk/test/profile/instrprof-darwin-dead-strip.c (original)
+++ compiler-rt/trunk/test/profile/instrprof-darwin-dead-strip.c Wed Feb 28 11:00:16 2018
@@ -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:




More information about the llvm-commits mailing list