summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDean Michael Berris <dberris@google.com>2018-08-31 19:32:46 +0000
committerDean Michael Berris <dberris@google.com>2018-08-31 19:32:46 +0000
commit4cae04873bcdb5eb629e4e71b36a0a87fe79083c (patch)
tree2ca697e1d698660765cdbf6a1b526d58a21a4b67
parentcc8f593d29abe99c2b049097c3c056809bfb0ddd (diff)
downloadbcm5719-llvm-4cae04873bcdb5eb629e4e71b36a0a87fe79083c.tar.gz
bcm5719-llvm-4cae04873bcdb5eb629e4e71b36a0a87fe79083c.zip
[XRay] Use correct type for PID records
Previously we've been reading and writing the wrong types which only worked in little endian implementations. This time we're writing the same typed values the runtime is using, and reading them appropriately as well. llvm-svn: 341241
-rw-r--r--llvm/include/llvm/XRay/FDRRecords.h6
-rw-r--r--llvm/lib/XRay/Trace.cpp2
-rw-r--r--llvm/unittests/XRay/FDRTraceWriterTest.cpp27
3 files changed, 17 insertions, 18 deletions
diff --git a/llvm/include/llvm/XRay/FDRRecords.h b/llvm/include/llvm/XRay/FDRRecords.h
index aaa098560c9..ab98a030129 100644
--- a/llvm/include/llvm/XRay/FDRRecords.h
+++ b/llvm/include/llvm/XRay/FDRRecords.h
@@ -185,16 +185,16 @@ public:
};
class PIDRecord : public MetadataRecord {
- uint64_t PID = 0;
+ int32_t PID = 0;
friend class RecordInitializer;
public:
PIDRecord() = default;
- explicit PIDRecord(uint64_t P) : MetadataRecord(), PID(P) {}
+ explicit PIDRecord(int32_t P) : MetadataRecord(), PID(P) {}
MetadataType metadataType() const override { return MetadataType::PIDEntry; }
- uint64_t pid() const { return PID; }
+ int32_t pid() const { return PID; }
Error apply(RecordVisitor &V) override;
};
diff --git a/llvm/lib/XRay/Trace.cpp b/llvm/lib/XRay/Trace.cpp
index f92385ab4c1..45b266d73f9 100644
--- a/llvm/lib/XRay/Trace.cpp
+++ b/llvm/lib/XRay/Trace.cpp
@@ -396,7 +396,7 @@ Error processFDRPidRecord(FDRState &State, DataExtractor &RecordExtractor,
fdrStateToTwine(State.Expects),
std::make_error_code(std::errc::executable_format_error));
auto PreReadOffset = OffsetPtr;
- State.ProcessId = RecordExtractor.getU32(&OffsetPtr);
+ State.ProcessId = RecordExtractor.getSigned(&OffsetPtr, 4);
if (OffsetPtr == PreReadOffset)
return createStringError(
std::make_error_code(std::errc::executable_format_error),
diff --git a/llvm/unittests/XRay/FDRTraceWriterTest.cpp b/llvm/unittests/XRay/FDRTraceWriterTest.cpp
index 215a2d21d11..e9a35fe67b6 100644
--- a/llvm/unittests/XRay/FDRTraceWriterTest.cpp
+++ b/llvm/unittests/XRay/FDRTraceWriterTest.cpp
@@ -63,15 +63,15 @@ TEST(FDRTraceWriterTest, WriteToStringBufferVersion3) {
auto &Trace = TraceOrErr.get();
ASSERT_THAT(Trace, Not(IsEmpty()));
- ASSERT_THAT(Trace, ElementsAre(Field(&XRayRecord::FuncId, Eq(1)),
+ EXPECT_THAT(Trace, ElementsAre(Field(&XRayRecord::FuncId, Eq(1)),
Field(&XRayRecord::FuncId, Eq(1))));
- ASSERT_THAT(Trace, ElementsAre(Field(&XRayRecord::TId, Eq(1u)),
+ EXPECT_THAT(Trace, ElementsAre(Field(&XRayRecord::TId, Eq(1u)),
Field(&XRayRecord::TId, Eq(1u))));
- ASSERT_THAT(Trace, ElementsAre(Field(&XRayRecord::PId, Eq(1u)),
+ EXPECT_THAT(Trace, ElementsAre(Field(&XRayRecord::PId, Eq(1u)),
Field(&XRayRecord::PId, Eq(1u))));
- ASSERT_THAT(Trace, ElementsAre(Field(&XRayRecord::CPU, Eq(1u)),
+ EXPECT_THAT(Trace, ElementsAre(Field(&XRayRecord::CPU, Eq(1u)),
Field(&XRayRecord::CPU, Eq(1u))));
- ASSERT_THAT(Trace,
+ EXPECT_THAT(Trace,
ElementsAre(Field(&XRayRecord::Type, Eq(RecordTypes::ENTER)),
Field(&XRayRecord::Type, Eq(RecordTypes::EXIT))));
}
@@ -108,13 +108,13 @@ TEST(FDRTraceWriterTest, WriteToStringBufferVersion2) {
auto &Trace = TraceOrErr.get();
ASSERT_THAT(Trace, Not(IsEmpty()));
- ASSERT_THAT(Trace, ElementsAre(Field(&XRayRecord::FuncId, Eq(1)),
+ EXPECT_THAT(Trace, ElementsAre(Field(&XRayRecord::FuncId, Eq(1)),
Field(&XRayRecord::FuncId, Eq(1))));
- ASSERT_THAT(Trace, ElementsAre(Field(&XRayRecord::TId, Eq(1u)),
+ EXPECT_THAT(Trace, ElementsAre(Field(&XRayRecord::TId, Eq(1u)),
Field(&XRayRecord::TId, Eq(1u))));
- ASSERT_THAT(Trace, ElementsAre(Field(&XRayRecord::CPU, Eq(1u)),
+ EXPECT_THAT(Trace, ElementsAre(Field(&XRayRecord::CPU, Eq(1u)),
Field(&XRayRecord::CPU, Eq(1u))));
- ASSERT_THAT(Trace,
+ EXPECT_THAT(Trace,
ElementsAre(Field(&XRayRecord::Type, Eq(RecordTypes::ENTER)),
Field(&XRayRecord::Type, Eq(RecordTypes::EXIT))));
}
@@ -167,14 +167,13 @@ TEST(FDRTraceWriterTest, WriteToStringBufferVersion1) {
auto &Trace = TraceOrErr.get();
ASSERT_THAT(Trace, Not(IsEmpty()));
- ASSERT_THAT(Trace, Not(IsEmpty()));
- ASSERT_THAT(Trace, ElementsAre(Field(&XRayRecord::FuncId, Eq(1)),
+ EXPECT_THAT(Trace, ElementsAre(Field(&XRayRecord::FuncId, Eq(1)),
Field(&XRayRecord::FuncId, Eq(1))));
- ASSERT_THAT(Trace, ElementsAre(Field(&XRayRecord::TId, Eq(1u)),
+ EXPECT_THAT(Trace, ElementsAre(Field(&XRayRecord::TId, Eq(1u)),
Field(&XRayRecord::TId, Eq(1u))));
- ASSERT_THAT(Trace, ElementsAre(Field(&XRayRecord::CPU, Eq(1u)),
+ EXPECT_THAT(Trace, ElementsAre(Field(&XRayRecord::CPU, Eq(1u)),
Field(&XRayRecord::CPU, Eq(1u))));
- ASSERT_THAT(Trace,
+ EXPECT_THAT(Trace,
ElementsAre(Field(&XRayRecord::Type, Eq(RecordTypes::ENTER)),
Field(&XRayRecord::Type, Eq(RecordTypes::EXIT))));
}
OpenPOWER on IntegriCloud