LLVM: include/llvm/ExecutionEngine/Orc/EPCDynamicLibrarySearchGenerator.h Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

13

14#ifndef LLVM_EXECUTIONENGINE_ORC_EPCDYNAMICLIBRARYSEARCHGENERATOR_H

15#define LLVM_EXECUTIONENGINE_ORC_EPCDYNAMICLIBRARYSEARCHGENERATOR_H

16

20

21namespace llvm {

22namespace orc {

23

25

27public:

30

31

32

33

34

35

36

37

38

39

44 : EPC(ES.getExecutorProcessControl()), H(H), Allow(std::move(Allow)),

45 AddAbsoluteSymbols(std::move(AddAbsoluteSymbols)) {}

46

47

48

49

50

51

52

53

57 : EPC(ES.getExecutorProcessControl()), Allow(std::move(Allow)),

58 AddAbsoluteSymbols(std::move(AddAbsoluteSymbols)) {}

59

60

61

62

63

66 SymbolPredicate Allow = SymbolPredicate(),

67 AddAbsoluteSymbolsFn AddAbsoluteSymbols = nullptr);

68

69

70

75 return Load(ES, nullptr, std::move(Allow), std::move(AddAbsoluteSymbols));

76 }

77

81

82private:

84

86 std::optionaltpctypes::DylibHandle H;

87 SymbolPredicate Allow;

88 AddAbsoluteSymbolsFn AddAbsoluteSymbols;

89};

90

91}

92}

93

94#endif

Lightweight error class with error context and mandatory checking.

Tagged union holding either a T or a Error.

Definition generators can be attached to JITDylibs to generate new definitions for otherwise unresolv...

friend class ExecutionSession

static Expected< std::unique_ptr< EPCDynamicLibrarySearchGenerator > > Load(ExecutionSession &ES, const char *LibraryPath, SymbolPredicate Allow=SymbolPredicate(), AddAbsoluteSymbolsFn AddAbsoluteSymbols=nullptr)

Permanently loads the library at the given path and, on success, returns an EPCDynamicLibrarySearchGe...

static Expected< std::unique_ptr< EPCDynamicLibrarySearchGenerator > > GetForTargetProcess(ExecutionSession &ES, SymbolPredicate Allow=SymbolPredicate(), AddAbsoluteSymbolsFn AddAbsoluteSymbols=nullptr)

Creates a EPCDynamicLibrarySearchGenerator that searches for symbols in the target process.

Definition EPCDynamicLibrarySearchGenerator.h:72

unique_function< bool(const SymbolStringPtr &)> SymbolPredicate

Definition EPCDynamicLibrarySearchGenerator.h:28

EPCDynamicLibrarySearchGenerator(ExecutionSession &ES, SymbolPredicate Allow, AddAbsoluteSymbolsFn AddAbsoluteSymbols=nullptr)

Create an EPCDynamicLibrarySearchGenerator that resolves all symbols matching the Allow predicate to ...

Definition EPCDynamicLibrarySearchGenerator.h:54

unique_function< Error(JITDylib &, SymbolMap)> AddAbsoluteSymbolsFn

Definition EPCDynamicLibrarySearchGenerator.h:29

EPCDynamicLibrarySearchGenerator(ExecutionSession &ES, tpctypes::DylibHandle H, SymbolPredicate Allow=SymbolPredicate(), AddAbsoluteSymbolsFn AddAbsoluteSymbols=nullptr)

Create an EPCDynamicLibrarySearchGenerator that searches for symbols in the library with the given ha...

Definition EPCDynamicLibrarySearchGenerator.h:40

An ExecutionSession represents a running JIT program.

ExecutorProcessControl supports interaction with a JIT target process.

Represents a JIT'd dynamic library.

Wraps state for a lookup-in-progress.

A set of symbols to look up, each associated with a SymbolLookupFlags value.

Pointer to a pooled string representing a symbol name.

unique_function is a type-erasing functor similar to std::function.

ExecutorAddr DylibHandle

A handle used to represent a loaded dylib in the target process.

JITDylibLookupFlags

Lookup flags that apply to each dylib in the search order for a lookup.

DenseMap< SymbolStringPtr, ExecutorSymbolDef > SymbolMap

A map from symbol names (as SymbolStringPtrs) to JITSymbols (address/flags pairs).

LookupKind

Describes the kind of lookup being performed.

This is an optimization pass for GlobalISel generic memory operations.

OutputIt move(R &&Range, OutputIt Out)

Provide wrappers to std::move which take ranges instead of having to pass begin/end explicitly.

Implement std::hash so that hash_code can be used in STL containers.