LLVM: lib/ExecutionEngine/RuntimeDyld/JITSymbol.cpp Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

19

20using namespace llvm;

21

23 assert(GV.hasName() && "Can't get flags for anonymous symbol");

24

32

38

39

40

42 const auto &DL = M->getDataLayout();

43 StringRef LPGP = DL.getLinkerPrivateGlobalPrefix();

47 }

48

49 return Flags;

50}

51

61

64

65 return Flags;

66}

67

71 if (!SymbolFlagsOrErr)

72

73 return SymbolFlagsOrErr.takeError();

74

82

86

89

90 return Flags;

91}

92

96 if (!SymbolFlagsOrErr)

97

102 return Flags;

103}

104

105

106

107

111 for (auto &Symbol : Symbols) {

112 std::string SymName = Symbol.str();

114 if (auto AddrOrErr = Sym.getAddress())

116 else {

117 OnResolved(AddrOrErr.takeError());

118 return;

119 }

120 } else if (auto Err = Sym.takeError()) {

121 OnResolved(std::move(Err));

122 return;

123 } else {

124

125 if (auto Sym = findSymbol(SymName)) {

126 if (auto AddrOrErr = Sym.getAddress())

128 else {

129 OnResolved(AddrOrErr.takeError());

130 return;

131 }

132 } else if (auto Err = Sym.takeError()) {

133 OnResolved(std::move(Err));

134 return;

135 } else {

138 return;

139 }

140 }

141 }

142

143 OnResolved(std::move(Result));

144}

145

146

147

151

152 for (auto &Symbol : Symbols) {

153 std::string SymName = Symbol.str();

155

156

157 if (!Sym.getFlags().isStrong())

158 Result.insert(Symbol);

159 } else if (auto Err = Sym.takeError())

160 return std::move(Err);

161 else {

162

163

164 Result.insert(Symbol);

165 }

166 }

167

168 return std::move(Result);

169}

assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")

MachineBasicBlock MachineBasicBlock::iterator DebugLoc DL

ModuleSummaryIndex.h This file contains the declarations the classes that hold the module index and s...

ARM-specific JIT symbol flags.

static LLVM_ABI ARMJITSymbolFlags fromObjectSymbol(const object::SymbolRef &Symbol)

Definition JITSymbol.cpp:94

ARMJITSymbolFlags()=default

Tagged union holding either a T or a Error.

Error takeError()

Take ownership of the stored error.

Function and variable summary information to aid decisions and implementation of importing.

GlobalValue::LinkageTypes linkage() const

Return linkage type recorded for this global value.

bool hasLinkOnceLinkage() const

static bool isExternalWeakLinkage(LinkageTypes Linkage)

bool hasLocalLinkage() const

static bool isLinkOnceLinkage(LinkageTypes Linkage)

bool hasHiddenVisibility() const

Module * getParent()

Get the module that this global value is contained inside of...

static bool isCommonLinkage(LinkageTypes Linkage)

static bool isExternalLinkage(LinkageTypes Linkage)

bool hasWeakLinkage() const

bool hasCommonLinkage() const

static bool isWeakLinkage(LinkageTypes Linkage)

Represents a symbol that has been evaluated to an address already.

static LLVM_ABI Expected< JITSymbolFlags > fromObjectSymbol(const object::SymbolRef &Symbol)

Construct a JITSymbolFlags value based on the flags of the given libobject symbol.

Definition JITSymbol.cpp:69

JITSymbolFlags()=default

Default-construct a JITSymbolFlags instance.

static LLVM_ABI JITSymbolFlags fromSummary(GlobalValueSummary *S)

Construct a JITSymbolFlags value based on the flags of the given global value summary.

Definition JITSymbol.cpp:52

static LLVM_ABI JITSymbolFlags fromGlobalValue(const GlobalValue &GV)

Construct a JITSymbolFlags value based on the flags of the given global value.

Definition JITSymbol.cpp:22

unique_function< void(Expected< LookupResult >)> OnResolvedFunction

std::map< StringRef, JITEvaluatedSymbol > LookupResult

std::set< StringRef > LookupSet

virtual JITSymbol findSymbol(const std::string &Name)=0

This method returns the address of the specified function or variable.

Expected< LookupSet > getResponsibilitySet(const LookupSet &Symbols) final

Performs flags lookup by calling findSymbolInLogicalDylib and returning the flags value for that symb...

Definition JITSymbol.cpp:149

virtual JITSymbol findSymbolInLogicalDylib(const std::string &Name)=0

This method returns the address of the specified symbol if it exists within the logical dynamic libra...

void lookup(const LookupSet &Symbols, OnResolvedFunction OnResolved) final

Performs lookup by, for each symbol, first calling findSymbolInLogicalDylib and if that fails calling...

Definition JITSymbol.cpp:108

StringRef - Represent a constant reference to a string, i.e.

constexpr StringRef substr(size_t Start, size_t N=npos) const

Return a reference to the substring from [Start, Start + N).

bool starts_with(StringRef Prefix) const

Check if this string starts with the given Prefix.

constexpr bool empty() const

empty - Check if the string is empty.

char front() const

front - Get the first character in the string.

LLVM_ABI StringRef getName() const

Return a constant reference to the value's name.

This is a value type class that represents a single symbol in the list of symbols in the object file.

This is an optimization pass for GlobalISel generic memory operations.

LLVM_ABI std::error_code inconvertibleErrorCode()

The value returned by this function can be returned from convertToErrorCode for Error values where no...

LLVM_ABI void report_fatal_error(Error Err, bool gen_crash_diag=true)

bool isa(const From &Val)

isa - Return true if the parameter to the template is an instance of one of the template type argu...

Error make_error(ArgTs &&... Args)

Make a Error instance representing failure using the given error info type.

decltype(auto) cast(const From &Val)

cast - Return the argument parameter cast to the specified type.