summaryrefslogtreecommitdiffstats
path: root/llvm/lib/XRay/InstrumentationMap.cpp
diff options
context:
space:
mode:
authorPetr Hosek <phosek@chromium.org>2018-12-14 05:56:20 +0000
committerPetr Hosek <phosek@chromium.org>2018-12-14 05:56:20 +0000
commit27e2f2014aa659dac5fb999a96ba57faa32aaa61 (patch)
tree48acfaf94fb98913c42ca6acc1436a31451e816b /llvm/lib/XRay/InstrumentationMap.cpp
parentf03e8023b70b2256fef55802d5e3832d70c6a080 (diff)
downloadbcm5719-llvm-27e2f2014aa659dac5fb999a96ba57faa32aaa61.tar.gz
bcm5719-llvm-27e2f2014aa659dac5fb999a96ba57faa32aaa61.zip
[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 llvm-svn: 349129
Diffstat (limited to 'llvm/lib/XRay/InstrumentationMap.cpp')
-rw-r--r--llvm/lib/XRay/InstrumentationMap.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/llvm/lib/XRay/InstrumentationMap.cpp b/llvm/lib/XRay/InstrumentationMap.cpp
index d33fb4a2b80..e90446cc6b6 100644
--- a/llvm/lib/XRay/InstrumentationMap.cpp
+++ b/llvm/lib/XRay/InstrumentationMap.cpp
@@ -137,8 +137,10 @@ loadObj(StringRef Filename, object::OwningBinary<object::ObjectFile> &ObjFile,
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,
OpenPOWER on IntegriCloud