class DynamicLibrary
Declaration
class DynamicLibrary { /* full declaration omitted */ };
Description
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.
Declared at: llvm/include/llvm/Support/DynamicLibrary.h:36
Member Variables
- public static llvm::sys::DynamicLibrary::SearchOrdering SearchOrder
Method Overview
- public static void AddSymbol(llvm::StringRef symbolName, void * symbolValue)
- public DynamicLibrary(void * data = &Invalid)
- public static bool LoadLibraryPermanently(const char * Filename, std::string * ErrMsg = nullptr)
- public static void * SearchForAddressOfSymbol(const char * symbolName)
- public static void * SearchForAddressOfSymbol(const std::string & symbolName)
- public static llvm::sys::DynamicLibrary addPermanentLibrary(void * handle, std::string * errMsg = nullptr)
- public void * getAddressOfSymbol(const char * symbolName)
- public static llvm::sys::DynamicLibrary getPermanentLibrary(const char * filename, std::string * errMsg = nullptr)
- public bool isValid() const
Methods
¶static void AddSymbol(llvm::StringRef symbolName,
void* symbolValue)
static void AddSymbol(llvm::StringRef symbolName,
void* symbolValue)
Description
This functions permanently adds the symbol \p symbolName with the value \p symbolValue. These symbols are searched before any libraries. Add searchable symbol/value pair.
Declared at: llvm/include/llvm/Support/DynamicLibrary.h:124
Parameters
- llvm::StringRef symbolName
- void* symbolValue
¶DynamicLibrary(void* data = &Invalid)
DynamicLibrary(void* data = &Invalid)
Declared at: llvm/include/llvm/Support/DynamicLibrary.h:46
Parameters
- void* data = &Invalid
¶static bool LoadLibraryPermanently(
const char* Filename,
std::string* ErrMsg = nullptr)
static bool LoadLibraryPermanently(
const char* Filename,
std::string* ErrMsg = nullptr)
Description
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.
Declared at: llvm/include/llvm/Support/DynamicLibrary.h:85
Parameters
- const char* Filename
- std::string* ErrMsg = nullptr
¶static void* SearchForAddressOfSymbol(
const char* symbolName)
static void* SearchForAddressOfSymbol(
const char* symbolName)
Description
This function will search through all previously loaded dynamic libraries for the symbol \p 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()).
Declared at: llvm/include/llvm/Support/DynamicLibrary.h:113
Parameters
- const char* symbolName
¶static void* SearchForAddressOfSymbol(
const std::string& symbolName)
static void* SearchForAddressOfSymbol(
const std::string& symbolName)
Description
Convenience function for C++ophiles.
Declared at: llvm/include/llvm/Support/DynamicLibrary.h:116
Parameters
- const std::string& symbolName
¶static llvm::sys::DynamicLibrary
addPermanentLibrary(void* handle,
std::string* errMsg = nullptr)
static llvm::sys::DynamicLibrary
addPermanentLibrary(void* handle,
std::string* errMsg = nullptr)
Description
Registers an externally loaded library. The library will be unloaded when the program terminates. It is safe to call this function multiple times for the same library, though ownership is only taken if there was no error.
Declared at: llvm/include/llvm/Support/DynamicLibrary.h:77
Parameters
- void* handle
- std::string* errMsg = nullptr
Returns
An empty \p DynamicLibrary if the library was already loaded.
¶void* getAddressOfSymbol(const char* symbolName)
void* getAddressOfSymbol(const char* symbolName)
Description
Searches through the library for the symbol \p 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 \e not search symbols explicitly registered by AddSymbol().
Declared at: llvm/include/llvm/Support/DynamicLibrary.h:57
Parameters
- const char* symbolName
¶static llvm::sys::DynamicLibrary
getPermanentLibrary(const char* filename,
std::string* errMsg = nullptr)
static llvm::sys::DynamicLibrary
getPermanentLibrary(const char* filename,
std::string* errMsg = nullptr)
Description
This function permanently loads the dynamic library at the given path. The library will only be unloaded when llvm_shutdown() is called. This returns a valid DynamicLibrary instance on success and an invalid instance on failure (see isValid()). \p *errMsg will only be modified if the library fails to load. It is safe to call this function multiple times for the same library. Open a dynamic library permanently.
Declared at: llvm/include/llvm/Support/DynamicLibrary.h:67
Parameters
- const char* filename
- std::string* errMsg = nullptr
¶bool isValid() const
bool isValid() const
Description
Returns true if the object refers to a valid library.
Declared at: llvm/include/llvm/Support/DynamicLibrary.h:49