summaryrefslogtreecommitdiffstats
path: root/llvm/lib/XRay/Trace.cpp
diff options
context:
space:
mode:
authorDean Michael Berris <dberris@google.com>2018-08-31 19:11:19 +0000
committerDean Michael Berris <dberris@google.com>2018-08-31 19:11:19 +0000
commit250c56d12788cc4d57c19fc65052ae052dd830d7 (patch)
tree2f2347e36fe183e2c8423b8ebb34c377c6633241 /llvm/lib/XRay/Trace.cpp
parentb1c981304257ecb8d273ecb79b121b1c1f86fbfb (diff)
downloadbcm5719-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.cpp6
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();
}
OpenPOWER on IntegriCloud