diff options
Diffstat (limited to 'lldb/packages/Python/lldbsuite')
4 files changed, 70 insertions, 9 deletions
diff --git a/lldb/packages/Python/lldbsuite/test/lldbplatformutil.py b/lldb/packages/Python/lldbsuite/test/lldbplatformutil.py index 32c9c20..44659ca 100644 --- a/lldb/packages/Python/lldbsuite/test/lldbplatformutil.py +++ b/lldb/packages/Python/lldbsuite/test/lldbplatformutil.py @@ -166,19 +166,20 @@ def findMainThreadCheckerDylib(): class _PlatformContext(object): """Value object class which contains platform-specific options.""" - def __init__(self, shlib_environment_var, shlib_prefix, shlib_extension): + def __init__(self, shlib_environment_var, shlib_path_separator, shlib_prefix, shlib_extension): self.shlib_environment_var = shlib_environment_var + self.shlib_path_separator = shlib_path_separator self.shlib_prefix = shlib_prefix self.shlib_extension = shlib_extension def createPlatformContext(): if platformIsDarwin(): - return _PlatformContext('DYLD_LIBRARY_PATH', 'lib', 'dylib') + return _PlatformContext('DYLD_LIBRARY_PATH', ':', 'lib', 'dylib') elif getPlatform() in ("freebsd", "linux", "netbsd"): - return _PlatformContext('LD_LIBRARY_PATH', 'lib', 'so') + return _PlatformContext('LD_LIBRARY_PATH', ':', 'lib', 'so') else: - return None + return _PlatformContext('PATH', ';', '', 'dll') def hasChattyStderr(test_case): diff --git a/lldb/packages/Python/lldbsuite/test/make/Makefile.rules b/lldb/packages/Python/lldbsuite/test/make/Makefile.rules index 4ae5456..ea0fa74 100644 --- a/lldb/packages/Python/lldbsuite/test/make/Makefile.rules +++ b/lldb/packages/Python/lldbsuite/test/make/Makefile.rules @@ -474,7 +474,7 @@ endif # Additional system libraries #---------------------------------------------------------------------- ifeq (1,$(USE_LIBDL)) - ifneq ($(OS),NetBSD) + ifeq (,$(filter $(OS), NetBSD Windows_NT)) LDFLAGS += -ldl endif endif diff --git a/lldb/packages/Python/lldbsuite/test/make/dylib.h b/lldb/packages/Python/lldbsuite/test/make/dylib.h new file mode 100644 index 0000000..50abcdb --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/make/dylib.h @@ -0,0 +1,55 @@ +#ifndef LLDB_TEST_DYLIB_H +#define LLDB_TEST_DYLIB_H + +#include <stdio.h> + +#ifdef _WIN32 +#include <Windows.h> + +#define dylib_get_symbol(handle, name) GetProcAddress((HMODULE)handle, name) +#define dylib_close(handle) (!FreeLibrary((HMODULE)handle)) +#else +#include <dlfcn.h> + +#define dylib_get_symbol(handle, name) dlsym(handle, name) +#define dylib_close(handle) dlclose(handle) +#endif + + +inline void *dylib_open(const char *name) { + char dylib_prefix[] = +#ifdef _WIN32 + ""; +#else + "lib"; +#endif + char dylib_suffix[] = +#ifdef _WIN32 + ".dll"; +#elif defined(__APPLE__) + ".dylib"; +#else + ".so"; +#endif + char fullname[1024]; + snprintf(fullname, sizeof(fullname), "%s%s%s", dylib_prefix, name, dylib_suffix); +#ifdef _WIN32 + return LoadLibraryA(fullname); +#else + return dlopen(fullname, RTLD_NOW); +#endif +} + +inline const char *dylib_last_error() { +#ifndef _WIN32 + return dlerror(); +#else + DWORD err = GetLastError(); + char *msg; + FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, + NULL, err, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (char *)&msg, 0, NULL); + return msg; +#endif +} + +#endif diff --git a/lldb/packages/Python/lldbsuite/test/make/test_common.h b/lldb/packages/Python/lldbsuite/test/make/test_common.h index 529d095..aa8960e 100644 --- a/lldb/packages/Python/lldbsuite/test/make/test_common.h +++ b/lldb/packages/Python/lldbsuite/test/make/test_common.h @@ -1,13 +1,18 @@ // This header is included in all the test programs (C and C++) and provides a // hook for dealing with platform-specifics. + #if defined(_WIN32) || defined(_WIN64) -#ifdef COMPILING_LLDB_TEST_DLL -#define LLDB_TEST_API __declspec(dllexport) +#define LLDB_DYLIB_EXPORT __declspec(dllexport) +#define LLDB_DYLIB_IMPORT __declspec(dllimport) #else -#define LLDB_TEST_API __declspec(dllimport) +#define LLDB_DYLIB_EXPORT +#define LLDB_DYLIB_IMPORT #endif + +#ifdef COMPILING_LLDB_TEST_DLL +#define LLDB_TEST_API LLDB_DYLIB_EXPORT #else -#define LLDB_TEST_API +#define LLDB_TEST_API LLDB_DYLIB_IMPORT #endif #if defined(_WIN32) |
