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

Methods

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)

Declared at: llvm/include/llvm/Support/DynamicLibrary.h:46

Parameters

void* data = &Invalid

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)

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)

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)

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)

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)

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

Description

Returns true if the object refers to a valid library.

Declared at: llvm/include/llvm/Support/DynamicLibrary.h:49