diff --git a/include/llbuild/Basic/Tracing.h b/include/llbuild/Basic/Tracing.h
index f344d3b..922fc1f 100644
--- a/include/llbuild/Basic/Tracing.h
+++ b/include/llbuild/Basic/Tracing.h
@@ -62,13 +62,13 @@
 /// An RAII type to define an individual tracing point.
 struct TracingPoint {
   const uint32_t kind;
-  const uint32_t arg1;
-  const uint32_t arg2;
-  const uint32_t arg3;
-  const uint32_t arg4;
+  const uint64_t arg1;
+  const uint64_t arg2;
+  const uint64_t arg3;
+  const uint64_t arg4;
 
-  TracingPoint(TraceEventKind kind, uint32_t arg1 = 0, uint32_t arg2 = 0,
-                uint32_t arg3 = 0, uint32_t arg4 = 0)
+  TracingPoint(TraceEventKind kind, uint64_t arg1 = 0, uint64_t arg2 = 0,
+                uint64_t arg3 = 0, uint64_t arg4 = 0)
     : kind(uint32_t(kind)), arg1(arg1), arg2(arg2), arg3(arg3), arg4(arg4)
   {
   }
@@ -81,13 +81,13 @@
 /// interval completion event.
 struct TracingInterval {
   const uint32_t kind;
-  uint32_t arg1;
-  uint32_t arg2;
-  uint32_t arg3;
-  uint32_t arg4;
+  uint64_t arg1;
+  uint64_t arg2;
+  uint64_t arg3;
+  uint64_t arg4;
 
-  TracingInterval(TraceEventKind kind, uint32_t arg1 = 0, uint32_t arg2 = 0,
-                  uint32_t arg3 = 0, uint32_t arg4 = 0)
+  TracingInterval(TraceEventKind kind, uint64_t arg1 = 0, uint64_t arg2 = 0,
+                  uint64_t arg3 = 0, uint64_t arg4 = 0)
       : kind(uint32_t(kind)), arg1(arg1), arg2(arg2), arg3(arg3), arg4(arg4)
   {
   }
@@ -97,10 +97,10 @@
   // MARK: Utility Wrappers
   
   TracingInterval(EngineTaskCallbackKind arg1)
-    : TracingInterval(TraceEventKind::EngineTaskCallback, uint32_t(arg1)) {}
+    : TracingInterval(TraceEventKind::EngineTaskCallback, uint64_t(arg1)) {}
 
   TracingInterval(EngineQueueItemKind arg1)
-    : TracingInterval(TraceEventKind::EngineQueueItemEvent, uint32_t(arg1)) {}
+    : TracingInterval(TraceEventKind::EngineQueueItemEvent, uint64_t(arg1)) {}
 };
 
 /// An RAII type to define a string.
@@ -109,12 +109,12 @@
 
   /// The integer code for the string, which can be provided to a trace point or
   /// interval.
-  const uint32_t value;
+  const uint64_t value;
 
   TracingString(TraceEventKind kind, llvm::StringRef str)
       : kind(uint32_t(kind)), value(0) {}
 
-  operator uint32_t() const { return value; }
+  operator uint64_t() const { return value; }
 };
   
 }
diff --git a/llbuild.xcodeproj/project.pbxproj b/llbuild.xcodeproj/project.pbxproj
index cae7421..f1e92b1 100644
--- a/llbuild.xcodeproj/project.pbxproj
+++ b/llbuild.xcodeproj/project.pbxproj
@@ -761,6 +761,8 @@
 		E17C29F21B5AC18C00C12DA9 /* install-user-sphinx.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = "install-user-sphinx.sh"; sourceTree = "<group>"; };
 		E17C29F31B5AC2A700C12DA9 /* build-sphinx-docs.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = "build-sphinx-docs.sh"; sourceTree = "<group>"; };
 		E18043391A00129400662FE7 /* install-user-lit.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "install-user-lit.sh"; sourceTree = "<group>"; };
+		E181D1441F7D90AC0015286C /* Stat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Stat.h; sourceTree = "<group>"; };
+		E181D1451F7D90AC0015286C /* Tracing.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Tracing.h; sourceTree = "<group>"; };
 		E182BE111ABA2B8D001840AD /* Compiler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Compiler.h; sourceTree = "<group>"; };
 		E192E92E1E30014E00122F17 /* BuildValueTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BuildValueTest.cpp; sourceTree = "<group>"; };
 		E19C3FD51B98C1A70035E1AA /* tests */ = {isa = PBXFileReference; lastKnownFileType = folder; path = tests; sourceTree = "<group>"; };
@@ -1429,6 +1431,8 @@
 				9D2589301E3820E3006C76F4 /* PlatformUtility.h */,
 				E147DEFC1BA81D0E0032D08E /* SerialQueue.h */,
 				E17440C11CE192E30070A30C /* ShellUtility.h */,
+				E181D1441F7D90AC0015286C /* Stat.h */,
+				E181D1451F7D90AC0015286C /* Tracing.h */,
 				E1A2245119F997D40059043E /* Version.h */,
 			);
 			name = Headers;
