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
This commit is contained in:
Jordy Rose 2011-08-17 18:23:17 +00:00
parent 4c81cf5dfc
commit 77b6f2fd22

View File

@ -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.