[MCJIT] Turn the getSymbolAddress free function created in r218626 into a static
member of RTDyldMemoryManager (and rename to getSymbolAddressInProcess).
The functionality this provides is very specific to RTDyldMemoryManager, so it
makes sense to keep it in that class to avoid accidental re-use.
No functional change.
llvm-svn: 218741
diff --git a/llvm/include/llvm/ExecutionEngine/RTDyldMemoryManager.h b/llvm/include/llvm/ExecutionEngine/RTDyldMemoryManager.h
index bbc8684..b941efc 100644
--- a/llvm/include/llvm/ExecutionEngine/RTDyldMemoryManager.h
+++ b/llvm/include/llvm/ExecutionEngine/RTDyldMemoryManager.h
@@ -24,8 +24,6 @@
class ExecutionEngine;
class ObjectImage;
-uint64_t getSymbolAddress(const std::string &Name);
-
// RuntimeDyld clients often want to handle the memory management of
// what gets placed where. For JIT clients, this is the subset of
// JITMemoryManager required for dynamic loading of binaries.
@@ -78,10 +76,14 @@
virtual void deregisterEHFrames(uint8_t *Addr, uint64_t LoadAddr, size_t Size);
+ /// This method returns the address of the specified function or variable in
+ /// the current process.
+ static uint64_t getSymbolAddressInProcess(const std::string &Name);
+
/// This method returns the address of the specified function or variable.
/// It is used to resolve symbols during module linking.
virtual uint64_t getSymbolAddress(const std::string &Name) {
- return llvm::getSymbolAddress(Name);
+ return getSymbolAddressInProcess(Name);
}
/// This method returns the address of the specified function. As such it is
diff --git a/llvm/lib/ExecutionEngine/RTDyldMemoryManager.cpp b/llvm/lib/ExecutionEngine/RTDyldMemoryManager.cpp
index 2bade6b..51b2d0f 100644
--- a/llvm/lib/ExecutionEngine/RTDyldMemoryManager.cpp
+++ b/llvm/lib/ExecutionEngine/RTDyldMemoryManager.cpp
@@ -210,7 +210,8 @@
#undef ARM_MATH_DECL
#endif
-uint64_t getSymbolAddress(const std::string &Name) {
+uint64_t
+RTDyldMemoryManager::getSymbolAddressInProcess(const std::string &Name) {
// This implementation assumes that the host program is the target.
// Clients generating code for a remote target should implement their own
// memory manager.
diff --git a/llvm/unittests/ExecutionEngine/ExecutionEngineTest.cpp b/llvm/unittests/ExecutionEngine/ExecutionEngineTest.cpp
index ad341c8..19917a4 100644
--- a/llvm/unittests/ExecutionEngine/ExecutionEngineTest.cpp
+++ b/llvm/unittests/ExecutionEngine/ExecutionEngineTest.cpp
@@ -140,7 +140,8 @@
// Demonstrate that getSymbolAddress accepts mangled names and always strips
// the leading underscore.
- EXPECT_EQ(reinterpret_cast<uint64_t>(&x), getSymbolAddress("_x"));
+ EXPECT_EQ(reinterpret_cast<uint64_t>(&x),
+ RTDyldMemoryManager::getSymbolAddressInProcess("_x"));
}
TEST_F(ExecutionEngineTest, LookupWithMangledAndDemangledSymbol) {
@@ -151,7 +152,8 @@
// Lookup the demangled name first, even if there's a demangled symbol that
// matches the input already.
- EXPECT_EQ(reinterpret_cast<uint64_t>(&x), getSymbolAddress("_x"));
+ EXPECT_EQ(reinterpret_cast<uint64_t>(&x),
+ RTDyldMemoryManager::getSymbolAddressInProcess("_x"));
}
TEST_F(ExecutionEngineTest, LookupwithDemangledName) {
@@ -159,7 +161,8 @@
llvm::sys::DynamicLibrary::AddSymbol("_x", &_x);
// But do fallback to looking up a demangled name if there's no ambiguity
- EXPECT_EQ(reinterpret_cast<uint64_t>(&_x), getSymbolAddress("_x"));
+ EXPECT_EQ(reinterpret_cast<uint64_t>(&_x),
+ RTDyldMemoryManager::getSymbolAddressInProcess("_x"));
}
}