Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'mono/metadata/assembly.c')
-rw-r--r--mono/metadata/assembly.c307
1 files changed, 0 insertions, 307 deletions
diff --git a/mono/metadata/assembly.c b/mono/metadata/assembly.c
index 8421df9f501..5a2ddad4e75 100644
--- a/mono/metadata/assembly.c
+++ b/mono/metadata/assembly.c
@@ -386,10 +386,6 @@ static GSList *loaded_assembly_bindings = NULL;
static GENERATE_TRY_GET_CLASS_WITH_CACHE (internals_visible, "System.Runtime.CompilerServices", "InternalsVisibleToAttribute")
static MonoAssembly*
mono_assembly_invoke_search_hook_internal (MonoAssemblyLoadContext *alc, MonoAssembly *requesting, MonoAssemblyName *aname, gboolean refonly, gboolean postload);
-#ifdef ENABLE_NETCORE
-static MonoAssembly*
-mono_assembly_request_byname_nosearch (MonoAssemblyName *aname, const MonoAssemblyByNameRequest *req, MonoImageOpenStatus *status);
-#endif
static MonoAssembly*
mono_assembly_load_full_gac_base_default (MonoAssemblyName *aname, const char *basedir, MonoAssemblyLoadContext *alc, MonoAssemblyContextKind asmctx, MonoImageOpenStatus *status);
static MonoAssembly*
@@ -402,10 +398,8 @@ invoke_assembly_preload_hook (MonoAssemblyLoadContext *alc, MonoAssemblyName *an
static MonoBoolean
mono_assembly_is_in_gac (const gchar *filanem);
-#ifndef ENABLE_NETCORE
static MonoAssemblyName*
mono_assembly_apply_binding (MonoAssemblyName *aname, MonoAssemblyName *dest_name);
-#endif
static MonoAssembly*
prevent_reference_assembly_from_running (MonoAssembly* candidate, gboolean refonly);
@@ -1553,7 +1547,6 @@ mono_assembly_get_assemblyref (MonoImage *image, int index, MonoAssemblyName *an
}
}
-#ifndef ENABLE_NETCORE
static MonoAssembly*
load_reference_by_aname_refonly_asmctx (MonoAssemblyName *aname, MonoAssemblyLoadContext *alc, MonoAssembly *assm, MonoImageOpenStatus *status)
{
@@ -1666,179 +1659,6 @@ load_reference_by_aname_individual_asmctx (MonoAssemblyName *aname, MonoAssembly
reference = (MonoAssembly*)REFERENCE_MISSING;
return reference;
}
-#else
-static MonoAssembly *
-search_bundle_for_assembly (MonoAssemblyLoadContext *alc, MonoAssemblyName *aname)
-{
- if (bundles == NULL && satellite_bundles == NULL)
- return NULL;
-
- MonoImageOpenStatus status;
- MonoImage *image;
- MonoAssemblyLoadRequest req;
- image = mono_assembly_open_from_bundle (alc, aname->name, &status, FALSE, aname->culture);
- if (!image && !g_str_has_suffix (aname->name, ".dll")) {
- char *name = g_strdup_printf ("%s.dll", aname->name);
- image = mono_assembly_open_from_bundle (alc, name, &status, FALSE, aname->culture);
- }
- if (image) {
- mono_assembly_request_prepare_load (&req, MONO_ASMCTX_DEFAULT, alc);
- return mono_assembly_request_load_from (image, aname->name, &req, &status);
- }
- return NULL;
-}
-
-static MonoAssembly*
-netcore_load_reference (MonoAssemblyName *aname, MonoAssemblyLoadContext *alc, MonoAssembly *requesting, gboolean postload)
-{
- g_assert (alc != NULL);
-
- MonoAssemblyName mapped_aname;
-
- aname = mono_assembly_remap_version (aname, &mapped_aname);
-
- MonoAssembly *reference = NULL;
-
- gboolean is_satellite = !mono_assembly_name_culture_is_neutral (aname);
- gboolean is_default = mono_alc_is_default (alc);
-
- /*
- * Try these until one of them succeeds (by returning a non-NULL reference):
- * 1. Check if it's already loaded by the ALC.
- *
- * 2. If it's a non-default ALC, call the Load() method.
- *
- * 3. If the ALC is not the default and this is not a satellite request,
- * check if it's already loaded by the default ALC.
- *
- * 4. If we have a bundle registered and this is not a satellite request,
- * search the images for a matching name.
- *
- * 5. If we have a satellite bundle registered and this is a satellite request,
- * find the parent ALC and search the images for a matching name and culture.
- *
- * 6. If the ALC is the default or this is not a satellite request,
- * check the TPA list, APP_PATHS, and ApplicationBase.
- *
- * 7. If this is a satellite request, call the ALC ResolveSatelliteAssembly method.
- *
- * 8. Call the ALC Resolving event.
- *
- * 9. Call the ALC AssemblyResolve event (except for corlib satellite assemblies).
- *
- * 10. Return NULL.
- */
-
- reference = mono_assembly_loaded_internal (alc, aname, FALSE);
- if (reference) {
- mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_ASSEMBLY, "Assembly already loaded in the active ALC: '%s'.", aname->name);
- goto leave;
- }
-
- if (!is_default) {
- reference = mono_alc_invoke_resolve_using_load_nofail (alc, aname);
- if (reference) {
- mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_ASSEMBLY, "Assembly found using Load method: '%s'.", aname->name);
- goto leave;
- }
- }
-
- if (!is_default && !is_satellite) {
- reference = mono_assembly_loaded_internal (mono_domain_default_alc (mono_alc_domain (alc)), aname, FALSE);
- if (reference) {
- mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_ASSEMBLY, "Assembly already loaded in the default ALC: '%s'.", aname->name);
- goto leave;
- }
- }
-
- if (bundles != NULL && !is_satellite) {
- reference = search_bundle_for_assembly (mono_domain_default_alc (mono_alc_domain (alc)), aname);
- if (reference) {
- mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_ASSEMBLY, "Assembly found in the bundle: '%s'.", aname->name);
- goto leave;
- }
- }
-
- if (satellite_bundles != NULL && is_satellite) {
- // Satellite assembly byname requests should be loaded in the same ALC as their parent assembly
- size_t name_len = strlen (aname->name);
- char *parent_name = NULL;
- MonoAssemblyLoadContext *parent_alc = NULL;
- if (g_str_has_suffix (aname->name, MONO_ASSEMBLY_RESOURCE_SUFFIX))
- parent_name = g_strdup_printf ("%s.dll", g_strndup (aname->name, name_len - strlen (MONO_ASSEMBLY_RESOURCE_SUFFIX)));
-
- if (parent_name) {
- MonoAssemblyOpenRequest req;
- mono_assembly_request_prepare_open (&req, MONO_ASMCTX_DEFAULT, alc);
- MonoAssembly *parent_assembly = mono_assembly_request_open (parent_name, &req, NULL);
- parent_alc = mono_assembly_get_alc (parent_assembly);
- }
-
- if (parent_alc)
- reference = search_bundle_for_assembly (parent_alc, aname);
-
- if (reference) {
- mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_ASSEMBLY, "Assembly found in the satellite bundle: '%s'.", aname->name);
- goto leave;
- }
- }
-
- if (is_default || !is_satellite) {
- reference = invoke_assembly_preload_hook (mono_domain_default_alc (mono_alc_domain (alc)), aname, assemblies_path);
- if (reference) {
- mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_ASSEMBLY, "Assembly found with the filesystem probing logic: '%s'.", aname->name);
- goto leave;
- }
- }
-
- if (is_satellite) {
- reference = mono_alc_invoke_resolve_using_resolve_satellite_nofail (alc, aname);
- if (reference) {
- mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_ASSEMBLY, "Assembly found with ResolveSatelliteAssembly method: '%s'.", aname->name);
- goto leave;
- }
- }
-
- reference = mono_alc_invoke_resolve_using_resolving_event_nofail (alc, aname);
- if (reference) {
- mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_ASSEMBLY, "Assembly found with the Resolving event: '%s'.", aname->name);
- goto leave;
- }
-
- // Looking up corlib resources here can cause an infinite loop
- // See: https://github.com/dotnet/coreclr/blob/0a762eb2f3a299489c459da1ddeb69e042008f07/src/vm/appdomain.cpp#L5178-L5239
- if (!(strcmp (aname->name, MONO_ASSEMBLY_CORLIB_RESOURCE_NAME) == 0 && is_satellite) && postload) {
- reference = mono_assembly_invoke_search_hook_internal (alc, requesting, aname, FALSE, TRUE);
- if (reference) {
- mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_ASSEMBLY, "Assembly found with AssemblyResolve event: '%s'.", aname->name);
- goto leave;
- }
- }
-
-leave:
- return reference;
-}
-
-static MonoImage *
-open_from_satellite_bundle (MonoAssemblyLoadContext *alc, const char *filename, MonoImageOpenStatus *status, gboolean refonly, const char *culture)
-{
- if (!satellite_bundles)
- return NULL;
-
- MonoImage *image = NULL;
- char *name = g_strdup (filename);
- for (int i = 0; !image && satellite_bundles [i]; ++i) {
- if (strcmp (satellite_bundles [i]->name, name) == 0 && strcmp (satellite_bundles [i]->culture, culture) == 0) {
- image = mono_image_open_from_data_internal (alc, (char *)satellite_bundles [i]->data, satellite_bundles [i]->size, FALSE, status, refonly, FALSE, name, NULL);
- break;
- }
- }
-
- g_free (name);
- return image;
-}
-
-#endif /* ENABLE_NETCORE */
/**
* mono_assembly_get_assemblyref_checked:
@@ -1946,7 +1766,6 @@ mono_assembly_load_reference (MonoImage *image, int index)
aname_str);
g_free (aname_str);
}
-#ifndef ENABLE_NETCORE
switch (mono_asmctx_get_kind (&image->assembly->context)) {
case MONO_ASMCTX_DEFAULT:
reference = load_reference_by_aname_default_asmctx (&aname, mono_image_get_alc (image), image->assembly, &status);
@@ -1964,20 +1783,9 @@ mono_assembly_load_reference (MonoImage *image, int index)
g_error ("Unexpected assembly load context kind %d for image %s.", mono_asmctx_get_kind (&image->assembly->context), image->name);
break;
}
-#else
- MonoAssemblyByNameRequest req;
- mono_assembly_request_prepare_byname (&req, MONO_ASMCTX_DEFAULT, mono_image_get_alc (image));
- req.requesting_assembly = image->assembly;
- //req.no_postload_search = TRUE; // FIXME: should this be set?
- reference = mono_assembly_request_byname (&aname, &req, NULL);
-#endif
} else {
-#ifndef ENABLE_NETCORE
/* FIXME: can we establish that image->assembly is never NULL and this code is dead? */
reference = load_reference_by_aname_default_asmctx (&aname, mono_image_get_alc (image), image->assembly, &status);
-#else
- g_assertf (image->assembly, "While loading reference %d MonoImage %s doesn't have a MonoAssembly", index, image->name);
-#endif
}
if (reference == NULL){
@@ -2310,13 +2118,7 @@ invoke_assembly_preload_hook (MonoAssemblyLoadContext *alc, MonoAssemblyName *an
if (hook->version == 2)
assembly = hook->func.v2 (alc, aname, apath, FALSE, hook->user_data, error);
else { // v3
-#ifdef ENABLE_NETCORE
- MonoGCHandle strong_gchandle = mono_gchandle_from_handle (mono_gchandle_get_target_handle (alc->gchandle), TRUE);
- assembly = hook->func.v3 (strong_gchandle, aname, apath, hook->user_data, error);
- mono_gchandle_free_internal (strong_gchandle);
-#else
assembly = hook->func.v3 (NULL, aname, apath, hook->user_data, error);
-#endif
}
/* TODO: propagage error out to callers */
mono_error_assert_ok (error);
@@ -2593,12 +2395,7 @@ open_from_bundle_internal (MonoAssemblyLoadContext *alc, const char *filename, M
char *name = is_satellite ? g_strdup (filename) : g_path_get_basename (filename);
for (int i = 0; !image && bundles [i]; ++i) {
if (strcmp (bundles [i]->name, name) == 0) {
-#ifdef ENABLE_NETCORE
- // Since bundled images don't exist on disk, don't give them a legit filename
- image = mono_image_open_from_data_internal (alc, (char*)bundles [i]->data, bundles [i]->size, FALSE, status, refonly, FALSE, name, NULL);
-#else
image = mono_image_open_from_data_internal (alc, (char*)bundles [i]->data, bundles [i]->size, FALSE, status, refonly, FALSE, name, name);
-#endif
break;
}
}
@@ -2624,7 +2421,6 @@ mono_assembly_open_from_bundle (MonoAssemblyLoadContext *alc, const char *filena
* purpose assembly loading mechanism.
*/
MonoImage *image = NULL;
-#ifndef ENABLE_NETCORE
if (!bundles)
return NULL;
@@ -2632,13 +2428,6 @@ mono_assembly_open_from_bundle (MonoAssemblyLoadContext *alc, const char *filena
gboolean is_satellite = g_str_has_suffix (lowercase_filename, ".resources.dll");
g_free (lowercase_filename);
image = open_from_bundle_internal (alc, filename, status, refonly, is_satellite);
-#else
- gboolean is_satellite = culture && culture [0] != 0;;
- if (is_satellite)
- image = open_from_satellite_bundle (alc, filename, status, refonly, culture);
- else
- image = open_from_bundle_internal (alc, filename, status, refonly, FALSE);
-#endif
if (image) {
mono_image_addref (image);
@@ -2857,10 +2646,8 @@ mono_assembly_request_open (const char *filename, const MonoAssemblyOpenRequest
if (!loaded_from_bundle)
mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_ASSEMBLY,
"Assembly Loader loaded assembly from location: '%s'.", filename);
-#ifndef ENABLE_NETCORE // no XML file loading on netcore
if (!refonly)
mono_config_for_assembly_internal (ass->image);
-#endif
}
/* Clear the reference added by mono_image_open */
@@ -3034,13 +2821,11 @@ chain_redirections_loadfrom (MonoAssemblyLoadContext *alc, MonoImage *image, Mon
MonoImageOpenStatus status = MONO_IMAGE_OK;
MonoAssembly *redirected = NULL;
-#ifndef ENABLE_NETCORE
redirected = mono_assembly_binding_applies_to_image (alc, image, &status);
if (redirected || status != MONO_IMAGE_OK) {
*out_status = status;
return redirected;
}
-#endif
redirected = mono_problematic_image_reprobe (alc, image, &status);
if (redirected || status != MONO_IMAGE_OK) {
@@ -3052,7 +2837,6 @@ chain_redirections_loadfrom (MonoAssemblyLoadContext *alc, MonoImage *image, Mon
return NULL;
}
-#ifndef ENABLE_NETCORE
/**
* mono_assembly_binding_applies_to_image:
* \param alc AssemblyLoadContext to load into
@@ -3116,7 +2900,6 @@ mono_assembly_binding_applies_to_image (MonoAssemblyLoadContext *alc, MonoImage*
mono_assembly_name_free_internal (&probed_aname);
return result_ass;
}
-#endif
/**
* mono_problematic_image_reprobe:
@@ -3547,48 +3330,6 @@ build_assembly_name (const char *name, const char *version, const char *culture,
memset (aname, 0, sizeof (MonoAssemblyName));
if (version) {
-#ifdef ENABLE_NETCORE
- int parts [4];
- int i;
- int part_len;
-
- parts [2] = -1;
- parts [3] = -1;
- const char *s = version;
- version_parts = 0;
- for (i = 0; i < 4; ++i) {
- int n = sscanf (s, "%u%n", &parts [i], &part_len);
- if (n != 1)
- return FALSE;
- if (parts [i] < 0 || parts [i] > 65535)
- return FALSE;
- if (i < 2 && parts [i] == 65535)
- return FALSE;
- version_parts ++;
- s += part_len;
- if (s [0] == '\0')
- break;
- if (i < 3) {
- if (s [0] != '.')
- return FALSE;
- s ++;
- }
- }
- if (s [0] != '\0')
- return FALSE;
- if (version_parts < 2 || version_parts > 4)
- return FALSE;
- aname->major = parts [0];
- aname->minor = parts [1];
- if (version_parts >= 3)
- aname->build = parts [2];
- else
- aname->build = -1;
- if (version_parts == 4)
- aname->revision = parts [3];
- else
- aname->revision = -1;
-#else
gint major, minor, build, revision;
version_parts = sscanf (version, "%u.%u.%u.%u", &major, &minor, &build, &revision);
@@ -3608,7 +3349,6 @@ build_assembly_name (const char *name, const char *version, const char *culture,
aname->revision = revision;
else
aname->revision = 0;
-#endif
}
aname->flags = flags;
@@ -3838,9 +3578,6 @@ mono_assembly_name_parse_full (const char *name, MonoAssemblyName *aname, gboole
goto cleanup_and_fail;
}
-#ifdef ENABLE_NETCORE
- flags |= arch << 4;
-#endif
g_free (procarch_uq);
tmp++;
@@ -4492,7 +4229,6 @@ mono_domain_parse_assembly_bindings (MonoDomain *domain, int amajor, int aminor,
mono_domain_unlock (domain);
}
-#ifndef ENABLE_NETCORE
static MonoAssemblyName*
mono_assembly_apply_binding (MonoAssemblyName *aname, MonoAssemblyName *dest_name)
{
@@ -4605,7 +4341,6 @@ return_aname:
exit:
HANDLE_FUNCTION_RETURN_VAL (result);
}
-#endif
#ifndef DISABLE_GAC
/**
@@ -4699,24 +4434,6 @@ mono_assembly_load_corlib (const MonoRuntimeInfo *runtime, MonoImageOpenStatus *
return corlib;
}
-#ifdef ENABLE_NETCORE
- aname = mono_assembly_name_new (MONO_ASSEMBLY_CORLIB_NAME);
- corlib = invoke_assembly_preload_hook (req.request.alc, aname, NULL);
- /* MonoCore preload hook should know how to find it */
- /* FIXME: AOT compiler comes here without an installed hook. */
- if (!corlib) {
- if (assemblies_path) { // Custom assemblies path set via MONO_PATH or mono_set_assemblies_path
- char *corlib_name = g_strdup_printf ("%s.dll", MONO_ASSEMBLY_CORLIB_NAME);
- corlib = load_in_path (corlib_name, (const char**)assemblies_path, &req, status);
- }
- }
- if (!corlib) {
- /* Maybe its in a bundle */
- char *corlib_name = g_strdup_printf ("%s.dll", MONO_ASSEMBLY_CORLIB_NAME);
- corlib = mono_assembly_request_open (corlib_name, &req, status);
- }
- g_assert (corlib);
-#else
// A nonstandard preload hook may provide a special mscorlib assembly
aname = mono_assembly_name_new ("mscorlib.dll");
corlib = invoke_assembly_preload_hook (req.request.alc, aname, assemblies_path);
@@ -4748,7 +4465,6 @@ mono_assembly_load_corlib (const MonoRuntimeInfo *runtime, MonoImageOpenStatus *
return_corlib_and_facades:
if (corlib) // FIXME: stop hardcoding 4.5 here
default_path [1] = g_strdup_printf ("%s/Facades", corlib->basedir);
-#endif /*!ENABLE_NETCORE*/
return corlib;
}
@@ -4785,9 +4501,6 @@ mono_assembly_candidate_predicate_sn_same_name (MonoAssembly *candidate, gpointe
g_free (s);
}
-#ifdef ENABLE_NETCORE
- return mono_assembly_check_name_match (wanted_name, candidate_name);
-#else
/* Wanted name has no token, not strongly named: always matches. */
if (0 == wanted_name->public_key_token [0]) {
mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_ASSEMBLY, "Predicate: wanted has no token, returning TRUE");
@@ -4802,19 +4515,12 @@ mono_assembly_candidate_predicate_sn_same_name (MonoAssembly *candidate, gpointe
return mono_assembly_check_name_match (wanted_name, candidate_name) ||
framework_assembly_sn_match (wanted_name, candidate_name);
-#endif
}
gboolean
mono_assembly_check_name_match (MonoAssemblyName *wanted_name, MonoAssemblyName *candidate_name)
{
-#if ENABLE_NETCORE
- gboolean result = mono_assembly_names_equal_flags (wanted_name, candidate_name, MONO_ANAME_EQ_IGNORE_VERSION | MONO_ANAME_EQ_IGNORE_PUBKEY);
- if (result && assembly_names_compare_versions (wanted_name, candidate_name, -1) > 0)
- result = FALSE;
-#else
gboolean result = mono_assembly_names_equal_flags (wanted_name, candidate_name, MONO_ANAME_EQ_NONE);
-#endif
mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_ASSEMBLY, "Predicate: candidate and wanted names %s",
result ? "match, returning TRUE" : "don't match, returning FALSE");
@@ -4856,7 +4562,6 @@ framework_assembly_sn_match (MonoAssemblyName *wanted_name, MonoAssemblyName *ca
return FALSE;
}
-#ifndef ENABLE_NETCORE
static MonoAssembly*
mono_assembly_request_byname_nosearch (MonoAssemblyName *aname,
const MonoAssemblyByNameRequest *req,
@@ -4887,7 +4592,6 @@ mono_assembly_request_byname_nosearch (MonoAssemblyName *aname,
result = mono_assembly_load_full_gac_base_default (aname, req->basedir, req->request.alc, req->request.asmctx, status);
return result;
}
-#endif
/* Like mono_assembly_request_byname_nosearch, but don't ask the preload look (ie,
* the appdomain) to run. Just looks in the gac, the specified base dir or the
@@ -4987,7 +4691,6 @@ mono_assembly_request_byname (MonoAssemblyName *aname, const MonoAssemblyByNameR
MonoAssembly *result;
if (status)
*status = MONO_IMAGE_OK;
-#ifndef ENABLE_NETCORE
result = mono_assembly_request_byname_nosearch (aname, req, status);
const gboolean refonly = req->request.asmctx == MONO_ASMCTX_REFONLY;
@@ -4996,9 +4699,6 @@ mono_assembly_request_byname (MonoAssemblyName *aname, const MonoAssemblyByNameR
result = mono_assembly_invoke_search_hook_internal (req->request.alc, req->requesting_assembly, aname, refonly, TRUE);
result = prevent_reference_assembly_from_running (result, refonly);
}
-#else
- result = netcore_load_reference (aname, req->request.alc, req->requesting_assembly, !req->no_postload_search);
-#endif
return result;
}
@@ -5008,11 +4708,7 @@ mono_assembly_load_full_alc (MonoGCHandle alc_gchandle, MonoAssemblyName *aname,
MonoAssembly *res;
MONO_ENTER_GC_UNSAFE;
MonoAssemblyByNameRequest req;
-#ifdef ENABLE_NETCORE
- MonoAssemblyLoadContext *alc = mono_alc_from_gchandle (alc_gchandle);
-#else
MonoAssemblyLoadContext *alc = mono_domain_default_alc (mono_domain_get ());
-#endif
mono_assembly_request_prepare_byname (&req, MONO_ASMCTX_DEFAULT, alc);
req.requesting_assembly = NULL;
req.basedir = basedir;
@@ -5416,9 +5112,6 @@ mono_create_new_bundled_satellite_assembly (const char *name, const char *cultur
void
mono_register_bundled_satellite_assemblies (const MonoBundledSatelliteAssembly **assemblies)
{
-#ifdef ENABLE_NETCORE
- satellite_bundles = assemblies;
-#endif
}
#define MONO_DECLSEC_FORMAT_10 0x3C