summaryrefslogtreecommitdiff
path: root/lib/profile/InstrProfiling.c
diff options
context:
space:
mode:
authorDuncan P. N. Exon Smith <dexonsmith@apple.com>2014-03-23 03:38:05 +0000
committerDuncan P. N. Exon Smith <dexonsmith@apple.com>2014-03-23 03:38:05 +0000
commitd00c9beebfccb89fda8ac295e2909d57843fe313 (patch)
tree7f74e2355ed19b34176934f03696d0f08be8bf0a /lib/profile/InstrProfiling.c
parente41aa24fe9db576a911cc2fe6f1a42637d3ac043 (diff)
InstrProf: Indicate pointer size in raw profile
Since the profile can come from 32-bit machines, the reader needs to check the pointer size. Change the magic number to facilitate this. <rdar://problem/16400648> git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@204556 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/profile/InstrProfiling.c')
-rw-r--r--lib/profile/InstrProfiling.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/lib/profile/InstrProfiling.c b/lib/profile/InstrProfiling.c
index 970907c40..123dd0d3b 100644
--- a/lib/profile/InstrProfiling.c
+++ b/lib/profile/InstrProfiling.c
@@ -14,11 +14,13 @@ uint64_t __llvm_profile_get_magic(void) {
/* Magic number to detect file format and endianness.
*
* Use 255 at one end, since no UTF-8 file can use that character. Avoid 0,
- * so that utilities like strings doesn't grab it as a string. 129 is high
- * enough to be interesting.
+ * so that utilities, like strings, don't grab it as a string. 129 is also
+ * invalid UTF-8, and high enough to be interesting.
*
- * Use "lprofr" in the centre to stand for "LLVM Profile Raw".
+ * Use "lprofr" in the centre to stand for "LLVM Profile Raw", or "lprofR"
+ * for 32-bit platforms.
*/
+ unsigned char R = sizeof(void *) == sizeof(uint64_t) ? 'r' : 'R';
return
(uint64_t)255 << 56 |
(uint64_t)'l' << 48 |
@@ -26,7 +28,7 @@ uint64_t __llvm_profile_get_magic(void) {
(uint64_t)'r' << 32 |
(uint64_t)'o' << 24 |
(uint64_t)'f' << 16 |
- (uint64_t)'r' << 8 |
+ (uint64_t) R << 8 |
(uint64_t)129;
}