diff options
Diffstat (limited to 'llvm/unittests/ExecutionEngine/ExecutionEngineTest.cpp')
-rw-r--r-- | llvm/unittests/ExecutionEngine/ExecutionEngineTest.cpp | 26 |
1 files changed, 7 insertions, 19 deletions
diff --git a/llvm/unittests/ExecutionEngine/ExecutionEngineTest.cpp b/llvm/unittests/ExecutionEngine/ExecutionEngineTest.cpp index bb47c4c0030..3ffa9cd9b8f 100644 --- a/llvm/unittests/ExecutionEngine/ExecutionEngineTest.cpp +++ b/llvm/unittests/ExecutionEngine/ExecutionEngineTest.cpp @@ -136,35 +136,23 @@ TEST_F(ExecutionEngineTest, DestructionRemovesGlobalMapping) { EXPECT_EQ(nullptr, Engine->getGlobalValueAtAddress(&Mem1)); } -TEST_F(ExecutionEngineTest, LookupWithMangledName) { - int x; - llvm::sys::DynamicLibrary::AddSymbol("x", &x); - - // Demonstrate that getSymbolAddress accepts mangled names and always strips - // the leading underscore. - EXPECT_EQ(reinterpret_cast<uint64_t>(&x), - RTDyldMemoryManager::getSymbolAddressInProcess("_x")); -} - TEST_F(ExecutionEngineTest, LookupWithMangledAndDemangledSymbol) { int x; int _x; llvm::sys::DynamicLibrary::AddSymbol("x", &x); llvm::sys::DynamicLibrary::AddSymbol("_x", &_x); - // Lookup the demangled name first, even if there's a demangled symbol that - // matches the input already. + // 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__ EXPECT_EQ(reinterpret_cast<uint64_t>(&x), RTDyldMemoryManager::getSymbolAddressInProcess("_x")); -} - -TEST_F(ExecutionEngineTest, LookupwithDemangledName) { - int _x; - llvm::sys::DynamicLibrary::AddSymbol("_x", &_x); - - // But do fallback to looking up a demangled name if there's no ambiguity +#else EXPECT_EQ(reinterpret_cast<uint64_t>(&_x), RTDyldMemoryManager::getSymbolAddressInProcess("_x")); +#endif } } |