forked from OSchip/llvm-project
3b514554a2
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 |
||
---|---|---|
.. | ||
IntelJITEvents | ||
Interpreter | ||
MCJIT | ||
OProfileJIT | ||
Orc | ||
RuntimeDyld | ||
CMakeLists.txt | ||
ExecutionEngine.cpp | ||
ExecutionEngineBindings.cpp | ||
GDBRegistrationListener.cpp | ||
LLVMBuild.txt | ||
SectionMemoryManager.cpp | ||
TargetSelect.cpp |