You've already forked linux-packaging-mono
Imported Upstream version 4.8.0.472
Former-commit-id: 1fce58ff6397a8cf9d2fca6564b434613689c418
This commit is contained in:
parent
e5cd25ff4f
commit
5586c61ea6
20
man/mono.1
20
man/mono.1
@@ -844,6 +844,26 @@ The offsets displayed are IL offsets.
|
|||||||
.PP
|
.PP
|
||||||
A more powerful coverage tool is available in the module `monocov'.
|
A more powerful coverage tool is available in the module `monocov'.
|
||||||
See the monocov(1) man page for details.
|
See the monocov(1) man page for details.
|
||||||
|
.SH AOT PROFILING
|
||||||
|
You can improve startup performance by using the AOT profiler.
|
||||||
|
.PP
|
||||||
|
Typically the AOT compiler (\fBmono --aot\fR) will not generate code
|
||||||
|
for generic instantiations. To solve this, you can run Mono with the
|
||||||
|
AOT profiler to find out all the generic instantiations that are used,
|
||||||
|
and then instructing the AOT compiler to produce code for these.
|
||||||
|
.PP
|
||||||
|
This command will run the specified app.exe and produce the
|
||||||
|
\fBout.aotprof\fR file with the data describing the generic
|
||||||
|
instantiations that are needed:
|
||||||
|
.nf
|
||||||
|
$ mono --profile=aot:output=out.aotprof app.exe
|
||||||
|
.fi
|
||||||
|
.PP
|
||||||
|
Once you have this data, you can pass this to Mono's AOT compiler to
|
||||||
|
instruct it to generate code for it:
|
||||||
|
.nf
|
||||||
|
$ mono --aot=profile=out.aotprof
|
||||||
|
.fi
|
||||||
.SH DEBUGGING AIDS
|
.SH DEBUGGING AIDS
|
||||||
To debug managed applications, you can use the
|
To debug managed applications, you can use the
|
||||||
.B mdb
|
.B mdb
|
||||||
|
@@ -11,9 +11,9 @@
|
|||||||
namespace System.Transactions
|
namespace System.Transactions
|
||||||
{
|
{
|
||||||
public delegate Transaction HostCurrentTransactionCallback ();
|
public delegate Transaction HostCurrentTransactionCallback ();
|
||||||
public delegate void TransactionCompletedEventHandler (object o,
|
public delegate void TransactionCompletedEventHandler (object sender,
|
||||||
TransactionEventArgs e);
|
TransactionEventArgs e);
|
||||||
public delegate void TransactionStartedEventHandler (object o,
|
public delegate void TransactionStartedEventHandler (object sender,
|
||||||
TransactionEventArgs e);
|
TransactionEventArgs e);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -189,6 +189,26 @@ namespace System.Transactions
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void SetDistributedTransactionIdentifier (IPromotableSinglePhaseNotification promotableNotification, Guid distributedTransactionIdentifier)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException ();
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool EnlistPromotableSinglePhase (IPromotableSinglePhaseNotification promotableSinglePhaseNotification, Guid promoterType)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException ();
|
||||||
|
}
|
||||||
|
|
||||||
|
public byte[] GetPromotedToken ()
|
||||||
|
{
|
||||||
|
throw new NotImplementedException ();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Guid PromoterType
|
||||||
|
{
|
||||||
|
get { throw new NotImplementedException (); }
|
||||||
|
}
|
||||||
|
|
||||||
[MonoTODO ("EnlistmentOptions being ignored")]
|
[MonoTODO ("EnlistmentOptions being ignored")]
|
||||||
public Enlistment EnlistVolatile (
|
public Enlistment EnlistVolatile (
|
||||||
IEnlistmentNotification notification,
|
IEnlistmentNotification notification,
|
||||||
@@ -218,6 +238,17 @@ namespace System.Transactions
|
|||||||
return new Enlistment ();
|
return new Enlistment ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[MonoTODO ("Only Local Transaction Manager supported. Cannot have more than 1 durable resource per transaction.")]
|
||||||
|
[PermissionSetAttribute (SecurityAction.LinkDemand)]
|
||||||
|
public Enlistment PromoteAndEnlistDurable (
|
||||||
|
Guid manager,
|
||||||
|
IPromotableSinglePhaseNotification promotableNotification,
|
||||||
|
ISinglePhaseNotification notification,
|
||||||
|
EnlistmentOptions options)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException ("DTC unsupported, multiple durable resource managers aren't supported.");
|
||||||
|
}
|
||||||
|
|
||||||
public override bool Equals (object obj)
|
public override bool Equals (object obj)
|
||||||
{
|
{
|
||||||
return Equals (obj as Transaction);
|
return Equals (obj as Transaction);
|
||||||
|
@@ -14,7 +14,7 @@ namespace System.Transactions
|
|||||||
[Serializable]
|
[Serializable]
|
||||||
public class TransactionException : SystemException
|
public class TransactionException : SystemException
|
||||||
{
|
{
|
||||||
protected TransactionException ()
|
public TransactionException ()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -14,7 +14,7 @@ namespace System.Transactions
|
|||||||
[Serializable]
|
[Serializable]
|
||||||
public class TransactionInDoubtException : TransactionException
|
public class TransactionInDoubtException : TransactionException
|
||||||
{
|
{
|
||||||
protected TransactionInDoubtException ()
|
public TransactionInDoubtException ()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -15,6 +15,8 @@ namespace System.Transactions
|
|||||||
[MonoTODO]
|
[MonoTODO]
|
||||||
public static class TransactionInterop
|
public static class TransactionInterop
|
||||||
{
|
{
|
||||||
|
public static readonly Guid PromoterTypeDtc = new Guid ("14229753-FFE1-428D-82B7-DF73045CB8DA");
|
||||||
|
|
||||||
[MonoTODO]
|
[MonoTODO]
|
||||||
public static IDtcTransaction GetDtcTransaction (Transaction transaction)
|
public static IDtcTransaction GetDtcTransaction (Transaction transaction)
|
||||||
{
|
{
|
||||||
|
@@ -14,7 +14,7 @@ namespace System.Transactions
|
|||||||
[Serializable]
|
[Serializable]
|
||||||
public class TransactionManagerCommunicationException : TransactionException
|
public class TransactionManagerCommunicationException : TransactionException
|
||||||
{
|
{
|
||||||
protected TransactionManagerCommunicationException ()
|
public TransactionManagerCommunicationException ()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -14,7 +14,7 @@ namespace System.Transactions
|
|||||||
[Serializable]
|
[Serializable]
|
||||||
public class TransactionPromotionException : TransactionException
|
public class TransactionPromotionException : TransactionException
|
||||||
{
|
{
|
||||||
protected TransactionPromotionException ()
|
public TransactionPromotionException ()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -102,6 +102,26 @@ namespace System.Transactions
|
|||||||
TransactionManager.DefaultTimeout, TransactionScopeAsyncFlowOption.Suppress);
|
TransactionManager.DefaultTimeout, TransactionScopeAsyncFlowOption.Suppress);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public TransactionScope (Transaction transactionToUse,
|
||||||
|
TransactionScopeAsyncFlowOption asyncFlowOption)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException ();
|
||||||
|
}
|
||||||
|
|
||||||
|
public TransactionScope (Transaction transactionToUse,
|
||||||
|
TimeSpan scopeTimeout,
|
||||||
|
TransactionScopeAsyncFlowOption asyncFlowOption)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException ();
|
||||||
|
}
|
||||||
|
|
||||||
|
public TransactionScope (TransactionScopeOption scopeOption,
|
||||||
|
TransactionOptions transactionOptions,
|
||||||
|
TransactionScopeAsyncFlowOption asyncFlowOption)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException ();
|
||||||
|
}
|
||||||
|
|
||||||
void Initialize (TransactionScopeOption scopeOption,
|
void Initialize (TransactionScopeOption scopeOption,
|
||||||
Transaction tx, TransactionOptions options,
|
Transaction tx, TransactionOptions options,
|
||||||
DTCOption interop, TimeSpan timeout, TransactionScopeAsyncFlowOption asyncFlow)
|
DTCOption interop, TimeSpan timeout, TransactionScopeAsyncFlowOption asyncFlow)
|
||||||
|
@@ -20,6 +20,10 @@ $(error Unknown framework version)
|
|||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq ($(PROFILE),build)
|
||||||
|
CSC_RUNTIME_FLAGS=--profile=aot:output=$(topdir)/class/lib/build/csc.aotprofile
|
||||||
|
endif
|
||||||
|
|
||||||
RESOURCE_STRINGS = ../referencesource/mscorlib/mscorlib.txt
|
RESOURCE_STRINGS = ../referencesource/mscorlib/mscorlib.txt
|
||||||
|
|
||||||
LIBRARY_COMPILE = $(BOOT_COMPILE)
|
LIBRARY_COMPILE = $(BOOT_COMPILE)
|
||||||
|
@@ -64,6 +64,15 @@ mono_btls_ssl_ctx_new (void)
|
|||||||
memset (ctx, 0, sizeof (MonoBtlsSslCtx));
|
memset (ctx, 0, sizeof (MonoBtlsSslCtx));
|
||||||
ctx->references = 1;
|
ctx->references = 1;
|
||||||
ctx->ctx = SSL_CTX_new (TLS_method ());
|
ctx->ctx = SSL_CTX_new (TLS_method ());
|
||||||
|
|
||||||
|
// enable the default ciphers but disable any RC4 based ciphers
|
||||||
|
// since they're insecure: RFC 7465 "Prohibiting RC4 Cipher Suites"
|
||||||
|
SSL_CTX_set_cipher_list (ctx->ctx, "DEFAULT:!RC4");
|
||||||
|
|
||||||
|
// disable SSLv2 and SSLv3 by default, they are deprecated
|
||||||
|
// and should generally not be used according to the openssl docs
|
||||||
|
SSL_CTX_set_options (ctx->ctx, SSL_OP_NO_SSLv2 | SSL_OP_NO_SSLv3);
|
||||||
|
|
||||||
return ctx;
|
return ctx;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -36,8 +36,6 @@ mono_btls_ssl_new (MonoBtlsSslCtx *ctx)
|
|||||||
ptr->ctx = mono_btls_ssl_ctx_up_ref (ctx);
|
ptr->ctx = mono_btls_ssl_ctx_up_ref (ctx);
|
||||||
ptr->ssl = SSL_new (mono_btls_ssl_ctx_get_ctx (ptr->ctx));
|
ptr->ssl = SSL_new (mono_btls_ssl_ctx_get_ctx (ptr->ctx));
|
||||||
|
|
||||||
SSL_set_options (ptr->ssl, SSL_OP_NO_SSLv2 | SSL_OP_NO_SSLv3);
|
|
||||||
|
|
||||||
return ptr;
|
return ptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1003,16 +1003,16 @@ mono_install_get_cached_class_info (MonoGetCachedClassInfo func);
|
|||||||
void
|
void
|
||||||
mono_install_get_class_from_name (MonoGetClassFromName func);
|
mono_install_get_class_from_name (MonoGetClassFromName func);
|
||||||
|
|
||||||
MonoGenericContext*
|
MONO_PROFILER_API MonoGenericContext*
|
||||||
mono_class_get_context (MonoClass *klass);
|
mono_class_get_context (MonoClass *klass);
|
||||||
|
|
||||||
MonoMethodSignature*
|
MONO_PROFILER_API MonoMethodSignature*
|
||||||
mono_method_signature_checked (MonoMethod *m, MonoError *err);
|
mono_method_signature_checked (MonoMethod *m, MonoError *err);
|
||||||
|
|
||||||
MonoGenericContext*
|
MonoGenericContext*
|
||||||
mono_method_get_context_general (MonoMethod *method, gboolean uninflated);
|
mono_method_get_context_general (MonoMethod *method, gboolean uninflated);
|
||||||
|
|
||||||
MonoGenericContext*
|
MONO_PROFILER_API MonoGenericContext*
|
||||||
mono_method_get_context (MonoMethod *method);
|
mono_method_get_context (MonoMethod *method);
|
||||||
|
|
||||||
/* Used by monodis, thus cannot be MONO_INTERNAL */
|
/* Used by monodis, thus cannot be MONO_INTERNAL */
|
||||||
@@ -1296,7 +1296,7 @@ MONO_API void mono_class_describe_statics (MonoClass* klass);
|
|||||||
/* method debugging functions, for use inside gdb */
|
/* method debugging functions, for use inside gdb */
|
||||||
MONO_API void mono_method_print_code (MonoMethod *method);
|
MONO_API void mono_method_print_code (MonoMethod *method);
|
||||||
|
|
||||||
char *mono_signature_full_name (MonoMethodSignature *sig);
|
MONO_PROFILER_API char *mono_signature_full_name (MonoMethodSignature *sig);
|
||||||
|
|
||||||
/*Enum validation related functions*/
|
/*Enum validation related functions*/
|
||||||
MONO_API gboolean
|
MONO_API gboolean
|
||||||
@@ -1305,6 +1305,12 @@ mono_type_is_valid_enum_basetype (MonoType * type);
|
|||||||
MONO_API gboolean
|
MONO_API gboolean
|
||||||
mono_class_is_valid_enum (MonoClass *klass);
|
mono_class_is_valid_enum (MonoClass *klass);
|
||||||
|
|
||||||
|
MONO_PROFILER_API gboolean
|
||||||
|
mono_type_is_primitive (MonoType *type);
|
||||||
|
|
||||||
|
MONO_PROFILER_API gboolean
|
||||||
|
mono_class_is_ginst (MonoClass *klass);
|
||||||
|
|
||||||
MonoType *
|
MonoType *
|
||||||
mono_type_get_checked (MonoImage *image, guint32 type_token, MonoGenericContext *context, MonoError *error);
|
mono_type_get_checked (MonoImage *image, guint32 type_token, MonoGenericContext *context, MonoError *error);
|
||||||
|
|
||||||
|
@@ -1 +1 @@
|
|||||||
a1c77761cdbb42ae1e799cfd298fccf01c6bebeb
|
ba097864604e44a8d83906ee85bdb3bb4091814b
|
@@ -700,5 +700,7 @@ mono_context_init_checked (MonoDomain *domain, MonoError *error);
|
|||||||
gboolean
|
gboolean
|
||||||
mono_assembly_has_reference_assembly_attribute (MonoAssembly *assembly, MonoError *error);
|
mono_assembly_has_reference_assembly_attribute (MonoAssembly *assembly, MonoError *error);
|
||||||
|
|
||||||
|
GPtrArray*
|
||||||
|
mono_domain_get_assemblies (MonoDomain *domain, gboolean refonly);
|
||||||
|
|
||||||
#endif /* __MONO_METADATA_DOMAIN_INTERNALS_H__ */
|
#endif /* __MONO_METADATA_DOMAIN_INTERNALS_H__ */
|
||||||
|
@@ -2052,3 +2052,24 @@ mono_domain_unlock (MonoDomain *domain)
|
|||||||
{
|
{
|
||||||
mono_locks_coop_release (&domain->lock, DomainLock);
|
mono_locks_coop_release (&domain->lock, DomainLock);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GPtrArray*
|
||||||
|
mono_domain_get_assemblies (MonoDomain *domain, gboolean refonly)
|
||||||
|
{
|
||||||
|
GSList *tmp;
|
||||||
|
GPtrArray *assemblies;
|
||||||
|
MonoAssembly *ass;
|
||||||
|
|
||||||
|
assemblies = g_ptr_array_new ();
|
||||||
|
mono_domain_assemblies_lock (domain);
|
||||||
|
for (tmp = domain->domain_assemblies; tmp; tmp = tmp->next) {
|
||||||
|
ass = (MonoAssembly *)tmp->data;
|
||||||
|
if (refonly != ass->ref_only)
|
||||||
|
continue;
|
||||||
|
if (ass->corlib_internal)
|
||||||
|
continue;
|
||||||
|
g_ptr_array_add (assemblies, ass);
|
||||||
|
}
|
||||||
|
mono_domain_assemblies_unlock (domain);
|
||||||
|
return assemblies;
|
||||||
|
}
|
||||||
|
@@ -1 +1 @@
|
|||||||
4eb9a6416a9d3d3b7e5830b49dd0629e4c81cc9a
|
cc83f8242571580e8173442bdbb6d4ca671db338
|
@@ -1032,6 +1032,103 @@ install_pe_loader (void)
|
|||||||
mono_install_image_loader (&pe_loader);
|
mono_install_image_loader (&pe_loader);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Ignored assemblies.
|
||||||
|
|
||||||
|
There are some assemblies we need to ignore because they include an implementation that doesn't work under mono.
|
||||||
|
Mono provides its own implementation of those assemblies so it's safe to do so.
|
||||||
|
|
||||||
|
The ignored_assemblies list is generated using tools/nuget-hash-extractor and feeding the problematic nugets to it.
|
||||||
|
|
||||||
|
Right now the list of nugets are the ones that provide the assemblies in $ignored_assemblies_names.
|
||||||
|
|
||||||
|
This is to be removed once a proper fix is shipped through nuget.
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
SYS_RT_INTEROP_RUNTIME_INFO = 0, //System.Runtime.InteropServices.RuntimeInformation
|
||||||
|
SYS_GLOBALIZATION_EXT = 1, //System.Globalization.Extensions
|
||||||
|
SYS_IO_COMPRESSION = 2, //System.IO.Compression
|
||||||
|
SYS_NET_HTTP = 3, //System.Net.Http
|
||||||
|
SYS_TEXT_ENC_CODEPAGES = 4, //System.Text.Encoding.CodePages
|
||||||
|
} IgnoredAssemblyNames;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
int hash;
|
||||||
|
int assembly_name;
|
||||||
|
const char guid [40];
|
||||||
|
} IgnoredAssembly;
|
||||||
|
|
||||||
|
const char *ignored_assemblies_names[] = {
|
||||||
|
"System.Runtime.InteropServices.RuntimeInformation.dll",
|
||||||
|
"System.Globalization.Extensions.dll",
|
||||||
|
"System.IO.Compression.dll",
|
||||||
|
"System.Net.Http.dll",
|
||||||
|
"System.Text.Encoding.CodePages.dll"
|
||||||
|
};
|
||||||
|
|
||||||
|
#define IGNORED_ASSEMBLY(HASH, NAME, GUID, VER_STR) { .hash = HASH, .assembly_name = NAME, .guid = GUID }
|
||||||
|
|
||||||
|
static const IgnoredAssembly ignored_assemblies [] = {
|
||||||
|
IGNORED_ASSEMBLY (0x1136045D, SYS_GLOBALIZATION_EXT, "475DBF02-9F68-44F1-8FB5-C9F69F1BD2B1", "4.0.0 net46"),
|
||||||
|
IGNORED_ASSEMBLY (0x358C9723, SYS_GLOBALIZATION_EXT, "5FCD54F0-4B97-4259-875D-30E481F02EA2", "4.0.1 net46"),
|
||||||
|
IGNORED_ASSEMBLY (0x450A096A, SYS_GLOBALIZATION_EXT, "E9FCFF5B-4DE1-4BDC-9CE8-08C640FC78CC", "4.3.0 net46"),
|
||||||
|
IGNORED_ASSEMBLY (0x7A39EA2D, SYS_IO_COMPRESSION, "C665DC9B-D9E5-4D00-98ED-E4F812F23545", "4.0.0 netcore50"),
|
||||||
|
IGNORED_ASSEMBLY (0x1CBD59A2, SYS_IO_COMPRESSION, "44FCA06C-A510-4B3E-BDBF-D08D697EF65A", "4.1.0 net46"),
|
||||||
|
IGNORED_ASSEMBLY (0x5E393C29, SYS_IO_COMPRESSION, "3A58A219-266B-47C3-8BE8-4E4F394147AB", "4.3.0 net46"),
|
||||||
|
IGNORED_ASSEMBLY (0x726C7CC1, SYS_NET_HTTP, "7C0B577F-A4FD-47F1-ADF5-EE65B5A04BB5", "4.0.0 netcore50"),
|
||||||
|
IGNORED_ASSEMBLY (0x27726A90, SYS_NET_HTTP, "269B562C-CC15-4736-B1B1-68D4A43CAA98", "4.1.0 net46"),
|
||||||
|
IGNORED_ASSEMBLY (0x10CADA75, SYS_NET_HTTP, "EA2EC6DC-51DD-479C-BFC2-E713FB9E7E47", "4.1.1 net46"),
|
||||||
|
IGNORED_ASSEMBLY (0x8437178B, SYS_NET_HTTP, "C0E04D9C-70CF-48A6-A179-FBFD8CE69FD0", "4.3.0 net46"),
|
||||||
|
IGNORED_ASSEMBLY (0x46A4A1C5, SYS_RT_INTEROP_RUNTIME_INFO, "F13660F8-9D0D-419F-BA4E-315693DD26EA", "4.0.0 net45"),
|
||||||
|
IGNORED_ASSEMBLY (0xD07383BB, SYS_RT_INTEROP_RUNTIME_INFO, "DD91439F-3167-478E-BD2C-BF9C036A1395", "4.3.0 net45"),
|
||||||
|
IGNORED_ASSEMBLY (0x911D9EC3, SYS_TEXT_ENC_CODEPAGES, "C142254F-DEB5-46A7-AE43-6F10320D1D1F", "4.0.1 net46"),
|
||||||
|
IGNORED_ASSEMBLY (0xFA686A38, SYS_TEXT_ENC_CODEPAGES, "FD178CD4-EF4F-44D5-9C3F-812B1E25126B", "4.3.0 net46"),
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
Equivalent C# code:
|
||||||
|
static void Main () {
|
||||||
|
string str = "...";
|
||||||
|
int h = 5381;
|
||||||
|
for (int i = 0; i < str.Length; ++i)
|
||||||
|
h = ((h << 5) + h) ^ str[i];
|
||||||
|
|
||||||
|
Console.WriteLine ("{0:X}", h);
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
static int
|
||||||
|
hash_guid (const char *str)
|
||||||
|
{
|
||||||
|
int h = 5381;
|
||||||
|
while (*str) {
|
||||||
|
h = ((h << 5) + h) ^ *str;
|
||||||
|
++str;
|
||||||
|
}
|
||||||
|
|
||||||
|
return h;
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
is_problematic_image (MonoImage *image)
|
||||||
|
{
|
||||||
|
int h = hash_guid (image->guid);
|
||||||
|
|
||||||
|
//TODO make this more cache effiecient.
|
||||||
|
// Either sort by hash and bseach or use SoA and make the linear search more cache efficient.
|
||||||
|
for (int i = 0; i < G_N_ELEMENTS (ignored_assemblies); ++i) {
|
||||||
|
if (ignored_assemblies [i].hash == h && !strcmp (image->guid, ignored_assemblies [i].guid)) {
|
||||||
|
const char *needle = ignored_assemblies_names [ignored_assemblies [i].assembly_name];
|
||||||
|
size_t needle_len = strlen (needle);
|
||||||
|
size_t asm_len = strlen (image->name);
|
||||||
|
if (asm_len > needle_len && !g_ascii_strcasecmp (image->name + (asm_len - needle_len), needle))
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
static MonoImage *
|
static MonoImage *
|
||||||
do_mono_image_load (MonoImage *image, MonoImageOpenStatus *status,
|
do_mono_image_load (MonoImage *image, MonoImageOpenStatus *status,
|
||||||
gboolean care_about_cli, gboolean care_about_pecoff)
|
gboolean care_about_cli, gboolean care_about_pecoff)
|
||||||
@@ -1087,6 +1184,12 @@ do_mono_image_load (MonoImage *image, MonoImageOpenStatus *status,
|
|||||||
if (!mono_image_load_cli_data (image))
|
if (!mono_image_load_cli_data (image))
|
||||||
goto invalid_image;
|
goto invalid_image;
|
||||||
|
|
||||||
|
if (!image->ref_only && is_problematic_image (image)) {
|
||||||
|
mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_ASSEMBLY, "Denying load of problematic image %s", image->name);
|
||||||
|
*status = MONO_IMAGE_IMAGE_INVALID;
|
||||||
|
goto invalid_image;
|
||||||
|
}
|
||||||
|
|
||||||
if (image->loader == &pe_loader && !image->metadata_only && !mono_verifier_verify_table_data (image, &errors))
|
if (image->loader == &pe_loader && !image->metadata_only && !mono_verifier_verify_table_data (image, &errors))
|
||||||
goto invalid_image;
|
goto invalid_image;
|
||||||
|
|
||||||
|
@@ -861,7 +861,7 @@ EXTRA_DIST = TestDriver.cs \
|
|||||||
Makefile.am.in
|
Makefile.am.in
|
||||||
|
|
||||||
version.h: Makefile
|
version.h: Makefile
|
||||||
echo "#define FULL_VERSION \"Stable 4.8.0.459/cd26828\"" > version.h
|
echo "#define FULL_VERSION \"Stable 4.8.0.472/6f90ed1\"" > version.h
|
||||||
|
|
||||||
# Utility target for patching libtool to speed up linking
|
# Utility target for patching libtool to speed up linking
|
||||||
patch-libtool:
|
patch-libtool:
|
||||||
|
@@ -861,7 +861,7 @@ EXTRA_DIST = TestDriver.cs \
|
|||||||
Makefile.am.in
|
Makefile.am.in
|
||||||
|
|
||||||
version.h: Makefile
|
version.h: Makefile
|
||||||
echo "#define FULL_VERSION \"Stable 4.8.0.459/cd26828\"" > version.h
|
echo "#define FULL_VERSION \"Stable 4.8.0.472/6f90ed1\"" > version.h
|
||||||
|
|
||||||
# Utility target for patching libtool to speed up linking
|
# Utility target for patching libtool to speed up linking
|
||||||
patch-libtool:
|
patch-libtool:
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user