diff options
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test')
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)  | 
