summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVedant Kumar <vsk@apple.com>2016-10-18 00:02:28 +0000
committerVedant Kumar <vsk@apple.com>2016-10-18 00:02:28 +0000
commit6ff82bd0ec7ddfd991cb8e57e2dfbf23f068c992 (patch)
tree21a26cc8243ba3ce2a4d77b36543c5fcdc63fb2d
parent981da8d37bab92f306a86bd8b348c7e6b3797c08 (diff)
downloadbcm5719-llvm-6ff82bd0ec7ddfd991cb8e57e2dfbf23f068c992.tar.gz
bcm5719-llvm-6ff82bd0ec7ddfd991cb8e57e2dfbf23f068c992.zip
[profile] Mark lprofCurFilename as COMPILER_RT_WEAK
This makes __llvm_profile_set_filename() work across dylib boundaries on Darwin. This functionality was originally meant to work on all platforms, but was moved to a Linux-only directory with r272404. The root cause of the test failure on Darwin was that lprofCurFilename was not marked weak. Each dylib maintained its own copy of the variable due to the two-level namespace. Tested with check-profile (on Darwin). I don't expect this to regress other platforms. Differential Revision: https://reviews.llvm.org/D25707 llvm-svn: 284440
-rw-r--r--compiler-rt/lib/profile/InstrProfilingFile.c3
-rw-r--r--compiler-rt/test/profile/instrprof-set-filename-shared.test (renamed from compiler-rt/test/profile/Linux/instrprof-set-filename-shared.test)4
2 files changed, 4 insertions, 3 deletions
diff --git a/compiler-rt/lib/profile/InstrProfilingFile.c b/compiler-rt/lib/profile/InstrProfilingFile.c
index e264f63886b..44f5d9ab859 100644
--- a/compiler-rt/lib/profile/InstrProfilingFile.c
+++ b/compiler-rt/lib/profile/InstrProfilingFile.c
@@ -82,7 +82,8 @@ typedef struct lprofFilename {
ProfileNameSpecifier PNS;
} lprofFilename;
-lprofFilename lprofCurFilename = {0, 0, 0, {0}, {0}, 0, 0, 0, PNS_unknown};
+COMPILER_RT_WEAK lprofFilename lprofCurFilename = {0, 0, 0, {0}, {0},
+ 0, 0, 0, PNS_unknown};
int getpid(void);
static int getCurFilenameLength();
diff --git a/compiler-rt/test/profile/Linux/instrprof-set-filename-shared.test b/compiler-rt/test/profile/instrprof-set-filename-shared.test
index 29e6713289d..afcb4b4fd2d 100644
--- a/compiler-rt/test/profile/Linux/instrprof-set-filename-shared.test
+++ b/compiler-rt/test/profile/instrprof-set-filename-shared.test
@@ -1,7 +1,7 @@
# Test that __llvm_profile_set_filename is honored by shared libary too.
RUN: mkdir -p %t.d
-RUN: %clang_profgen=%t.shared.profraw -fPIC -shared -o %t.d/t.shared %S/../Inputs/instrprof-dlopen-func.c
-RUN: %clang_profgen -DCALL_SHARED -o %t.m -O3 -rpath %t.d %t.d/t.shared %S/../instrprof-set-filename.c
+RUN: %clang_profgen=%t.shared.profraw -fPIC -shared -o %t.d/t.shared %S/Inputs/instrprof-dlopen-func.c
+RUN: %clang_profgen -DCALL_SHARED -o %t.m -O3 -rpath %t.d %t.d/t.shared %S/instrprof-set-filename.c
RUN: %run %t.m %t.main.profraw
RUN: llvm-profdata show %t.main.profraw | FileCheck --check-prefix=SHARED %s
OpenPOWER on IntegriCloud