You've already forked linux-packaging-mono
Imported Upstream version 4.4.0.122
Former-commit-id: a99f46acaeba3ab496c7afc02c29b839e30a0d0b
This commit is contained in:
@@ -49,10 +49,12 @@
|
||||
#include <mach-o/dyld.h>
|
||||
#endif
|
||||
|
||||
/* AssemblyVersionMap: an assembly name and the assembly version set on which it is based */
|
||||
/* AssemblyVersionMap: an assembly name, the assembly version set on which it is based, the assembly name it is replaced with and whether only versions lower than the current runtime version should be remapped */
|
||||
typedef struct {
|
||||
const char* assembly_name;
|
||||
guint8 version_set_index;
|
||||
const char* new_assembly_name;
|
||||
gboolean only_lower_versions;
|
||||
} AssemblyVersionMap;
|
||||
|
||||
/* the default search path is empty, the first slot is replaced with the computed value */
|
||||
@@ -88,8 +90,12 @@ static const AssemblyVersionMap framework_assemblies [] = {
|
||||
{"I18N.Other", 0},
|
||||
{"I18N.Rare", 0},
|
||||
{"I18N.West", 0},
|
||||
{"Microsoft.Build.Engine", 2},
|
||||
{"Microsoft.Build.Framework", 2},
|
||||
{"Microsoft.Build.Engine", 2, NULL, TRUE},
|
||||
{"Microsoft.Build.Framework", 2, NULL, TRUE},
|
||||
{"Microsoft.Build.Tasks", 2, "Microsoft.Build.Tasks.v4.0"},
|
||||
{"Microsoft.Build.Tasks.v3.5", 2, "Microsoft.Build.Tasks.v4.0"},
|
||||
{"Microsoft.Build.Utilities", 2, "Microsoft.Build.Utilities.v4.0"},
|
||||
{"Microsoft.Build.Utilities.v3.5", 2, "Microsoft.Build.Utilities.v4.0"},
|
||||
{"Microsoft.VisualBasic", 1},
|
||||
{"Microsoft.VisualC", 1},
|
||||
{"Mono.Cairo", 0},
|
||||
@@ -1013,6 +1019,9 @@ mono_assembly_remap_version (MonoAssemblyName *aname, MonoAssemblyName *dest_ana
|
||||
aname->build == vset->build && aname->revision == vset->revision)
|
||||
return aname;
|
||||
|
||||
if (framework_assemblies[pos].only_lower_versions && compare_versions ((AssemblyVersionSet*)vset, aname) < 0)
|
||||
return aname;
|
||||
|
||||
if ((aname->major | aname->minor | aname->build | aname->revision) != 0)
|
||||
mono_trace (G_LOG_LEVEL_WARNING, MONO_TRACE_ASSEMBLY,
|
||||
"The request to load the assembly %s v%d.%d.%d.%d was remapped to v%d.%d.%d.%d",
|
||||
@@ -1026,6 +1035,13 @@ mono_assembly_remap_version (MonoAssemblyName *aname, MonoAssemblyName *dest_ana
|
||||
dest_aname->minor = vset->minor;
|
||||
dest_aname->build = vset->build;
|
||||
dest_aname->revision = vset->revision;
|
||||
if (framework_assemblies[pos].new_assembly_name != NULL) {
|
||||
dest_aname->name = framework_assemblies[pos].new_assembly_name;
|
||||
mono_trace (G_LOG_LEVEL_WARNING, MONO_TRACE_ASSEMBLY,
|
||||
"The assembly name %s was remapped to %s",
|
||||
aname->name,
|
||||
dest_aname->name);
|
||||
}
|
||||
return dest_aname;
|
||||
} else if (res < 0) {
|
||||
last = pos - 1;
|
||||
@@ -2546,8 +2562,9 @@ mono_assembly_load_publisher_policy (MonoAssemblyName *aname)
|
||||
|
||||
if (strstr (aname->name, ".dll")) {
|
||||
len = strlen (aname->name) - 4;
|
||||
name = (gchar *)g_malloc (len);
|
||||
name = (gchar *)g_malloc (len + 1);
|
||||
strncpy (name, aname->name, len);
|
||||
name[len] = 0;
|
||||
} else
|
||||
name = g_strdup (aname->name);
|
||||
|
||||
@@ -2857,8 +2874,9 @@ mono_assembly_load_from_gac (MonoAssemblyName *aname, gchar *filename, MonoImag
|
||||
|
||||
if (strstr (aname->name, ".dll")) {
|
||||
len = strlen (filename) - 4;
|
||||
name = (gchar *)g_malloc (len);
|
||||
name = (gchar *)g_malloc (len + 1);
|
||||
strncpy (name, aname->name, len);
|
||||
name[len] = 0;
|
||||
} else {
|
||||
name = g_strdup (aname->name);
|
||||
}
|
||||
|
||||
@@ -517,7 +517,6 @@ struct _MonoMethodInflated {
|
||||
MonoMethod method;
|
||||
MonoMethodPInvoke pinvoke;
|
||||
} method;
|
||||
MonoMethodHeader *header;
|
||||
MonoMethod *declaring; /* the generic method definition. */
|
||||
MonoGenericContext context; /* The current instantiation */
|
||||
MonoImageSet *owner; /* The image set that the inflated method belongs to. */
|
||||
|
||||
@@ -935,8 +935,8 @@ mono_cleanup (void)
|
||||
mono_loader_cleanup ();
|
||||
mono_classes_cleanup ();
|
||||
mono_assemblies_cleanup ();
|
||||
mono_images_cleanup ();
|
||||
mono_debug_cleanup ();
|
||||
mono_images_cleanup ();
|
||||
mono_metadata_cleanup ();
|
||||
|
||||
mono_native_tls_free (appdomain_thread_id);
|
||||
|
||||
@@ -1 +1 @@
|
||||
e48934f8d82dd4794e2fc56288e9dd994bc370a8
|
||||
6f8827dfb84f99f9c320aaf3b0ab5c9ac82e720e
|
||||
@@ -509,9 +509,19 @@ load_metadata_ptrs (MonoImage *image, MonoCLIImageInfo *iinfo)
|
||||
|
||||
i = ((MonoImageLoader*)image->loader)->load_tables (image);
|
||||
g_assert (image->heap_guid.data);
|
||||
g_assert (image->heap_guid.size >= 16);
|
||||
|
||||
image->guid = mono_guid_to_string ((guint8*)image->heap_guid.data);
|
||||
if (!image->metadata_only) {
|
||||
g_assert (image->heap_guid.size >= 16);
|
||||
|
||||
image->guid = mono_guid_to_string ((guint8*)image->heap_guid.data);
|
||||
} else {
|
||||
/* PPDB files have no guid */
|
||||
guint8 empty_guid [16];
|
||||
|
||||
memset (empty_guid, 0, sizeof (empty_guid));
|
||||
|
||||
image->guid = mono_guid_to_string (empty_guid);
|
||||
}
|
||||
|
||||
return i;
|
||||
}
|
||||
|
||||
@@ -873,21 +873,25 @@ mono_inflate_generic_signature (MonoMethodSignature *sig, MonoGenericContext *co
|
||||
static MonoMethodHeader*
|
||||
inflate_generic_header (MonoMethodHeader *header, MonoGenericContext *context)
|
||||
{
|
||||
MonoMethodHeader *res;
|
||||
int i;
|
||||
res = (MonoMethodHeader *)g_malloc0 (MONO_SIZEOF_METHOD_HEADER + sizeof (gpointer) * header->num_locals);
|
||||
size_t locals_size = sizeof (gpointer) * header->num_locals;
|
||||
size_t clauses_size = header->num_clauses * sizeof (MonoExceptionClause);
|
||||
size_t header_size = MONO_SIZEOF_METHOD_HEADER + locals_size + clauses_size;
|
||||
MonoMethodHeader *res = (MonoMethodHeader *)g_malloc0 (header_size);
|
||||
res->num_locals = header->num_locals;
|
||||
res->clauses = (MonoExceptionClause *) &res->locals [res->num_locals] ;
|
||||
memcpy (res->clauses, header->clauses, clauses_size);
|
||||
|
||||
res->code = header->code;
|
||||
res->code_size = header->code_size;
|
||||
res->max_stack = header->max_stack;
|
||||
res->num_clauses = header->num_clauses;
|
||||
res->init_locals = header->init_locals;
|
||||
res->num_locals = header->num_locals;
|
||||
res->clauses = header->clauses;
|
||||
for (i = 0; i < header->num_locals; ++i)
|
||||
|
||||
res->is_transient = TRUE;
|
||||
for (int i = 0; i < header->num_locals; ++i)
|
||||
res->locals [i] = mono_class_inflate_generic_type (header->locals [i], context);
|
||||
if (res->num_clauses) {
|
||||
res->clauses = (MonoExceptionClause *)g_memdup (header->clauses, sizeof (MonoExceptionClause) * res->num_clauses);
|
||||
for (i = 0; i < header->num_clauses; ++i) {
|
||||
for (int i = 0; i < header->num_clauses; ++i) {
|
||||
MonoExceptionClause *clause = &res->clauses [i];
|
||||
if (clause->flags != MONO_EXCEPTION_CLAUSE_NONE)
|
||||
continue;
|
||||
@@ -2821,20 +2825,7 @@ mono_method_get_header (MonoMethod *method)
|
||||
iheader = inflate_generic_header (header, mono_method_get_context (method));
|
||||
mono_metadata_free_mh (header);
|
||||
|
||||
mono_image_lock (img);
|
||||
|
||||
if (imethod->header) {
|
||||
mono_metadata_free_mh (iheader);
|
||||
mono_image_unlock (img);
|
||||
return imethod->header;
|
||||
}
|
||||
|
||||
mono_memory_barrier ();
|
||||
imethod->header = iheader;
|
||||
|
||||
mono_image_unlock (img);
|
||||
|
||||
return imethod->header;
|
||||
return iheader;
|
||||
}
|
||||
|
||||
if (method->wrapper_type != MONO_WRAPPER_NONE || method->sre_method) {
|
||||
|
||||
@@ -1 +1 @@
|
||||
e50ad0288c968135460f054b7e73e34f5406f363
|
||||
a4ff3a17390cd25aa67e4084019cd0777669b06d
|
||||
@@ -239,6 +239,8 @@ bb_split (MonoSimpleBasicBlock *first, MonoSimpleBasicBlock *hint, MonoSimpleBas
|
||||
{
|
||||
MonoSimpleBasicBlock *res, *bb = first;
|
||||
|
||||
mono_error_init (error);
|
||||
|
||||
if (bb_idx_is_contained (hint, target)) {
|
||||
first = hint;
|
||||
} else if (hint->next && bb_idx_is_contained (hint->next, target)) {
|
||||
@@ -335,6 +337,8 @@ bb_formation_il_pass (const unsigned char *start, const unsigned char *end, Mono
|
||||
MonoSimpleBasicBlock *branch, *next, *current;
|
||||
const MonoOpcode *opcode;
|
||||
|
||||
mono_error_init (error);
|
||||
|
||||
current = bb;
|
||||
|
||||
while (ip < end) {
|
||||
@@ -463,6 +467,9 @@ bb_formation_eh_pass (MonoMethodHeader *header, MonoSimpleBasicBlock *bb, MonoSi
|
||||
{
|
||||
int i;
|
||||
int end = header->code_size;
|
||||
|
||||
mono_error_init (error);
|
||||
|
||||
/*We must split at all points to verify for targets in the middle of an instruction*/
|
||||
for (i = 0; i < header->num_clauses; ++i) {
|
||||
MonoExceptionClause *clause = header->clauses + i;
|
||||
@@ -514,19 +521,13 @@ mono_basic_block_free (MonoSimpleBasicBlock *bb)
|
||||
* Return the list of basic blocks of method. Return NULL on failure and set @error.
|
||||
*/
|
||||
MonoSimpleBasicBlock*
|
||||
mono_basic_block_split (MonoMethod *method, MonoError *error)
|
||||
mono_basic_block_split (MonoMethod *method, MonoError *error, MonoMethodHeader *header)
|
||||
{
|
||||
MonoSimpleBasicBlock *bb, *root;
|
||||
const unsigned char *start, *end;
|
||||
MonoMethodHeader *header = mono_method_get_header (method);
|
||||
|
||||
mono_error_init (error);
|
||||
|
||||
if (!header) {
|
||||
mono_error_set_not_verifiable (error, method, "Could not decode header");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
start = header->code;
|
||||
end = start + header->code_size;
|
||||
|
||||
@@ -551,11 +552,9 @@ mono_basic_block_split (MonoMethod *method, MonoError *error)
|
||||
dump_bb_list (bb, &root, g_strdup_printf("AFTER LIVENESS %s", mono_method_full_name (method, TRUE)));
|
||||
#endif
|
||||
|
||||
mono_metadata_free_mh (header);
|
||||
return bb;
|
||||
|
||||
fail:
|
||||
mono_metadata_free_mh (header);
|
||||
mono_basic_block_free (bb);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ struct _MonoSimpleBasicBlock {
|
||||
};
|
||||
|
||||
MonoSimpleBasicBlock*
|
||||
mono_basic_block_split (MonoMethod *method, MonoError *error);
|
||||
mono_basic_block_split (MonoMethod *method, MonoError *error, MonoMethodHeader *header);
|
||||
|
||||
void
|
||||
mono_basic_block_free (MonoSimpleBasicBlock *bb);
|
||||
|
||||
@@ -285,8 +285,8 @@ dllmap_start (gpointer user_data,
|
||||
char *result;
|
||||
|
||||
result = (char *)g_malloc (libdir_len-strlen("$mono_libdir")+strlen(attribute_values[i])+1);
|
||||
strncpy (result, attribute_names[i], p-attribute_values[i]);
|
||||
strcat (result, libdir);
|
||||
strncpy (result, attribute_values[i], p-attribute_values[i]);
|
||||
strcpy (result+(p-attribute_values[i]), libdir);
|
||||
strcat (result, p+strlen("$mono_libdir"));
|
||||
info->target = result;
|
||||
} else
|
||||
|
||||
@@ -867,7 +867,7 @@ gint64 ves_icall_System_Diagnostics_Process_StartTime_internal (HANDLE process)
|
||||
|
||||
gint32 ves_icall_System_Diagnostics_Process_ExitCode_internal (HANDLE process)
|
||||
{
|
||||
DWORD code;
|
||||
DWORD code = 0;
|
||||
|
||||
GetExitCodeProcess (process, &code);
|
||||
|
||||
|
||||
@@ -8,6 +8,9 @@
|
||||
#include <mono/utils/mono-compiler.h>
|
||||
#include <mono/utils/mono-error.h>
|
||||
|
||||
MonoType*
|
||||
mono_reflection_get_type_checked (MonoImage *rootimage, MonoImage* image, MonoTypeNameParse *info, mono_bool ignorecase, mono_bool *type_resolve);
|
||||
|
||||
MonoObject*
|
||||
mono_custom_attrs_get_attr_checked (MonoCustomAttrInfo *ainfo, MonoClass *attr_klass, MonoError *error);
|
||||
|
||||
|
||||
@@ -1 +1 @@
|
||||
9765c61de2ebb89a23549f49a6cafb7c0c0ca36d
|
||||
258308a0a883826613bae9322e5a1463ac1a5a2c
|
||||
@@ -522,7 +522,7 @@ worker_park (void)
|
||||
if (interrupted)
|
||||
goto done;
|
||||
|
||||
if (mono_coop_cond_timedwait (&threadpool->parked_threads_cond, &threadpool->active_threads_lock, rand_next ((void **)rand_handle, 5 * 1000, 60 * 1000)) != 0)
|
||||
if (mono_coop_cond_timedwait (&threadpool->parked_threads_cond, &threadpool->active_threads_lock, rand_next (&rand_handle, 5 * 1000, 60 * 1000)) != 0)
|
||||
timeout = TRUE;
|
||||
|
||||
mono_thread_info_uninstall_interrupt (&interrupted);
|
||||
|
||||
@@ -1 +1 @@
|
||||
e9af9516a1b4652f3e43ca9b3dd254addad43a0f
|
||||
711107ac5200b078d25785ce5854a2ab4ef20e5e
|
||||
@@ -801,7 +801,7 @@ EXTRA_DIST = TestDriver.cs \
|
||||
Makefile.am.in
|
||||
|
||||
version.h: Makefile
|
||||
echo "#define FULL_VERSION \"Stable 4.4.0.40/f8474c4\"" > version.h
|
||||
echo "#define FULL_VERSION \"Stable 4.4.0.122/a3fabf1\"" > version.h
|
||||
|
||||
# Utility target for patching libtool to speed up linking
|
||||
patch-libtool:
|
||||
|
||||
@@ -801,7 +801,7 @@ EXTRA_DIST = TestDriver.cs \
|
||||
Makefile.am.in
|
||||
|
||||
version.h: Makefile
|
||||
echo "#define FULL_VERSION \"Stable 4.4.0.40/f8474c4\"" > version.h
|
||||
echo "#define FULL_VERSION \"Stable 4.4.0.122/a3fabf1\"" > version.h
|
||||
|
||||
# Utility target for patching libtool to speed up linking
|
||||
patch-libtool:
|
||||
|
||||
@@ -1 +1 @@
|
||||
feaddf3ea0bb6cd34b061a30d89031f0d11d66ec
|
||||
c30141f67c9a2e03366c40284ff6f85c7ec12f08
|
||||
@@ -1 +1 @@
|
||||
26979427a0ebbb4e979939dad6a0e766cc2b6917
|
||||
c40ca98ce5a35a78b5c13a82796c7d90c988d66e
|
||||
@@ -1 +1 @@
|
||||
26d4d91456e706536c43cb083afe6adde5d651e0
|
||||
1c829de55ab1a77e98f4eee2f2db9532481d0839
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user