File tree Expand file tree Collapse file tree 3 files changed +16
-1
lines changed Expand file tree Collapse file tree 3 files changed +16
-1
lines changed Original file line number Diff line number Diff line change @@ -57,7 +57,7 @@ class IncrementalExecutor {
5757 virtual llvm::Error removeModule (PartialTranslationUnit &PTU);
5858 virtual llvm::Error runCtors () const ;
5959 virtual llvm::Error cleanUp ();
60- llvm::Expected<llvm::orc::ExecutorAddr>
60+ virtual llvm::Expected<llvm::orc::ExecutorAddr>
6161 getSymbolAddress (llvm::StringRef Name, SymbolNameKind NameKind) const ;
6262
6363 llvm::orc::LLJIT &GetExecutionEngine () { return *Jit; }
Original file line number Diff line number Diff line change @@ -144,6 +144,19 @@ llvm::Error WasmIncrementalExecutor::cleanUp() {
144144 return llvm::Error::success ();
145145}
146146
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+
147160WasmIncrementalExecutor::~WasmIncrementalExecutor () = default ;
148161
149162} // namespace clang
Original file line number Diff line number Diff line change @@ -29,6 +29,8 @@ class WasmIncrementalExecutor : public IncrementalExecutor {
2929 llvm::Error removeModule (PartialTranslationUnit &PTU) override ;
3030 llvm::Error runCtors () const override ;
3131 llvm::Error cleanUp () override ;
32+ llvm::Expected<llvm::orc::ExecutorAddr>
33+ getSymbolAddress (llvm::StringRef Name, SymbolNameKind NameKind) const ;
3234
3335 ~WasmIncrementalExecutor () override ;
3436};
You can’t perform that action at this time.
0 commit comments