From 9c992697d66e98702513638bedac7a1788e8e83e Mon Sep 17 00:00:00 2001 From: =?utf8?q?Aleksey=20Kliger=20=28=CE=BBgeek=29?= Date: Wed, 16 Jun 2021 05:51:46 -0400 Subject: [PATCH] [mono] Search for components using mono_dl_build_path (#54237) It knows how to try various combinations of prefixes and suffixes on various platforms. In particular it knows to look for .dylib files on Apple platforms. Fixes iOS simulator component search --- src/mono/mono/metadata/components.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/mono/mono/metadata/components.c b/src/mono/mono/metadata/components.c index a1ba44a..765bc72 100644 --- a/src/mono/mono/metadata/components.c +++ b/src/mono/mono/metadata/components.c @@ -140,14 +140,18 @@ try_load (const char* dir, const MonoComponentEntry *component, const char* comp { MonoDl *lib = NULL; char *path = NULL; - path = g_module_build_path (dir, component_base_lib); - if (path) { + void *iter = NULL; + + while ((path = mono_dl_build_path (dir, component_base_lib, &iter))) { char *error_msg = NULL; lib = mono_dl_open (path, MONO_DL_EAGER | MONO_DL_LOCAL, &error_msg); + if (lib) + break; if (!lib) { mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_DLLIMPORT, "Component %s not found: %s", component->name, error_msg); } g_free (error_msg); + g_free (path); } if (lib) mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_DLLIMPORT, "Component %s found at %s", component->name, path); -- 2.7.4