diff options
Diffstat (limited to 'include/llvm/ExecutionEngine/RuntimeDyld.h')
-rw-r--r-- | include/llvm/ExecutionEngine/RuntimeDyld.h | 32 |
1 files changed, 24 insertions, 8 deletions
diff --git a/include/llvm/ExecutionEngine/RuntimeDyld.h b/include/llvm/ExecutionEngine/RuntimeDyld.h index e419ee05e566..b2b4eba47074 100644 --- a/include/llvm/ExecutionEngine/RuntimeDyld.h +++ b/include/llvm/ExecutionEngine/RuntimeDyld.h @@ -1,9 +1,8 @@ //===- RuntimeDyld.h - Run-time dynamic linker for MC-JIT -------*- C++ -*-===// // -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // @@ -53,18 +52,19 @@ private: std::string ErrMsg; }; -class RuntimeDyldCheckerImpl; class RuntimeDyldImpl; class RuntimeDyld { - friend class RuntimeDyldCheckerImpl; - protected: // Change the address associated with a section when resolving relocations. // Any relocations already associated with the symbol will be re-resolved. void reassignSectionAddress(unsigned SectionID, uint64_t Addr); public: + using NotifyStubEmittedFunction = std::function<void( + StringRef FileName, StringRef SectionName, StringRef SymbolName, + unsigned SectionID, uint32_t StubOffset)>; + /// Information about the loaded object. class LoadedObjectInfo : public llvm::LoadedObjectInfo { friend class RuntimeDyldImpl; @@ -185,6 +185,9 @@ public: /// and resolve relocatons based on where they put it). void *getSymbolLocalAddress(StringRef Name) const; + /// Get the section ID for the section containing the given symbol. + unsigned getSymbolSectionID(StringRef Name) const; + /// Get the target address and flags for the named symbol. /// This address is the one used for relocation. JITEvaluatedSymbol getSymbol(StringRef Name) const; @@ -205,6 +208,19 @@ public: /// This is the address which will be used for relocation resolution. void mapSectionAddress(const void *LocalAddress, uint64_t TargetAddress); + /// Returns the section's working memory. + StringRef getSectionContent(unsigned SectionID) const; + + /// If the section was loaded, return the section's load address, + /// otherwise return None. + uint64_t getSectionLoadAddress(unsigned SectionID) const; + + /// Set the NotifyStubEmitted callback. This is used for debugging + /// purposes. A callback is made for each stub that is generated. + void setNotifyStubEmitted(NotifyStubEmittedFunction NotifyStubEmitted) { + this->NotifyStubEmitted = std::move(NotifyStubEmitted); + } + /// Register any EH frame sections that have been loaded but not previously /// registered with the memory manager. Note, RuntimeDyld is responsible /// for identifying the EH frame and calling the memory manager with the @@ -266,7 +282,7 @@ private: MemoryManager &MemMgr; JITSymbolResolver &Resolver; bool ProcessAllSections; - RuntimeDyldCheckerImpl *Checker; + NotifyStubEmittedFunction NotifyStubEmitted; }; // Asynchronous JIT link for ORC. |