From: Petr Hosek Date: Fri, 14 Dec 2018 05:56:20 +0000 (+0000) Subject: [llvm-xray] Store offset pointers in temporaries X-Git-Tag: llvmorg-8.0.0-rc1~2132 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=27e2f2014aa659dac5fb999a96ba57faa32aaa61;p=platform%2Fupstream%2Fllvm.git [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 --- diff --git a/llvm/lib/XRay/InstrumentationMap.cpp b/llvm/lib/XRay/InstrumentationMap.cpp index d33fb4a..e90446c 100644 --- a/llvm/lib/XRay/InstrumentationMap.cpp +++ b/llvm/lib/XRay/InstrumentationMap.cpp @@ -137,8 +137,10 @@ loadObj(StringRef Filename, object::OwningBinary &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,