[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)
commit3dac3f7fe6e541980fdd4d3fb9575107cbc74c19
tree99ccf7b4ab37da4053f610ab2483e034fc4ff2ef
parentb99d9a0a816bf8a9e3cce1c6ccba099669ac1e62
[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!

llvm-svn: 233747
llvm/include/llvm/ExecutionEngine/ExecutionEngine.h
llvm/lib/ExecutionEngine/ExecutionEngine.cpp
llvm/unittests/ExecutionEngine/ExecutionEngineTest.cpp