diff options
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/XRay/RecordInitializer.cpp | 9 | ||||
-rw-r--r-- | llvm/lib/XRay/RecordPrinter.cpp | 2 |
2 files changed, 9 insertions, 2 deletions
diff --git a/llvm/lib/XRay/RecordInitializer.cpp b/llvm/lib/XRay/RecordInitializer.cpp index de4e68bc966..7f9fd4c9627 100644 --- a/llvm/lib/XRay/RecordInitializer.cpp +++ b/llvm/lib/XRay/RecordInitializer.cpp @@ -61,13 +61,20 @@ Error RecordInitializer::visit(NewCPUIDRecord &R) { return createStringError(std::make_error_code(std::errc::bad_address), "Invalid offset for a new cpu id record (%d).", OffsetPtr); + auto BeginOffset = OffsetPtr; auto PreReadOffset = OffsetPtr; R.CPUId = E.getU16(&OffsetPtr); if (OffsetPtr == PreReadOffset) return createStringError(std::make_error_code(std::errc::bad_message), "Cannot read CPU id at offset %d.", OffsetPtr); - OffsetPtr += MetadataRecord::kMetadataBodySize - (OffsetPtr - PreReadOffset); + PreReadOffset = OffsetPtr; + R.TSC = E.getU64(&OffsetPtr); + if (OffsetPtr == PreReadOffset) + return createStringError(std::make_error_code(std::errc::bad_message), + "Cannot read CPU TSC at offset %d.", OffsetPtr); + + OffsetPtr += MetadataRecord::kMetadataBodySize - (OffsetPtr - BeginOffset); return Error::success(); } diff --git a/llvm/lib/XRay/RecordPrinter.cpp b/llvm/lib/XRay/RecordPrinter.cpp index d2943e4bad3..09b25ddba25 100644 --- a/llvm/lib/XRay/RecordPrinter.cpp +++ b/llvm/lib/XRay/RecordPrinter.cpp @@ -25,7 +25,7 @@ Error RecordPrinter::visit(WallclockRecord &R) { } Error RecordPrinter::visit(NewCPUIDRecord &R) { - OS << formatv("<CPU ID: {0}>", R.cpuid()) << Delim; + OS << formatv("<CPU: id = {0}, tsc = {1}>", R.cpuid(), R.tsc()) << Delim; return Error::success(); } |