summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--SDKs/darwin/usr/include/stdio.h1
-rw-r--r--SDKs/linux/usr/include/stdio.h1
-rw-r--r--lib/profile/GCDAProfiling.c3
3 files changed, 5 insertions, 0 deletions
diff --git a/SDKs/darwin/usr/include/stdio.h b/SDKs/darwin/usr/include/stdio.h
index 63b10a86b..5bbd8a55b 100644
--- a/SDKs/darwin/usr/include/stdio.h
+++ b/SDKs/darwin/usr/include/stdio.h
@@ -74,6 +74,7 @@ size_t fwrite(const void * __restrict, size_t, size_t, FILE * __restrict)
size_t fread(void * __restrict, size_t, size_t, FILE * __restrict);
long ftell(FILE *);
int fseek(FILE *, long, int);
+void setbuf(FILE * __restrict, char * __restrict);
int snprintf(char * __restrict, size_t, const char * __restrict, ...);
diff --git a/SDKs/linux/usr/include/stdio.h b/SDKs/linux/usr/include/stdio.h
index 7c258d2ac..0ca10fabe 100644
--- a/SDKs/linux/usr/include/stdio.h
+++ b/SDKs/linux/usr/include/stdio.h
@@ -38,5 +38,6 @@ extern size_t fwrite(const void * restrict, size_t, size_t, FILE * restrict);
extern size_t fread(void * restrict, size_t, size_t, FILE * restrict);
extern long ftell(FILE *);
extern int fseek(FILE *, long, int);
+extern void setbuf(FILE * restrict, char * restrict);
#endif /* __STDIO_H__ */
diff --git a/lib/profile/GCDAProfiling.c b/lib/profile/GCDAProfiling.c
index 653f641f7..3e0fff25f 100644
--- a/lib/profile/GCDAProfiling.c
+++ b/lib/profile/GCDAProfiling.c
@@ -194,6 +194,9 @@ void llvm_gcda_start_file(const char *orig_filename, const char version[4]) {
}
}
+ /* Make the file I/O unbuffered. */
+ setbuf(output_file, (char*)NULL);
+
/* gcda file, version, stamp LLVM. */
fwrite("adcg", 4, 1, output_file);
fwrite(version, 4, 1, output_file);