diff options
author | Lang Hames <lhames@gmail.com> | 2018-01-19 22:24:13 +0000 |
---|---|---|
committer | Lang Hames <lhames@gmail.com> | 2018-01-19 22:24:13 +0000 |
commit | b72f48452c528daf3b9fb7604a640e4e14e3f405 (patch) | |
tree | ed672be7baa3b1306f83f9f64f2b35d5fd18b6c8 /llvm/lib/ExecutionEngine/Orc/OrcMCJITReplacement.h | |
parent | 8b2faeed022dc14b838416e12754d8d9c3074195 (diff) | |
download | bcm5719-llvm-b72f48452c528daf3b9fb7604a640e4e14e3f405.tar.gz bcm5719-llvm-b72f48452c528daf3b9fb7604a640e4e14e3f405.zip |
[ORC] Re-apply r322913 with a fix for a read-after-free error.
ExternalSymbolMap now stores the string key (rather than using a StringRef),
as the object file backing the key may be removed at any time.
llvm-svn: 323001
Diffstat (limited to 'llvm/lib/ExecutionEngine/Orc/OrcMCJITReplacement.h')
-rw-r--r-- | llvm/lib/ExecutionEngine/Orc/OrcMCJITReplacement.h | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/llvm/lib/ExecutionEngine/Orc/OrcMCJITReplacement.h b/llvm/lib/ExecutionEngine/Orc/OrcMCJITReplacement.h index 1dc8d4ac7bc..166d1369c72 100644 --- a/llvm/lib/ExecutionEngine/Orc/OrcMCJITReplacement.h +++ b/llvm/lib/ExecutionEngine/Orc/OrcMCJITReplacement.h @@ -138,7 +138,7 @@ class OrcMCJITReplacement : public ExecutionEngine { std::shared_ptr<MCJITMemoryManager> ClientMM; }; - class LinkingResolver : public JITSymbolResolver { + class LinkingResolver : public LegacyJITSymbolResolver { public: LinkingResolver(OrcMCJITReplacement &M) : M(M) {} @@ -160,20 +160,19 @@ private: static ExecutionEngine * createOrcMCJITReplacement(std::string *ErrorMsg, std::shared_ptr<MCJITMemoryManager> MemMgr, - std::shared_ptr<JITSymbolResolver> Resolver, + std::shared_ptr<LegacyJITSymbolResolver> Resolver, std::unique_ptr<TargetMachine> TM) { return new OrcMCJITReplacement(std::move(MemMgr), std::move(Resolver), std::move(TM)); } public: - OrcMCJITReplacement( - std::shared_ptr<MCJITMemoryManager> MemMgr, - std::shared_ptr<JITSymbolResolver> ClientResolver, - std::unique_ptr<TargetMachine> TM) + OrcMCJITReplacement(std::shared_ptr<MCJITMemoryManager> MemMgr, + std::shared_ptr<LegacyJITSymbolResolver> ClientResolver, + std::unique_ptr<TargetMachine> TM) : ExecutionEngine(TM->createDataLayout()), TM(std::move(TM)), - MemMgr(std::make_shared<MCJITReplacementMemMgr>(*this, - std::move(MemMgr))), + MemMgr( + std::make_shared<MCJITReplacementMemMgr>(*this, std::move(MemMgr))), Resolver(std::make_shared<LinkingResolver>(*this)), ClientResolver(std::move(ClientResolver)), NotifyObjectLoaded(*this), NotifyFinalized(*this), @@ -378,7 +377,7 @@ private: std::unique_ptr<TargetMachine> TM; std::shared_ptr<MCJITReplacementMemMgr> MemMgr; std::shared_ptr<LinkingResolver> Resolver; - std::shared_ptr<JITSymbolResolver> ClientResolver; + std::shared_ptr<LegacyJITSymbolResolver> ClientResolver; Mangler Mang; // IMPORTANT: ShouldDelete *must* come before LocalModules: The shared_ptr |