[llvm] r349129 - [llvm-xray] Store offset pointers in temporaries

Petr Hosek via llvm-commits llvm-commits at lists.llvm.org
Thu Dec 13 21:56:20 PST 2018


Author: phosek
Date: Thu Dec 13 21:56:20 2018
New Revision: 349129

URL: http://llvm.org/viewvc/llvm-project?rev=349129&view=rev
Log:
[llvm-xray] Store offset pointers in temporaries

DataExtractor::getU64 modifies the OffsetPtr which also pass to
RelocateOrElse which breaks on Windows. This addresses the issue
introduced in r349120.

Differential Revision: https://reviews.llvm.org/D55689

Modified:
    llvm/trunk/lib/XRay/InstrumentationMap.cpp

Modified: llvm/trunk/lib/XRay/InstrumentationMap.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/XRay/InstrumentationMap.cpp?rev=349129&r1=349128&r2=349129&view=diff
==============================================================================
--- llvm/trunk/lib/XRay/InstrumentationMap.cpp (original)
+++ llvm/trunk/lib/XRay/InstrumentationMap.cpp Thu Dec 13 21:56:20 2018
@@ -137,8 +137,10 @@ loadObj(StringRef Filename, object::Owni
     Sleds.push_back({});
     auto &Entry = Sleds.back();
     uint32_t OffsetPtr = 0;
-    Entry.Address = RelocateOrElse(OffsetPtr, Extractor.getU64(&OffsetPtr));
-    Entry.Function = RelocateOrElse(OffsetPtr, Extractor.getU64(&OffsetPtr));
+    uint32_t AddrPtr = OffsetPtr;
+    Entry.Address = RelocateOrElse(AddrOff, Extractor.getU64(&OffsetPtr));
+    uint32_t FuncPtr = OffsetPtr;
+    Entry.Function = RelocateOrElse(FuncOff, Extractor.getU64(&OffsetPtr));
     auto Kind = Extractor.getU8(&OffsetPtr);
     static constexpr SledEntry::FunctionKinds Kinds[] = {
         SledEntry::FunctionKinds::ENTRY, SledEntry::FunctionKinds::EXIT,




More information about the llvm-commits mailing list