[llvm] r341241 - [XRay] Use correct type for PID records

Dean Michael Berris via llvm-commits llvm-commits at lists.llvm.org
Fri Aug 31 12:32:46 PDT 2018


Author: dberris
Date: Fri Aug 31 12:32:46 2018
New Revision: 341241

URL: http://llvm.org/viewvc/llvm-project?rev=341241&view=rev
Log:
[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.

Modified:
    llvm/trunk/include/llvm/XRay/FDRRecords.h
    llvm/trunk/lib/XRay/Trace.cpp
    llvm/trunk/unittests/XRay/FDRTraceWriterTest.cpp

Modified: llvm/trunk/include/llvm/XRay/FDRRecords.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/XRay/FDRRecords.h?rev=341241&r1=341240&r2=341241&view=diff
==============================================================================
--- llvm/trunk/include/llvm/XRay/FDRRecords.h (original)
+++ llvm/trunk/include/llvm/XRay/FDRRecords.h Fri Aug 31 12:32:46 2018
@@ -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;
 };

Modified: llvm/trunk/lib/XRay/Trace.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/XRay/Trace.cpp?rev=341241&r1=341240&r2=341241&view=diff
==============================================================================
--- llvm/trunk/lib/XRay/Trace.cpp (original)
+++ llvm/trunk/lib/XRay/Trace.cpp Fri Aug 31 12:32:46 2018
@@ -396,7 +396,7 @@ Error processFDRPidRecord(FDRState &Stat
             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),

Modified: llvm/trunk/unittests/XRay/FDRTraceWriterTest.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/XRay/FDRTraceWriterTest.cpp?rev=341241&r1=341240&r2=341241&view=diff
==============================================================================
--- llvm/trunk/unittests/XRay/FDRTraceWriterTest.cpp (original)
+++ llvm/trunk/unittests/XRay/FDRTraceWriterTest.cpp Fri Aug 31 12:32:46 2018
@@ -63,15 +63,15 @@ TEST(FDRTraceWriterTest, WriteToStringBu
   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, WriteToStringBu
   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, WriteToStringBu
   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))));
 }




More information about the llvm-commits mailing list