[ExecutionEngine] Fix MCJIT::addGlobalMapping.
authorLang Hames <lhames@gmail.com>
Tue, 31 Mar 2015 20:31:14 +0000 (20:31 +0000)
committerLang Hames <lhames@gmail.com>
Tue, 31 Mar 2015 20:31:14 +0000 (20:31 +0000)
commit83b5f345b27253598ecef7c10a6f4cae825d6b42
tree04ea688ec49de85b4f9757e2b59444458bc15d34
parent3399e1fd7327ddc4d11cd35ab870692ae9686718
[ExecutionEngine] Fix MCJIT::addGlobalMapping.

This patch fixes MCJIT::addGlobalMapping by changing the implementation of the
ExecutionEngineState class. The new implementation maintains a bidirectional
mapping between symbol names (std::strings) and addresses (uint64_ts), rather
than a mapping between Value*s and void*s.

This has fix has been made for backwards compatibility, however the strongly
preferred way to resolve unknown symbols is by writing a custom
RuntimeDyld::SymbolResolver (formerly RTDyldMemoryManager) and overriding the
findSymbol method. The addGlobalMapping method is a hangover from the legacy JIT
(which has was removed in 3.6), and may be deprecated in a future release as
part of a clean-up of the ExecutionEngine interface.

Patch by Murat Bolat. Thanks Murat!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233747 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/ExecutionEngine/ExecutionEngine.h
lib/ExecutionEngine/ExecutionEngine.cpp
unittests/ExecutionEngine/ExecutionEngineTest.cpp