mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-02-23 05:52:40 +00:00
[RuntimeDyld] Strip leading '_' from symbols on 32-bit windows in
RTDyldMemoryManager::getSymbolAddressInProcess() This should allow JIT'd code for win32 to find in-process symbols. See http://llvm.org/PR28699 . Patch by James Holderness. Thanks James! llvm-svn: 279016
This commit is contained in:
parent
ebde3ba665
commit
bde6fbe904
@ -265,8 +265,8 @@ RTDyldMemoryManager::getSymbolAddressInProcess(const std::string &Name) {
|
||||
const char *NameStr = Name.c_str();
|
||||
|
||||
// DynamicLibrary::SearchForAddresOfSymbol expects an unmangled 'C' symbol
|
||||
// name so ff we're on Darwin, strip the leading '_' off.
|
||||
#ifdef __APPLE__
|
||||
// name so if we're on Darwin or 32-bit Windows, strip the leading '_' off.
|
||||
#if defined(__APPLE__) || (defined(_WIN32) && !defined(_WIN64))
|
||||
if (NameStr[0] == '_')
|
||||
++NameStr;
|
||||
#endif
|
||||
|
@ -139,8 +139,8 @@ TEST_F(ExecutionEngineTest, LookupWithMangledAndDemangledSymbol) {
|
||||
// RTDyldMemoryManager::getSymbolAddressInProcess expects a mangled symbol,
|
||||
// but DynamicLibrary is a wrapper for dlsym, which expects the unmangled C
|
||||
// symbol name. This test verifies that getSymbolAddressInProcess strips the
|
||||
// leading '_' on Darwin, but not on other platforms.
|
||||
#ifdef __APPLE__
|
||||
// leading '_' on Darwin and 32-bit Windows, but not on other platforms.
|
||||
#if defined(__APPLE__) || (defined(_WIN32) && !defined(_WIN64))
|
||||
EXPECT_EQ(reinterpret_cast<uint64_t>(&x),
|
||||
RTDyldMemoryManager::getSymbolAddressInProcess("_x"));
|
||||
#else
|
||||
|
Loading…
x
Reference in New Issue
Block a user