[PATCH] D55689: [llvm-xray] Store offset pointers in temporaries

Petr Hosek via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Dec 13 20:12:51 PST 2018


phosek created this revision.
phosek added reviewers: dberris, MaskRay.
Herald added subscribers: llvm-commits, hiraditya.

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


Repository:
  rL LLVM

https://reviews.llvm.org/D55689

Files:
  llvm/lib/XRay/InstrumentationMap.cpp


Index: llvm/lib/XRay/InstrumentationMap.cpp
===================================================================
--- llvm/lib/XRay/InstrumentationMap.cpp
+++ llvm/lib/XRay/InstrumentationMap.cpp
@@ -137,8 +137,10 @@
     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,


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D55689.178172.patch
Type: text/x-patch
Size: 862 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20181214/e847f9c7/attachment.bin>


More information about the llvm-commits mailing list