- MonoDl *llvm_lib = NULL;
- char *err;
- char buf [4096];
- int binl;
- binl = readlink ("/proc/self/exe", buf, sizeof (buf)-1);
-#ifdef __MACH__
- if (binl == -1) {
- uint32_t bsize = sizeof (buf);
- if (_NSGetExecutablePath (buf, &bsize) == 0) {
- binl = strlen (buf);
- }
- }
-#endif
- if (binl != -1) {
- char *base;
- char *resolvedname, *name;
- buf [binl] = 0;
- resolvedname = mono_path_resolve_symlinks (buf);
- base = g_path_get_dirname (resolvedname);
- name = g_strdup_printf ("%s/.libs", base);
- err = NULL;
- llvm_lib = try_llvm_load (name, &err);
- g_free (name);
- if (!llvm_lib) {
- char *newbase = g_path_get_dirname (base);
- name = g_strdup_printf ("%s/lib", newbase);
- err = NULL;
- llvm_lib = try_llvm_load (name, &err);
- g_free (name);
- }
- g_free (base);
- g_free (resolvedname);
- }