LLVM API Documentation
#include <DynamicLibrary.h>
Public Member Functions | |
DynamicLibrary (void *data=&Invalid) | |
bool | isValid () const |
Returns true if the object refers to a valid library. | |
void * | getAddressOfSymbol (const char *symbolName) |
Static Public Member Functions | |
static DynamicLibrary | getPermanentLibrary (const char *filename, std::string *errMsg=nullptr) |
Open a dynamic library permanently. | |
static bool | LoadLibraryPermanently (const char *Filename, std::string *ErrMsg=nullptr) |
static void * | SearchForAddressOfSymbol (const char *symbolName) |
Search through libraries for address of a symbol. | |
static void * | SearchForAddressOfSymbol (const std::string &symbolName) |
Convenience function for C++ophiles. | |
static void | AddSymbol (StringRef symbolName, void *symbolValue) |
Add searchable symbol/value pair. |
This class provides a portable interface to dynamic libraries which also might be known as shared libraries, shared objects, dynamic shared objects, or dynamic link libraries. Regardless of the terminology or the operating system interface, this class provides a portable interface that allows dynamic libraries to be loaded and searched for externally defined symbols. This is typically used to provide "plug-in" support. It also allows for symbols to be defined which don't live in any library, but rather the main program itself, useful on Windows where the main executable cannot be searched.
Note: there is currently no interface for temporarily loading a library, or for unloading libraries when the LLVM library is unloaded.
Definition at line 37 of file DynamicLibrary.h.
llvm::sys::DynamicLibrary::DynamicLibrary | ( | void * | data = &Invalid | ) | [inline, explicit] |
Definition at line 47 of file DynamicLibrary.h.
void llvm::sys::DynamicLibrary::AddSymbol | ( | StringRef | symbolName, |
void * | symbolValue | ||
) | [static] |
Add searchable symbol/value pair.
This functions permanently adds the symbol symbolName
with the value symbolValue
. These symbols are searched before any libraries.
Definition at line 30 of file DynamicLibrary.cpp.
void * DynamicLibrary::getAddressOfSymbol | ( | const char * | symbolName | ) |
Searches through the library for the symbol symbolName
. If it is found, the address of that symbol is returned. If not, NULL is returned. Note that NULL will also be returned if the library failed to load. Use isValid() to distinguish these cases if it is important. Note that this will not search symbols explicitly registered by AddSymbol().
Definition at line 84 of file DynamicLibrary.cpp.
DynamicLibrary DynamicLibrary::getPermanentLibrary | ( | const char * | filename, |
std::string * | errMsg = nullptr |
||
) | [static] |
Open a dynamic library permanently.
This function permanently loads the dynamic library at the given path. The library will only be unloaded when the program terminates. This returns a valid DynamicLibrary instance on success and an invalid instance on failure (see isValid()). *errMsg
will only be modified if the library fails to load.
It is safe to call this function multiple times for the same library.
Definition at line 56 of file DynamicLibrary.cpp.
References OpenedHandles.
Referenced by LoadLibraryPermanently().
bool llvm::sys::DynamicLibrary::isValid | ( | ) | const [inline] |
Returns true if the object refers to a valid library.
Definition at line 50 of file DynamicLibrary.h.
Referenced by LoadLibraryPermanently().
static bool llvm::sys::DynamicLibrary::LoadLibraryPermanently | ( | const char * | Filename, |
std::string * | ErrMsg = nullptr |
||
) | [inline, static] |
This function permanently loads the dynamic library at the given path. Use this instead of getPermanentLibrary() when you won't need to get symbols from the library itself.
It is safe to call this function multiple times for the same library.
Definition at line 76 of file DynamicLibrary.h.
References getPermanentLibrary(), and isValid().
Referenced by llvm::EngineBuilder::create(), llvm::MCJIT::createJIT(), LLVMLoadLibraryPermanently(), and llvm::PluginLoader::operator=().
void * DynamicLibrary::SearchForAddressOfSymbol | ( | const char * | symbolName | ) | [static] |
Search through libraries for address of a symbol.
This function will search through all previously loaded dynamic libraries for the symbol symbolName
. If it is found, the address of that symbol is returned. If not, null is returned. Note that this will search permanently loaded libraries (getPermanentLibrary()) as well as explicitly registered symbols (AddSymbol()).
std::string | on error. |
Definition at line 111 of file DynamicLibrary.cpp.
References EXPLICIT_SYMBOL, I, llvm::ManagedStaticBase::isConstructed(), Lock, OpenedHandles, and llvm::SearchForAddressOfSpecialSymbol().
Referenced by llvm::__deregister_frame(), llvm::__register_frame(), llvm::Interpreter::callExternalFunction(), llvm::ExecutionEngine::emitGlobals(), llvm::RTDyldMemoryManager::getSymbolAddress(), lookupFunction(), and SearchForAddressOfSymbol().
static void* llvm::sys::DynamicLibrary::SearchForAddressOfSymbol | ( | const std::string & | symbolName | ) | [inline, static] |
Convenience function for C++ophiles.
Definition at line 91 of file DynamicLibrary.h.
References SearchForAddressOfSymbol().