summaryrefslogtreecommitdiffstats
path: root/llvm/lib/ExecutionEngine
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/ExecutionEngine')
-rw-r--r--llvm/lib/ExecutionEngine/PerfJITEvents/PerfJITEventListener.cpp14
1 files changed, 10 insertions, 4 deletions
diff --git a/llvm/lib/ExecutionEngine/PerfJITEvents/PerfJITEventListener.cpp b/llvm/lib/ExecutionEngine/PerfJITEvents/PerfJITEventListener.cpp
index 892a10782ae..67c3887cc49 100644
--- a/llvm/lib/ExecutionEngine/PerfJITEvents/PerfJITEventListener.cpp
+++ b/llvm/lib/ExecutionEngine/PerfJITEvents/PerfJITEventListener.cpp
@@ -265,16 +265,22 @@ void PerfJITEventListener::notifyObjectLoaded(
consumeError(AddrOrErr.takeError());
continue;
}
- uint64_t Addr = *AddrOrErr;
uint64_t Size = P.second;
+ object::SectionedAddress Address;
+ Address.Address = *AddrOrErr;
+
+ uint64_t SectionIndex = object::SectionedAddress::UndefSection;
+ if (auto SectOrErr = Sym.getSection())
+ if (*SectOrErr != Obj.section_end())
+ SectionIndex = SectOrErr.get()->getIndex();
// According to spec debugging info has to come before loading the
// corresonding code load.
DILineInfoTable Lines = Context->getLineInfoForAddressRange(
- Addr, Size, FileLineInfoKind::AbsoluteFilePath);
+ {*AddrOrErr, SectionIndex}, Size, FileLineInfoKind::AbsoluteFilePath);
- NotifyDebug(Addr, Lines);
- NotifyCode(Name, Addr, Size);
+ NotifyDebug(*AddrOrErr, Lines);
+ NotifyCode(Name, *AddrOrErr, Size);
}
Dumpstream->flush();
OpenPOWER on IntegriCloud