Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Hide some symbols to avoid a crash on shutdown when using code coverage
Summary: gcov / gcda-based profiling crashes when shared libraries are unloaded Patch by Benoit Belley and test by Marco Castelluccio for Firefox See https://bugs.llvm.org/show_bug.cgi?id=27224 & https://bugzilla.mozilla.org/show_bug.cgi?id=1401230 Reviewers: davidxl, rnk, void Subscribers: jessicah, marco-c, belleyb, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D38124 llvm-svn: 321703
- Loading branch information
Showing
3 changed files
with
45 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
26 changes: 26 additions & 0 deletions
26
compiler-rt/test/profile/Inputs/instrprof-dlopen-dlclose-main.c
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
#include <dlfcn.h> | ||
#include <stdio.h> | ||
#include <stdlib.h> | ||
|
||
int main(int argc, char *argv[]) { | ||
dlerror(); | ||
void *f1_handle = dlopen("func.shared", RTLD_LAZY | RTLD_GLOBAL); | ||
if (f1_handle == NULL) { | ||
fprintf(stderr, "unable to open 'func.shared': %s\n", dlerror()); | ||
return EXIT_FAILURE; | ||
} | ||
|
||
void *f2_handle = dlopen("func2.shared", RTLD_LAZY | RTLD_GLOBAL); | ||
if (f2_handle == NULL) { | ||
fprintf(stderr, "unable to open 'func2.shared': %s\n", dlerror()); | ||
return EXIT_FAILURE; | ||
} | ||
|
||
if (dlclose(f2_handle) != 0) { | ||
fprintf(stderr, "unable to close 'func2.shared': %s\n", dlerror()); | ||
return EXIT_FAILURE; | ||
} | ||
|
||
return EXIT_SUCCESS; | ||
} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
RUN: mkdir -p %t.d | ||
RUN: %clang --coverage -o %t.d/func.shared -fPIC -shared %S/Inputs/instrprof-dlopen-func.c | ||
RUN: %clang --coverage -o %t.d/func2.shared -fPIC -shared %S/Inputs/instrprof-dlopen-func2.c | ||
RUN: %clang --coverage -o %t -fPIC -rpath %t.d %S/Inputs/instrprof-dlopen-dlclose-main.c | ||
|
||
RUN: %run %t |