[RuntimeDyld] Make RuntimeDyldImpl::resolveExternalSymbols preserve the
authorLang Hames <lhames@gmail.com>
Wed, 7 May 2014 22:34:08 +0000 (22:34 +0000)
committerLang Hames <lhames@gmail.com>
Wed, 7 May 2014 22:34:08 +0000 (22:34 +0000)
commit318659742325cb41797a93b9e7932509c708ec23
treebc21dfd8e916a9648715821e3e96b6e1f4ab50bf
parentdf60e43e05e1a61f1c9f7039ae9f7054bba570ea
[RuntimeDyld] Make RuntimeDyldImpl::resolveExternalSymbols preserve the
relocation entries it applies.

Prior to this patch, RuntimeDyldImpl::resolveExternalSymbols discarded
relocations for external symbols once they had been applied. This causes issues
if the client calls MCJIT::finalizeLoadedModules more than once, and updates the
location of any symbols in between (e.g. by calling MCJIT::mapSectionAddress).

No test case yet: None of our in-tree memory managers support moving sections
around. I'll have to hack up a dummy memory manager before I can write a unit
test.

Fixes <rdar://problem/16764378>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208257 91177308-0d34-0410-b5e6-96231b3b80d8
lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp