aboutsummaryrefslogtreecommitdiffstats
path: root/include/llvm/System
diff options
context:
space:
mode:
authorJeff Cohen <jeffc@jolt-lang.org>2006-01-30 04:33:51 +0000
committerJeff Cohen <jeffc@jolt-lang.org>2006-01-30 04:33:51 +0000
commit85046901b8ab3c447889338f03a1fd2805198ad7 (patch)
tree25ecdfcb9e2ac7c3e14781e3a9e00ea714a2fffb /include/llvm/System
parent0e753d617be1ff6a9ac0f894da9d2544e2489850 (diff)
downloadexternal_llvm-85046901b8ab3c447889338f03a1fd2805198ad7.zip
external_llvm-85046901b8ab3c447889338f03a1fd2805198ad7.tar.gz
external_llvm-85046901b8ab3c447889338f03a1fd2805198ad7.tar.bz2
Add AddSymbol() method to DynamicLibrary to work around Windows limitation
of being unable to search for symbols in an EXE. It will also allow other existing hacks to be improved. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25805 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/System')
-rw-r--r--include/llvm/System/DynamicLibrary.h14
1 files changed, 14 insertions, 0 deletions
diff --git a/include/llvm/System/DynamicLibrary.h b/include/llvm/System/DynamicLibrary.h
index 5edbfd6..1aea046 100644
--- a/include/llvm/System/DynamicLibrary.h
+++ b/include/llvm/System/DynamicLibrary.h
@@ -26,6 +26,9 @@ namespace sys {
/// operating system interface, this class provides a portable interface that
/// allows dynamic libraries to be loaded and and searched for externally
/// defined symbols. This is typically used to provide "plug-in" support.
+ /// It also allows for symbols to be defined which don't live in any library,
+ /// but rather the main program itself, useful on Windows where the main
+ /// executable cannot be searched.
/// @since 1.4
/// @brief Portable dynamic library abstraction.
class DynamicLibrary {
@@ -81,6 +84,17 @@ namespace sys {
return SearchForAddressOfSymbol(symbolName.c_str());
}
+ /// This functions permanently adds the symbol \p symbolName with the
+ /// value \p symbolValue. These symbols are searched before any
+ /// libraries.
+ /// @brief Add searchable symbol/value pair.
+ static void AddSymbol(const char* symbolName, void *symbolValue);
+
+ /// @brief Convenience function for C++ophiles.
+ static void AddSymbol(const std::string& symbolName, void *symbolValue) {
+ AddSymbol(symbolName.c_str(), symbolValue);
+ }
+
/// @}
/// @name Accessors
/// @{