diff options
author | Dean Michael Berris <dberris@google.com> | 2018-08-31 19:11:19 +0000 |
---|---|---|
committer | Dean Michael Berris <dberris@google.com> | 2018-08-31 19:11:19 +0000 |
commit | 250c56d12788cc4d57c19fc65052ae052dd830d7 (patch) | |
tree | 2f2347e36fe183e2c8423b8ebb34c377c6633241 /llvm/lib/XRay/Trace.cpp | |
parent | b1c981304257ecb8d273ecb79b121b1c1f86fbfb (diff) | |
download | bcm5719-llvm-250c56d12788cc4d57c19fc65052ae052dd830d7.tar.gz bcm5719-llvm-250c56d12788cc4d57c19fc65052ae052dd830d7.zip |
[XRay] Use correct type for thread ID parsing
Previously we were reading only a uint16_t when we really needed to read
an int32_t from the log.
llvm-svn: 341239
Diffstat (limited to 'llvm/lib/XRay/Trace.cpp')
-rw-r--r-- | llvm/lib/XRay/Trace.cpp | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/llvm/lib/XRay/Trace.cpp b/llvm/lib/XRay/Trace.cpp index 69ac825f519..f92385ab4c1 100644 --- a/llvm/lib/XRay/Trace.cpp +++ b/llvm/lib/XRay/Trace.cpp @@ -208,7 +208,7 @@ Error loadNaiveFormatLog(StringRef Data, bool IsLittleEndian, /// encoded TSC values into absolute encodings on each record. struct FDRState { uint16_t CPUId; - uint16_t ThreadId; + int32_t ThreadId; int32_t ProcessId; uint64_t BaseTSC; @@ -268,7 +268,7 @@ Error processFDRNewBufferRecord(FDRState &State, DataExtractor &RecordExtractor, fdrStateToTwine(State.Expects), OffsetPtr); auto PreReadOffset = OffsetPtr; - State.ThreadId = RecordExtractor.getU16(&OffsetPtr); + State.ThreadId = RecordExtractor.getSigned(&OffsetPtr, 4); if (OffsetPtr == PreReadOffset) return createStringError( std::make_error_code(std::errc::executable_format_error), @@ -277,7 +277,7 @@ Error processFDRNewBufferRecord(FDRState &State, DataExtractor &RecordExtractor, // Advance the offset pointer by enough bytes representing the remaining // padding in a metadata record. - OffsetPtr += kFDRMetadataBodySize - 2; + OffsetPtr += kFDRMetadataBodySize - 4; assert(OffsetPtr - PreReadOffset == kFDRMetadataBodySize); return Error::success(); } |