llvm-project/llvm/unittests/ExecutionEngine
Lang Hames 3b514554a2 [RuntimeDyld] Fix '_' stripping in RTDyldMemoryManager::getSymbolAddressInProcess.
The RTDyldMemoryManager::getSymbolAddressInProcess method accepts a
linker-mangled symbol name, but it calls through to dlsym to do the lookup (via
DynamicLibrary::SearchForAddressOfSymbol), and dlsym expects an unmangled
symbol name.

Historically we've attempted to "demangle" by removing leading '_'s on all
platforms, and fallen back to an extra search if that failed. That's broken, as
it can cause symbols to resolve incorrectly on platforms that don't do mangling
if you query '_foo' and the process also happens to contain a 'foo'.

Fix this by demangling conditionally based on the host platform. That's safe
here because this function is specifically for symbols in the host process, so
the usual cross-process JIT looking concerns don't apply.

M    unittests/ExecutionEngine/ExecutionEngineTest.cpp
M    lib/ExecutionEngine/RuntimeDyld/RTDyldMemoryManager.cpp

llvm-svn: 262657
2016-03-03 21:23:15 +00:00
..
MCJIT Kill LLVMAddTargetData 2016-02-16 00:22:02 +00:00
Orc [Orc] Add lazy-JITting support for i386. 2016-02-10 01:02:33 +00:00
CMakeLists.txt [orc] Add a trivial unit test to get the ball rolling 2015-02-23 00:36:25 +00:00
ExecutionEngineTest.cpp [RuntimeDyld] Fix '_' stripping in RTDyldMemoryManager::getSymbolAddressInProcess. 2016-03-03 21:23:15 +00:00