File tree 3 files changed +16
-1
lines changed
3 files changed +16
-1
lines changed Original file line number Diff line number Diff line change @@ -57,7 +57,7 @@ class IncrementalExecutor {
57
57
virtual llvm::Error removeModule (PartialTranslationUnit &PTU);
58
58
virtual llvm::Error runCtors () const ;
59
59
virtual llvm::Error cleanUp ();
60
- llvm::Expected<llvm::orc::ExecutorAddr>
60
+ virtual llvm::Expected<llvm::orc::ExecutorAddr>
61
61
getSymbolAddress (llvm::StringRef Name, SymbolNameKind NameKind) const ;
62
62
63
63
llvm::orc::LLJIT &GetExecutionEngine () { return *Jit; }
Original file line number Diff line number Diff line change @@ -144,6 +144,19 @@ llvm::Error WasmIncrementalExecutor::cleanUp() {
144
144
return llvm::Error::success ();
145
145
}
146
146
147
+ llvm::Expected<llvm::orc::ExecutorAddr>
148
+ WasmIncrementalExecutor::getSymbolAddress (llvm::StringRef Name,
149
+ SymbolNameKind NameKind) const {
150
+ void *Sym = dlsym (RTLD_DEFAULT, Name.str ().c_str ());
151
+ if (!Sym) {
152
+ return llvm::make_error<llvm::StringError>(" dlsym failed for symbol: " +
153
+ Name.str (),
154
+ llvm::inconvertibleErrorCode ());
155
+ }
156
+
157
+ return llvm::orc::ExecutorAddr::fromPtr (Sym);
158
+ }
159
+
147
160
WasmIncrementalExecutor::~WasmIncrementalExecutor () = default ;
148
161
149
162
} // namespace clang
Original file line number Diff line number Diff line change @@ -29,6 +29,8 @@ class WasmIncrementalExecutor : public IncrementalExecutor {
29
29
llvm::Error removeModule (PartialTranslationUnit &PTU) override ;
30
30
llvm::Error runCtors () const override ;
31
31
llvm::Error cleanUp () override ;
32
+ llvm::Expected<llvm::orc::ExecutorAddr>
33
+ getSymbolAddress (llvm::StringRef Name, SymbolNameKind NameKind) const ;
32
34
33
35
~WasmIncrementalExecutor () override ;
34
36
};
You can’t perform that action at this time.
0 commit comments