summaryrefslogtreecommitdiff
path: root/include/llvm/Support/DynamicLibrary.h
diff options
context:
space:
mode:
authorJordy Rose <jediknil@belkadan.com>2011-08-17 18:23:17 +0000
committerJordy Rose <jediknil@belkadan.com>2011-08-17 18:23:17 +0000
commit77b6f2fd22bd9e0b8c0f1a4b0b007971e7b84d35 (patch)
tree0e35c0dccc19ba25e7795b3f2217412dab3d8534 /include/llvm/Support/DynamicLibrary.h
parent4c81cf5dfc8f790fa7ab0169b926bd83ea3ca6b5 (diff)
downloadllvm-77b6f2fd22bd9e0b8c0f1a4b0b007971e7b84d35.tar.gz
llvm-77b6f2fd22bd9e0b8c0f1a4b0b007971e7b84d35.tar.bz2
llvm-77b6f2fd22bd9e0b8c0f1a4b0b007971e7b84d35.tar.xz
Don't use NULL to represent an invalid library; Cygwin uses this for RTLD_DEFAULT. Caught by Takumi.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137841 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/Support/DynamicLibrary.h')
-rw-r--r--include/llvm/Support/DynamicLibrary.h9
1 files changed, 7 insertions, 2 deletions
diff --git a/include/llvm/Support/DynamicLibrary.h b/include/llvm/Support/DynamicLibrary.h
index 04100cd891..11965292dd 100644
--- a/include/llvm/Support/DynamicLibrary.h
+++ b/include/llvm/Support/DynamicLibrary.h
@@ -32,13 +32,18 @@ namespace sys {
/// Note: there is currently no interface for temporarily loading a library,
/// or for unloading libraries when the LLVM library is unloaded.
class DynamicLibrary {
+ // Placeholder whose address represents an invalid library.
+ // We use this instead of NULL or a pointer-int pair because the OS library
+ // might define 0 or 1 to be "special" handles, such as "search all".
+ static const char Invalid;
+
// Opaque data used to interface with OS-specific dynamic library handling.
void *Data;
- explicit DynamicLibrary(void *data = 0) : Data(data) {}
+ explicit DynamicLibrary(void *data = &Invalid) : Data(data) {}
public:
/// Returns true if the object refers to a valid library.
- bool isValid() { return Data != 0; }
+ bool isValid() { return Data != &Invalid; }
/// Searches through the library for the symbol \p symbolName. If it is
/// found, the address of that symbol is returned. If not, NULL is returned.