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.