Skip to content

Commit 5502bd6

Browse files
committed
[profile] Remove useless msync when dumping gcda files
Summary: According the mmap man page (https://man7.org/linux/man-pages/man2/mmap.2.html) is only required to precisely control updates, so we can safely remove it. Since gcda files are dumped just before to call exec** functions, dump need to be fast. On my computer, Firefox built with --coverage needs ~1min40 to display something and in removing msync it needs ~8s. Reviewers: void Subscribers: #sanitizers, marco-c, sylvestre.ledru Tags: #sanitizers Differential Revision: https://reviews.llvm.org/D81060
1 parent 36f22cd commit 5502bd6

File tree

1 file changed

+2
-7
lines changed

1 file changed

+2
-7
lines changed

compiler-rt/lib/profile/GCDAProfiling.c

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -303,16 +303,11 @@ static void unmap_file() {
303303

304304
mmap_handle = NULL;
305305
#else
306-
if (msync(write_buffer, file_size, MS_SYNC) == -1) {
306+
if (munmap(write_buffer, file_size) == -1) {
307307
int errnum = errno;
308-
fprintf(stderr, "profiling: %s: cannot msync: %s\n", filename,
308+
fprintf(stderr, "profiling: %s: cannot munmap: %s\n", filename,
309309
strerror(errnum));
310310
}
311-
312-
/* We explicitly ignore errors from unmapping because at this point the data
313-
* is written and we don't care.
314-
*/
315-
(void)munmap(write_buffer, file_size);
316311
#endif
317312

318313
write_buffer = NULL;

0 commit comments

Comments
 (0)