-#ifdef TARGET_WIN32
-#define SOPREFIX ""
-static const char suffixes [][5] = {
- ".dll"
-};
-#elif defined(__APPLE__)
-#define SOPREFIX "lib"
-static const char suffixes [][8] = {
- ".dylib",
- ".so",
- ".bundle"
-};
-#else
-#define SOPREFIX "lib"
-static const char suffixes [][4] = {
- ".so"
-};
-#endif
-
-#ifdef TARGET_WIN32
-
-#include <windows.h>
-#include <psapi.h>
-
-#define SO_HANDLE_TYPE HMODULE
-#define LL_SO_OPEN(file,flags) w32_load_module ((file), (flags))
-#define LL_SO_CLOSE(module) do { if (!(module)->main_module) FreeLibrary ((module)->handle); } while (0)
-#define LL_SO_SYMBOL(module, name) w32_find_symbol ((module), (name))
-#define LL_SO_TRFLAGS(flags) 0
-#define LL_SO_ERROR() w32_dlerror ()
-
-#elif defined (HAVE_DL_LOADER)
-
-#include <dlfcn.h>
-#include <unistd.h>
-
-#ifdef __MACH__
-#include <mach-o/dyld.h>
-#endif
-
-
-#ifndef RTLD_LAZY
-#define RTLD_LAZY 1
-#endif /* RTLD_LAZY */
-
-#define SO_HANDLE_TYPE void*
-#ifdef PLATFORM_ANDROID
-/* Bionic doesn't support NULL filenames */
-# define LL_SO_OPEN(file,flags) ((file) ? dlopen ((file), (flags)) : NULL)
-#else
-# define LL_SO_OPEN(file,flags) dlopen ((file), (flags))
-#endif
-#define LL_SO_CLOSE(module) dlclose ((module)->handle)
-#define LL_SO_SYMBOL(module, name) dlsym ((module)->handle, (name))
-#define LL_SO_TRFLAGS(flags) convert_flags ((flags))
-#define LL_SO_ERROR() g_strdup (dlerror ())
-
-static int
-convert_flags (int flags)
-{
- int lflags = flags & MONO_DL_LOCAL? 0: RTLD_GLOBAL;
-
- if (flags & MONO_DL_LAZY)
- lflags |= RTLD_LAZY;
- else
- lflags |= RTLD_NOW;
- return lflags;
-}
-
-#else
-/* no dynamic loader supported */
-#define SO_HANDLE_TYPE void*
-#define LL_SO_OPEN(file,flags) NULL
-#define LL_SO_CLOSE(module)
-#define LL_SO_SYMBOL(module, name) NULL
-#define LL_SO_TRFLAGS(flags) (flags)
-#define LL_SO_ERROR() g_strdup ("No support for dynamic loader")
-
-#endif
-
-static GSList *fallback_handlers;
-