Skip to content
This repository was archived by the owner on Apr 23, 2020. It is now read-only.

Commit 7170738

Browse files
committed
[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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@341239 91177308-0d34-0410-b5e6-96231b3b80d8
1 parent 8a0d68f commit 7170738

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

lib/XRay/Trace.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ Error loadNaiveFormatLog(StringRef Data, bool IsLittleEndian,
208208
/// encoded TSC values into absolute encodings on each record.
209209
struct FDRState {
210210
uint16_t CPUId;
211-
uint16_t ThreadId;
211+
int32_t ThreadId;
212212
int32_t ProcessId;
213213
uint64_t BaseTSC;
214214

@@ -268,7 +268,7 @@ Error processFDRNewBufferRecord(FDRState &State, DataExtractor &RecordExtractor,
268268
fdrStateToTwine(State.Expects), OffsetPtr);
269269

270270
auto PreReadOffset = OffsetPtr;
271-
State.ThreadId = RecordExtractor.getU16(&OffsetPtr);
271+
State.ThreadId = RecordExtractor.getSigned(&OffsetPtr, 4);
272272
if (OffsetPtr == PreReadOffset)
273273
return createStringError(
274274
std::make_error_code(std::errc::executable_format_error),
@@ -277,7 +277,7 @@ Error processFDRNewBufferRecord(FDRState &State, DataExtractor &RecordExtractor,
277277

278278
// Advance the offset pointer by enough bytes representing the remaining
279279
// padding in a metadata record.
280-
OffsetPtr += kFDRMetadataBodySize - 2;
280+
OffsetPtr += kFDRMetadataBodySize - 4;
281281
assert(OffsetPtr - PreReadOffset == kFDRMetadataBodySize);
282282
return Error::success();
283283
}

0 commit comments

Comments
 (0)