forked from OSchip/llvm-project
				
			
		
			
				
	
	
		
			56 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
#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
 |