Add more wrappers for symbol APIs to the C API.
authorEli Bendersky <eliben@google.com>
Tue, 9 Jun 2015 15:57:30 +0000 (15:57 +0000)
committerEli Bendersky <eliben@google.com>
Tue, 9 Jun 2015 15:57:30 +0000 (15:57 +0000)
This represents some of the functionality we expose in the llvmlite Python
binding.

Patch by Antoine Pitrou

Differential Revision: http://reviews.llvm.org/D10222

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@239411 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm-c/Support.h
lib/Support/DynamicLibrary.cpp

index a9216d0364ade4e6a6833a9369993c1887f14e76..eca3b7a42037ce2a82704a121b902459e0735407 100644 (file)
@@ -58,6 +58,24 @@ LLVMBool LLVMLoadLibraryPermanently(const char* Filename);
 void LLVMParseCommandLineOptions(int argc, const char *const *argv,
                                  const char *Overview);
 
+/**
+ * This function will search through all previously loaded dynamic
+ * libraries for the symbol \p symbolName. If it is found, the address of
+ * that symbol is returned. If not, null is returned.
+ *
+ * @see sys::DynamicLibrary::SearchForAddressOfSymbol()
+ */
+void *LLVMSearchForAddressOfSymbol(const char *symbolName);
+
+/**
+ * This functions permanently adds the symbol \p symbolName with the
+ * value \p symbolValue.  These symbols are searched before any
+ * libraries.
+ *
+ * @see sys::DynamicLibrary::AddSymbol()
+ */
+void LLVMAddSymbol(const char *symbolName, void *symbolValue);
+
 #ifdef __cplusplus
 }
 #endif
index d2b551e8a0a61bc85c8186d2d2e1e90af3a49752..9a7aeb50a216c48d3f131b52c71c87d87e32ac10 100644 (file)
@@ -178,3 +178,12 @@ void* DynamicLibrary::SearchForAddressOfSymbol(const char *symbolName) {
 LLVMBool LLVMLoadLibraryPermanently(const char* Filename) {
   return llvm::sys::DynamicLibrary::LoadLibraryPermanently(Filename);
 }
+
+void *LLVMSearchForAddressOfSymbol(const char *symbolName) {
+  return llvm::sys::DynamicLibrary::SearchForAddressOfSymbol(symbolName);
+}
+
+void LLVMAddSymbol(const char *symbolName, void *symbolValue) {
+  return llvm::sys::DynamicLibrary::AddSymbol(symbolName, symbolValue);
+}
+