1 /**
2  * \file
3  */
4 
5 #ifndef __MONO_UTILS_DL_H__
6 #define __MONO_UTILS_DL_H__
7 
8 #include "mono/utils/mono-compiler.h"
9 #include "mono/utils/mono-dl-fallback.h"
10 
11 #ifdef TARGET_WIN32
12 #define MONO_SOLIB_EXT ".dll"
13 #elif defined(__ppc__) && defined(TARGET_MACH)
14 #define MONO_SOLIB_EXT ".dylib"
15 #elif defined(TARGET_MACH) && defined(TARGET_X86)
16 #define MONO_SOLIB_EXT ".dylib"
17 #elif defined(TARGET_MACH) && defined(TARGET_AMD64)
18 #define MONO_SOLIB_EXT ".dylib"
19 #else
20 #define MONO_SOLIB_EXT ".so"
21 #endif
22 
23 typedef struct {
24 	void *handle;
25 	int main_module;
26 
27 	/* If not NULL, use the methods in MonoDlFallbackHandler instead of the LL_* methods */
28 	MonoDlFallbackHandler *dl_fallback;
29 } MonoDl;
30 
31 
32 MONO_API MonoDl*     mono_dl_open       (const char *name, int flags, char **error_msg) MONO_LLVM_INTERNAL;
33 char*       mono_dl_symbol     (MonoDl *module, const char *name, void **symbol) MONO_LLVM_INTERNAL;
34 void        mono_dl_close      (MonoDl *module) MONO_LLVM_INTERNAL;
35 
36 char*       mono_dl_build_path (const char *directory, const char *name, void **iter);
37 
38 MonoDl*     mono_dl_open_runtime_lib (const char *lib_name, int flags, char **error_msg);
39 
40 
41 //Platform API for mono_dl
42 const char* mono_dl_get_so_prefix (void);
43 const char** mono_dl_get_so_suffixes (void);
44 void* mono_dl_open_file (const char *file, int flags);
45 void mono_dl_close_handle (MonoDl *module);
46 void* mono_dl_lookup_symbol (MonoDl *module, const char *name);
47 int mono_dl_convert_flags (int flags);
48 char* mono_dl_current_error_string (void);
49 int mono_dl_get_executable_path (char *buf, int buflen);
50 const char* mono_dl_get_system_dir (void);
51 
52 #endif /* __MONO_UTILS_DL_H__ */
53 
54