diff options
author | Yuchen Wu <yuchenericwu@hotmail.com> | 2013-11-20 04:14:48 +0000 |
---|---|---|
committer | Yuchen Wu <yuchenericwu@hotmail.com> | 2013-11-20 04:14:48 +0000 |
commit | bae50baf96cfc9b03650d92c60f7c612c8be8b54 (patch) | |
tree | 0cd9b220a5badc2f0bb13a32983e59746793cf3f /lib/profile/GCDAProfiling.c | |
parent | 6a7d6c7fecf2cd9447edd7b88973f0ea79684453 (diff) |
compiler-rt: Support for file checksum in GCDAProfiling.cpp.
Takes file checksum as an argument to write to .gcda file.
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@195190 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/profile/GCDAProfiling.c')
-rw-r--r-- | lib/profile/GCDAProfiling.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/lib/profile/GCDAProfiling.c b/lib/profile/GCDAProfiling.c index 7edf6829b..5e667162e 100644 --- a/lib/profile/GCDAProfiling.c +++ b/lib/profile/GCDAProfiling.c @@ -245,7 +245,8 @@ static void unmap_file() { * profiling enabled will emit to a different file. Only one file may be * started at a time. */ -void llvm_gcda_start_file(const char *orig_filename, const char version[4]) { +void llvm_gcda_start_file(const char *orig_filename, const char version[4], + uint32_t checksum) { const char *mode = "r+b"; filename = mangle_filename(orig_filename); @@ -293,10 +294,10 @@ void llvm_gcda_start_file(const char *orig_filename, const char version[4]) { } } - /* gcda file, version, stamp LLVM. */ + /* gcda file, version, stamp checksum. */ write_bytes("adcg", 4); write_bytes(version, 4); - write_bytes("MVLL", 4); + write_32bit_value(checksum); #ifdef DEBUG_GCDAPROFILING fprintf(stderr, "llvmgcda: [%s]\n", orig_filename); @@ -329,7 +330,8 @@ void llvm_gcda_increment_indirect_counter(uint32_t *predecessor, } void llvm_gcda_emit_function(uint32_t ident, const char *function_name, - uint8_t use_extra_checksum) { + uint8_t use_extra_checksum, + uint32_t cfg_checksum) { uint32_t len = 2; if (use_extra_checksum) @@ -348,7 +350,7 @@ void llvm_gcda_emit_function(uint32_t ident, const char *function_name, write_32bit_value(ident); write_32bit_value(0); if (use_extra_checksum) - write_32bit_value(0); + write_32bit_value(cfg_checksum); if (function_name) write_string(function_name); } |