Skip to content

Instantly share code, notes, and snippets.

@dalexsoto
Created March 16, 2018 17:35
Show Gist options
  • Save dalexsoto/06b253a6743d366a4b9addc21a1e2c2a to your computer and use it in GitHub Desktop.
Save dalexsoto/06b253a6743d366a4b9addc21a1e2c2a to your computer and use it in GitHub Desktop.
git diff --no-index mono\ mscorlib.xml XM\ mscorlib.xml
diff --git a/Users/alex/Desktop/mono mscorlib.xml b/Users/alex/Desktop/XM mscorlib.xml
index e879311e..907f1dd7 100644
--- a/Users/alex/Desktop/mono mscorlib.xml
+++ b/Users/alex/Desktop/XM mscorlib.xml
@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<linker>
<assembly fullname="mscorlib">
-
<!-- domain.c: mono_defaults.appdomain_class -->
<type fullname="System.AppDomain" preserve="fields">
<method name="DoDomainUnload" />
@@ -15,23 +14,25 @@
<method name="DoDomainUnload" />
<!-- marshal.c: mono_remoting_marshal_init -->
<method name="InternalSetContext" />
- <!-- System.Runtime.Remoting/RemotingServices.cs: GetDomainProxy(AppDomain domain) -->
- <method name="GetMarshalledDomainObjRef" feature="remoting" />
</type>
<!-- appdomain.c: mono_runtime_init -->
<type fullname="System.AppDomainSetup" preserve="fields" />
-
+
<!-- exception.c: mono_get_exception_appdomain_unloaded (used in several places), threadpool.c -->
<type fullname="System.AppDomainUnloadedException">
<!-- mono_exception_from_name -->
<method signature="System.Void .ctor()" />
- </type>
-
+ </type>
+
<!-- marshal.c: emit_marshal_custom (should not be used on devices)
<type fullname="System.ApplicationException" />
-->
+ <!-- there are icalls but nothing that seems to requires the type to exists, i.e. no type no call
+ <type fullname="System.ArgIterator" />
+ -->
+
<!-- exception.c (mono_get_exception_argument) -->
<type fullname="System.ArgumentException">
<!-- mono_exception_from_name -->
@@ -39,28 +40,28 @@
<!-- MONO_OBJECT_SETREF -->
<field name="param_name" />
</type>
-
+
<!-- exception.c (mono_get_exception_argument_null) -->
<type fullname="System.ArgumentNullException">
<!-- mono_exception_from_name_msg -->
<method signature="System.Void .ctor(System.String)" />
- </type>
+ </type>
<!-- exception.c (mono_get_exception_argument_out_of_range) -->
<type fullname="System.ArgumentOutOfRangeException">
<!-- mono_exception_from_name -->
<method signature="System.Void .ctor()" />
- </type>
+ </type>
<!-- exception.c (mono_get_exception_arithmetic) -->
<type fullname="System.ArithmeticException">
<!-- mono_exception_from_name -->
<method signature="System.Void .ctor()" />
</type>
-
+
<!-- domain.c: mono_defaults.array_class -->
<type fullname="System.Array">
- <!-- InternalArray__%s_%s is used in aot-compiler.c -->
+ <!-- Internal__%s_%s is used in aot-compiler.c -->
<method name="InternalArray__ICollection_get_Count" />
<method name="InternalArray__ICollection_get_IsReadOnly" />
<method name="InternalArray__IEnumerable_GetEnumerator" />
@@ -77,18 +78,18 @@
<method name="InternalArray__IReadOnlyList_get_Item" />
<method name="InternalArray__IReadOnlyCollection_get_Count" />
</type>
-
+
<!-- mono/metadata/exception.c mono/metadata/marshal.c ... -->
<!-- exception.c (mono_get_exception_array_type_mismatch) -->
<type fullname="System.ArrayTypeMismatchException">
<!-- mono_exception_from_name -->
<method signature="System.Void .ctor()" />
</type>
-
+
<!-- domain.c: mono_defaults.attribute_class -->
<!-- used in reflection.c to create array of attributes (no need to preserve everything beside the type itself) -->
<type fullname="System.Attribute" preserve="fields" />
-
+
<!-- exception.c / mono-error.c -->
<type fullname="System.BadImageFormatException">
<!-- mono_get_exception_bad_image_format / mono_exception_from_name_msg -->
@@ -96,35 +97,55 @@
<!-- mono_get_exception_bad_image_format2 / mono_exception_from_name_two_strings -->
<method signature="System.Void .ctor(System.String,System.String)" />
</type>
-
+
<!-- domain.c: mono_defaults.boolean_class -->
<type fullname="System.Boolean" preserve="fields" />
-
+
<!-- domain.c: mono_defaults.byte_class -->
<type fullname="System.Byte" preserve="fields" />
-
+
<!-- exception.c" mono_get_exception_cannot_unload_appdomain (called by appdomain.c) -->
<type fullname="System.CannotUnloadAppDomainException">
<!-- mono_exception_from_name_msg -->
<method signature="System.Void .ctor(System.String)" />
</type>
-
+
<!-- domain.c: mono_defaults.char_class -->
<type fullname="System.Char" preserve="fields" />
+ <!-- console-unix.c: do_console_cancel_event - but it seems smart enough to work if missing, if present then fields are required
+ <type fullname="System.Console" preserve="fields" />
+ -->
+
+ <!-- icalls but the type does not seems required
+ <type fullname="System.ConsoleDriver" preserve="fields" />
+ -->
+
+ <!-- class.c: there's a check in mono_class_setup_parent to set class->classbound = 1 - but nothing seems to require the type
+ <type fullname="System.ContextBoundObject" preserve="fields" />
+ -->
+
+ <!-- icall but the type does not seems required
+ <type fullname="System.CurrentSystemTimeZone" />
+ -->
+
<!-- marshal.c: emit_marshal_vtype -->
<type fullname="System.DateTime" preserve="fields" />
-
+
<!-- reflection.c: mono_get_dbnull_object / comment: Used as the value for ParameterInfo.DefaultValue -->
<type fullname="System.DBNull" preserve="fields" />
+
+ <!-- decimal.c/icall.c: support code and icalls but nothing that seems to require the type
<type fullname="System.Decimal" preserve="fields" />
+ -->
+
<!-- domain.c: mono_defaults.delegate_class -->
<type fullname="System.Delegate" preserve="fields" />
-
+
<!-- domain.c: mono_defaults.stack_frame_class -->
<!-- used in mini-exceptions.c to create array and MonoStackFrame instance, i.e. only fields are required to be preserved -->
<type fullname="System.Diagnostics.StackFrame" preserve="fields" />
-
+
<!-- domain.c: mono_defaults.stack_trace_class -->
<!-- does not seems used outside the g_assert in domain.c (maybe it could be removed) -->
<type fullname="System.Diagnostics.StackTrace" preserve="fields" />
@@ -139,7 +160,7 @@
<!-- mono_exception_from_name -->
<method signature="System.Void .ctor()" />
</type>
-
+
<!-- loader.c: returned (as a string) from mono_lookup_pinvoke_call and used in
icall.c: prelink_method / mono_exception_from_name_msg
marshal.c: mono_delegate_to_ftnptr and mono_marshal_get_native_wrapper
@@ -148,31 +169,35 @@
<!-- mono_exception_from_name_msg -->
<method signature="System.Void .ctor(System.String)" />
</type>
-
+
<!-- domain.c: mono_defaults.double_class -->
<type fullname="System.Double" preserve="fields" />
-
+
<!-- domain.c: mono_defaults.enum_class -->
- <type fullname="System.Enum" preserve="fields" />
-
+ <type fullname="System.Enum" preserve="fields">
+<!-- ?? <method name="GetValues" /> -->
+ </type>
+
<!-- loader.c: returned (as a string) from mono_lookup_pinvoke_call and used in … -->
<type fullname="System.EntryPointNotFoundException">
<!-- mono_exception_from_name_msg -->
<method signature="System.Void .ctor(System.String)" />
</type>
-
+
<type fullname="System.Environment">
<!-- appdomain.c: mono_get_corlib_version -->
<field name="mono_corlib_version" />
<method name="get_StackTrace" />
</type>
-
+
<!-- domain.c: mono_defaults.exception_class and fields are defined in object-internals.h -->
<type fullname="System.Exception" preserve="fields">
<!-- used in mini-exceptions.c (if trace is enabled) -->
<method name="get_Message" />
+ <!-- remoting.c: method_exc_fixexc -->
+ <method name="FixRemotingException" />
</type>
-
+
<!-- exception.c (mono_get_exception_execution_engine) -->
<type fullname="System.ExecutionEngineException">
<!-- mono_exception_from_name_msg -->
@@ -191,45 +216,53 @@
<!-- icall.c (base64_to_byte_array) mono_exception_from_name_msg -->
<method signature="System.Void .ctor(System.String)" />
</type>
-
+
+ <!-- interesting stuff happens in the runtime, the managed stuff can be (unlikely) linked away
+ <type fullname="System.GC" />
+ -->
+
<!-- exception.c: mono_get_exception_index_out_of_range - used by many in icall.c and in socket-io.c -->
<type fullname="System.IndexOutOfRangeException">
<!-- mono_exception_from_name_msg -->
<method signature="System.Void .ctor(System.String)" />
</type>
-
+
<!-- domain.c: mono_defaults.int16_class -->
<type fullname="System.Int16" preserve="fields" />
-
+
<!-- domain.c: mono_defaults.int32_class -->
<type fullname="System.Int32" preserve="fields" />
-
+
<!-- domain.c: mono_defaults.int64_class -->
<type fullname="System.Int64" preserve="fields" />
-
+
<!-- domain.c: mono_defaults.int_class -->
<type fullname="System.IntPtr" preserve="fields" />
-
+
<!-- exception.c (mono_get_exception_invalid_cast) -->
<type fullname="System.InvalidCastException">
<!-- mono_exception_from_name -->
<method signature="System.Void .ctor()" />
</type>
-
+
<!-- marshal.c: emit several times using mono_mb_emit_exception_full -->
<!-- exception.c (mono_get_exception_invalid_operation) -->
<type fullname="System.InvalidOperationException">
<!-- mono_exception_from_name_msg -->
<method signature="System.Void .ctor(System.String)" />
</type>
-
+
<!-- mini.c: mono_jit_compile_method_inner (looks like one case is JITted, AOT too) -->
<type fullname="System.InvalidProgramException">
<!-- mono_exception_from_name_msg -->
<method signature="System.Void .ctor(System.String)" />
</type>
- <type fullname="System.MarshalByRefObject" preserve="fields" feature="remoting" />
+ <!-- domain.c: mono_defaults.marshalbyrefobject_class / removed with DISABLE_REMOTING
+ <type fullname="System.MarshalByRefObject" preserve="fields" />
+ -->
+
+ <type fullname="System.Missing" preserve="fields" />
<type fullname="System.MethodAccessException">
<!-- exception.c: mono_get_exception_method_access / mono_exception_from_name -->
@@ -238,29 +271,44 @@
<!-- mini.c (mono_jit_compiler_method_inner) mono_exception_from_name_msg -->
<method signature="System.Void .ctor(System.String)" />
</type>
-
+
<!-- mini.c (mono_jit_compiler_method_inner) / mono-error.c -->
<type fullname="System.MissingFieldException">
<!-- mono_exception_from_name_msg -->
<method signature="System.Void .ctor(System.String)" />
</type>
-
+
<type fullname="System.MissingMethodException">
<!-- mini.c (mono_jit_compiler_method_inner) mono_exception_from_name_msg -->
<method signature="System.Void .ctor(System.String)" />
+ <!-- exception.c (mono_get_exception_type_load) mono_exception_from_name_two_strings -->
+ <method signature="System.Void .ctor(System.String,System.String)" />
</type>
-
+
<!-- threadpool.c: mono_thread_pool_init (assert) -->
<type fullname="System.MonoAsyncCall" preserve="fields" />
+
+ <!-- icall.c: not used by the runtime
+ <type fullname="System.MonoCustomAttrs" preserve="fields" />
+ <type fullname="System.MonoCustomAttrs/AttributeInfo" preserve="fields" />
+ -->
+
+ <!-- mono-cq.c (concurrent queue): used in threadpool.c -->
+ <type fullname="System.MonoCQItem" preserve="fields" />
+
+ <!-- icall.c: ves_icall_get_enum_info - does not look like the runtime will need it
+ <type fullname="System.MonoEnumInfo" preserve="fields" />
+ -->
+
<!-- mono-mlist.c (managed list): used in threadpool.c and gc.c -->
<type fullname="System.MonoListItem" preserve="fields" />
-
+
<!-- domain.c: mono_defaults.type_class -->
<type fullname="System.MonoType" preserve="fields" />
-
+
<!-- domain.c: mono_defaults.multicastdelegate_class -->
<type fullname="System.MulticastDelegate" preserve="fields" />
-
+
<!-- exception.c (mono_get_exception_not_implemented) -->
<type fullname="System.NotImplementedException">
<!-- mono_get_exception_not_implemented -->
@@ -272,7 +320,7 @@
<!-- mono_get_exception_not_implemented -->
<method signature="System.Void .ctor(System.String)" />
</type>
-
+
<!-- appdomain.c (create_domain_objects) domain->null_reference_ex -->
<!-- exception.c (mono_get_exception_null_reference) -->
<type fullname="System.NullReferenceException">
@@ -281,18 +329,15 @@
<!-- appdomain.c: mono_exception_from_name_two_strings (only one string in the signature since NULL is used as the 2nd parameter) -->
<method signature="System.Void .ctor(System.String)" />
</type>
-
- <!-- domain.c: mono_defaults.nullable_class -->
+
+ <!-- domain.c: mono_defaults.nullable_class -->
<type fullname="System.Nullable`1" preserve="fields">
<!-- method-to-ir.c (handle_box) -->
<method name="Box" />
<!-- method-to-ir.c (handle_unbox_nullable) -->
<method name="Unbox" />
- <!-- method-to-ir.c (handle_unbox_nullable) -->
- <method name="UnboxExact" />
-
</type>
-
+
<!-- domain.c: mono_defaults.object_class -->
<type fullname="System.Object">
<!-- class.c: initialize_object_slots -->
@@ -300,11 +345,9 @@
<method name="GetHashCode" />
<!-- needed for debugging -->
<method name="obj_address" />
- <!-- TransparentProxy.cs, RemotingServices.cs -->
- <method name="FieldGetter" feature="remoting" />
- <method name="FieldSetter" feature="remoting" />
+ <!-- FieldGetter and FieldSetter can't be reached now that DISABLE_REMOTING is enabled -->
</type>
-
+
<!-- appdomain.c (create_domain_objects) domain->out_of_memory_ex -->
<type fullname="System.OutOfMemoryException">
<!-- mono_exception_from_name_two_strings (only one string in the signature since NULL is used as the 2nd parameter) -->
@@ -312,33 +355,37 @@
<!-- exception.c: mono_get_exception_out_of_memory / mono_exception_from_name -->
<method signature="System.Void .ctor()" />
</type>
-
+
<!-- exception.c (mono_get_exception_overflow) -->
<type fullname="System.OverflowException">
<!-- mono_exception_from_name -->
<method signature="System.Void .ctor()" />
</type>
- <!-- reflection.c: mono_get_reflection_missing_object -->
- <type fullname="System.Reflection.Missing" preserve="field" />
-
- <!-- domain.c: mono_defaults.argumenthandle_class -->
+ <!-- domain.c: mono_defaults.argumenthandle_class -->
<type fullname="System.RuntimeArgumentHandle" preserve="fields" />
-
+
<!-- domain.c: mono_defaults.typefield_class -->
<type fullname="System.RuntimeFieldHandle" preserve="fields" />
-
+
<!-- domain.c: mono_defaults.methodhandle_class -->
<type fullname="System.RuntimeMethodHandle" preserve="fields" />
-
+
<!-- domain.c: mono_defaults.typehandle_class -->
<type fullname="System.RuntimeTypeHandle" preserve="fields" />
+
+ <!-- exception.c (mono_get_exception_security) -->
+ <type fullname="System.Security.SecurityException">
+ <!-- mono_exception_from_name -->
+ <method signature="System.Void .ctor()" />
+ </type>
+
<!-- domain.c: mono_defaults.sbyte_class -->
<type fullname="System.SByte" preserve="fields" />
-
+
<!-- domain.c: mono_defaults.single_class -->
<type fullname="System.Single" preserve="fields" />
-
+
<!-- appdomain.c (create_domain_objects) domain->stack_overflow_ex -->
<type fullname="System.StackOverflowException">
<!-- mono_exception_from_name_two_strings (only one string in the signature since NULL is used as the 2nd parameter) -->
@@ -346,27 +393,21 @@
<!-- exception.c: mono_get_exception_stack_overflow / mono_exception_from_name -->
<method signature="System.Void .ctor()" />
</type>
-
+
<!-- object.c: mono_runtime_exec_main -->
<type fullname="System.STAThreadAttribute" />
-
+
<!-- domain.c: mono_defaults.string_class -->
<type fullname="System.String" preserve="fields">
- <!-- marshal.c mono_marshal_get_native_wrapper -->
<method name="CreateString" />
- <!-- method-to-ir.c: mini_redirect_call -->
<method name="InternalAllocateStr" />
- <!-- method-to-it.c: mini_emit_initobj -->
+ <method name="memcpy" />
<method name="memset" />
- <!-- mini-generic-sharing.c: class_type_info
- All patterns bellow
- -->
<method name="bzero" />
<method name="bzero_aligned_1" />
<method name="bzero_aligned_2" />
<method name="bzero_aligned_4" />
<method name="bzero_aligned_8" />
- <method name="memcpy" />
<method name="memcpy_aligned_1" />
<method name="memcpy_aligned_2" />
<method name="memcpy_aligned_4" />
@@ -378,13 +419,13 @@
<!-- mono_exception_from_nameg -->
<method signature="System.Void .ctor()" />
</type>
-
+
<!-- domain.c: mono_defaults.systemtype_class -->
<type fullname="System.Type" preserve="fields">
<!-- marshal.c (mono_marshal_get_synchronized_wrapper) -->
<method name="GetTypeFromHandle" />
</type>
-
+
<!-- exception.c (mono_get_exception_type_initialization) -->
<type fullname="System.TypeInitializationException">
<!-- iterates to find the (only) 2 paramaters .ctor -->
@@ -398,31 +439,30 @@
<!-- mono_exception_from_name_two_strings -->
<method signature="System.Void .ctor(System.String,System.String)" />
</type>
-
- <!-- domain.c: mono_defaults.typed_reference_class -->
+
+ <!-- domain.c: mono_defaults.typed_reference_class -->
<type fullname="System.TypedReference" preserve="fields" />
-
+
<!-- domain.c: mono_defaults.uint16_class -->
<type fullname="System.UInt16" preserve="fields" />
-
+
<!-- domain.c: mono_defaults.uint32_class -->
<type fullname="System.UInt32" preserve="fields" />
-
+
<!-- domain.c: mono_defaults.uint64_class -->
<type fullname="System.UInt64" preserve="fields" />
-
+
<!-- domain.c: mono_defaults.uint_class -->
<type fullname="System.UIntPtr" preserve="fields" />
-
+
<!-- object.c: create_unhandled_exception_eventargs (assert) -->
<type fullname="System.UnhandledExceptionEventArgs">
<method signature="System.Void .ctor(System.Object,System.Boolean)" />
</type>
-
+
<!-- class.c: make_generic_param_class -->
<type fullname="System.ValueType" preserve="fields" />
- <!-- comiterop.c -->
<type fullname="System.Variant" preserve="fields" feature="com">
<method name="Clear" />
</type>
@@ -437,37 +477,32 @@
<type fullname="System.Version">
<method signature="System.Void .ctor(System.Int32,System.Int32,System.Int32,System.Int32)" />
</type>
-
+
<!-- domain.c: mono_defaults.void_class -->
<type fullname="System.Void" preserve="fields" />
- <!-- comiterop.c -->
<type fullname="System.__ComObject" feature="com" />
- <!-- class.c: generic_array_methods -->
+ <!-- class.c: generic_icollection_class -->
<type fullname="System.Collections.Generic.ICollection`1" />
<type fullname="System.Collections.Generic.IEnumerable`1" />
- <type fullname="System.Collections.Generic.IReadOnlyList`1" />
- <type fullname="System.Collections.Generic.IReadOnlyCollection`1" />
-
+ <type fullname="System.Collections.Generic.IEnumerator`1" />
+ <type fullname="System.Collections.Generic.IReadOnlyList`1" />
+ <type fullname="System.Collections.Generic.IReadOnlyCollection`1" />
+
<!-- domain.c: mono_defaults.generic_ilist_class -->
<type fullname="System.Collections.Generic.IList`1" />
-
+
<!-- aot-compiler.c: add_generic_instances and add_generic_class_with_depth -->
<type fullname="System.Collections.Generic.GenericEqualityComparer`1">
<method name=".ctor" />
</type>
-
+
<!-- aot-compiler.c: add_generic_instances and add_generic_class_with_depth -->
<type fullname="System.Collections.Generic.GenericComparer`1">
<method name=".ctor" />
</type>
- <!-- console-unix.c: do_console_cancel_event -->
- <type fullname="System.Console">
- <method name="DoConsoleCancelEventInBackground" />
- </type>
-
<!-- icalls - but (at least parts of them) are used thru interfaces at runtime and cannot be linked out -->
<type fullname="System.Globalization.DateTimeFormatInfo" preserve="fields" />
<type fullname="System.Globalization.CompareInfo" preserve="fields" />
@@ -479,6 +514,14 @@
<type fullname="System.Globalization.RegionInfo" preserve="fields" />
<type fullname="System.Globalization.SortKey" preserve="fields" />
+ <type fullname="System.Reflection.MonoAssembly">
+ <method name=".ctor" />
+ </type>
+
+ <type fullname="System.Reflection.MonoModule">
+ <method name=".ctor" />
+ </type>
+
<type fullname="System.IO.FileNotFoundException">
<!-- mini.c (mono_jit_compiler_method_inner) mono_exception_from_name_msg -->
<method signature="System.Void .ctor(System.String)" />
@@ -495,76 +538,82 @@
<!-- fileio.h: shared structure between the managed and unmanaged worlds -->
<type fullname="System.IO.MonoIOStat" preserve="fields" />
-
+
<!-- domain.c: mono_defaults.math_class
method-to-ir.c: empty branch (wrt Min/Max optimization)
mini-[x86|amd64].c needs the type but then only check for names
note: there's no fields (static type) but that will mark the type itself -->
<type fullname="System.Math" preserve="fields" />
- <type fullname="System.Reflection.MonoAssembly">
- <method name=".ctor" />
- </type>
- <type fullname="System.Reflection.MonoModule">
- <method name=".ctor" />
- </type>
-
<!-- appdomain.c: ves_icall_System_AppDomain_GetAssemblies -->
- <type fullname="System.Reflection.Assembly" preserve="fields"/>
+ <type fullname="System.Reflection.Assembly" preserve="fields">
+ <method name="MonoDebugger_GetMethodToken" feature="sre" />
+ <method name="GetNamespaces" feature="sre" />
+ </type>
<type fullname="System.Reflection.AssemblyName" preserve="fields" />
<type fullname="System.Reflection.ConstructorInfo" preserve="fields" />
<!-- domain.c: mono_defaults.customattribute_data_class -->
+ <!-- reflection.c: create_custom_attr_data - create an instance with the ctor using 4 arguments -->
<type fullname="System.Reflection.CustomAttributeData" preserve="fields">
- <!-- custom-attrs.c: create_custom_attr_data - create an instance with the ctor using 4 arguments -->
- <method signature="System.Void .ctor(System.Reflection.ConstructorInfo,System.Reflection.Assembly,System.IntPtr,System.UInt32)" />
+ <method signature="System.Void .ctor(System.Reflection.ConstructorInfo,System.Reflection.Assembly,System.IntPtr,System.UInt32)" />
</type>
<!-- reflection.c: create_cattr_named_arg - create an instance with the ctor using 2 parameters -->
<type fullname="System.Reflection.CustomAttributeNamedArgument">
<method signature="System.Void .ctor(System.Reflection.MemberInfo,System.Object)" />
</type>
-
+
<!-- reflection.c: create_cattr_typed_arg - create an instance with the ctor using 2 parameters -->
<type fullname="System.Reflection.CustomAttributeTypedArgument">
<method signature="System.Void .ctor(System.Type,System.Object)" />
</type>
+
<type fullname="System.Reflection.EventInfo" preserve="fields">
<method name="AddEventFrame" />
<method name="StaticAddEventAdapterFrame" />
</type>
-
+
<!-- reflection.c: mono_method_body_get_object -->
<type fullname="System.Reflection.ExceptionHandlingClause" preserve="fields" />
-
+
<!-- domain.c: mono_defaults.field_info_class -->
<type fullname="System.Reflection.FieldInfo" preserve="fields" />
-
+
<!-- reflection.c: mono_method_body_get_object -->
<type fullname="System.Reflection.LocalVariableInfo" preserve="fields" />
+ <type fullname="System.Reflection.ManifestResourceInfo" preserve="fields" />
+ <type fullname="System.Reflection.MethodBase" preserve="fields" />
<!-- reflection.c: mono_method_body_get_object -->
<type fullname="System.Reflection.MethodBody" preserve="fields" />
+
<!-- domain.c: mono_defaults.method_info_class -->
<type fullname="System.Reflection.MethodInfo" preserve="fields" />
-
<type fullname="System.Reflection.Module" preserve="fields" />
+ <type fullname="System.Reflection.MonoArrayMethod" preserve="fields" />
+
+ <!-- if linked away the runtime will fallback to System.Reflection.Assembly but that type,
+ under NET_4_0 and MOBILE profiles, will throw NIE for some methods, like GetTypes overloads -->
<type fullname="System.Reflection.MonoAssembly" preserve="fields" />
+ <!-- same as Module vs MonoModule wrt NET_4_0 (see bug #928) -->
<type fullname="System.Reflection.MonoModule" preserve="fields" />
+
<type fullname="System.Reflection.MonoCMethod" preserve="fields" />
<type fullname="System.Reflection.MonoEvent" preserve="fields" />
<type fullname="System.Reflection.MonoEventInfo" preserve="fields" />
<type fullname="System.Reflection.MonoField" preserve="fields" />
-
+ <type fullname="System.Reflection.MonoGenericClass" preserve="fields" />
+
<!-- reflection.c: mono_method_get_object uses both MonoGeneric[C]Method / will crash for ves_icall_Type_GetConstructors_internal -->
<type fullname="System.Reflection.MonoGenericMethod" preserve="fields" />
<type fullname="System.Reflection.MonoGenericCMethod" preserve="fields" />
-
+
<type fullname="System.Reflection.MonoMethod" preserve="fields" />
<type fullname="System.Reflection.MonoMethodInfo" preserve="fields" />
<type fullname="System.Reflection.MonoPropertyInfo" preserve="fields" />
-
+
<type fullname="System.Reflection.MonoProperty" preserve="fields">
<method name="GetterAdapterFrame" />
<method name="StaticGetterAdapterFrame" />
@@ -573,14 +622,22 @@
<!-- reflection.c: ves_icall_get_parameter_info -->
<type fullname="System.Reflection.MonoParameterInfo" preserve="fields" />
+ <type fullname="System.Reflection.Emit.AssemblyBuilder" preserve="fields">
+ <method name="AddPermissionRequests" />
+ <method name="AddModule" />
+ <method name="DefineIconResource" />
+ <method name="AddTypeForwarder" />
+ <method name="EmbedResourceFile" />
+ </type>
+
<!-- object.c: mono_field_get_value_object and mono_runtime_invoke_array -->
<type fullname="System.Reflection.Pointer" >
<method name="Box" />
</type>
<type fullname="System.Reflection.PropertyInfo" preserve="fields" />
-
- <!-- exception.c (mono_get_exception_reflection_type_load) -->
+
+ <!-- exception.c (mono_get_exception_reflection_type_load) -->
<type fullname="System.Reflection.ReflectionTypeLoadException">
<method signature="System.Void .ctor(System.Type[],System.Exception[])" />
</type>
@@ -590,85 +647,49 @@
<!-- mono_exception_from_name_msg -->
<method signature="System.Void .ctor(System.String)" />
</type>
-
+
<!-- icall.c: ves_icall_InternalInvoke -->
<type fullname="System.Reflection.TargetParameterCountException">
<!-- mono_exception_from_name_msg -->
<method signature="System.Void .ctor(System.String)" />
</type>
- <type fullname="System.Reflection.Emit.AssemblyBuilder" preserve="fields" feature="sre">
- <method name="AddPermissionRequests" />
- <method name="AddModule" />
- <method name="DefineIconResource" />
- <method name="AddTypeForwarder" />
- <method name="EmbedResourceFile" />
- </type>
- <type fullname="System.Reflection.Emit.ConstructorBuilder" preserve="fields" feature="sre">
- <method name="RuntimeResolve" />
- </type>
- <type fullname="System.Reflection.Emit.CustomAttributeBuilder" preserve="fields" feature="sre" />
+ <type fullname="System.Reflection.Emit.ConstructorBuilder" preserve="fields" />
+ <type fullname="System.Reflection.Emit.CustomAttributeBuilder" preserve="fields" />
<type fullname="System.Reflection.Emit.DynamicMethod" preserve="fields" />
<type fullname="System.Reflection.Emit.EnumBuilder" preserve="fields" />
<type fullname="System.Reflection.Emit.EventBuilder" preserve="fields" />
- <type fullname="System.Reflection.Emit.FieldBuilder" preserve="fields" >
- <method name="RuntimeResolve" />
- </type>
- <type fullname="System.Reflection.Emit.GenericTypeParameterBuilder" preserve="fields" feature="sre" >
- <method name="RuntimeResolve" />
- </type>
- <type fullname="System.Reflection.Emit.ILExceptionBlock" preserve="fields" feature="sre" />
+ <type fullname="System.Reflection.Emit.FieldBuilder" preserve="fields" />
+ <type fullname="System.Reflection.Emit.GenericTypeParameterBuilder" preserve="fields" />
+ <type fullname="System.Reflection.Emit.ILExceptionBlock" preserve="fields" />
<type fullname="System.Reflection.Emit.ILExceptionInfo" preserve="fields" />
<type fullname="System.Reflection.Emit.ILGenerator" preserve="fields">
<method name="Mono_GetCurrentOffset" />
</type>
- <type fullname="System.Reflection.Emit.LocalBuilder" preserve="fields" feature="sre" >
+
+ <type fullname="System.Reflection.Emit.LocalBuilder" preserve="fields">
<method name="Mono_GetLocalIndex" />
</type>
- <type fullname="System.Reflection.Emit.MethodBuilder" preserve="fields" feature="sre" >
- <method name="RuntimeResolve" />
- </type>
- <type fullname="System.Reflection.Emit.ModuleBuilder" preserve="fields" feature="sre">
+
+ <type fullname="System.Reflection.Emit.MethodBuilder" preserve="fields" />
+ <type fullname="System.Reflection.Emit.ModuleBuilder" preserve="fields">
<method name="Mono_GetGuid" />
- <method name="RuntimeResolve" />
- </type>
- <type fullname="System.Reflection.Emit.MonoResource" preserve="fields" feature="sre" />
- <type fullname="System.Reflection.Emit.MonoWin32Resource" preserve="fields" feature="sre" />
- <type fullname="System.Reflection.Emit.ParameterBuilder" preserve="fields" feature="sre" />
- <type fullname="System.Reflection.Emit.PropertyBuilder" preserve="fields" feature="sre" />
- <type fullname="System.Reflection.Emit.SignatureHelper" preserve="fields" feature="sre" />
- <type fullname="System.Reflection.Emit.TypeBuilder" preserve="fields" feature="sre">
+ </type>
+
+ <type fullname="System.Reflection.Emit.MonoResource" preserve="fields" />
+ <type fullname="System.Reflection.Emit.MonoWin32Resource" preserve="fields" />
+ <type fullname="System.Reflection.Emit.ParameterBuilder" preserve="fields" />
+ <type fullname="System.Reflection.Emit.PropertyBuilder" preserve="fields" />
+ <type fullname="System.Reflection.Emit.SignatureHelper" preserve="fields" />
+ <type fullname="System.Reflection.Emit.TypeBuilder" preserve="fields">
<method name="SetCharSet" />
- <!-- reflection.c mono_reflection_call_is_assignable_to () -->
- <method name="IsAssignableTo" />
</type>
- <type fullname="System.Reflection.Emit.UnmanagedMarshal" preserve="fields" feature="sre" >
+
+ <type fullname="System.Reflection.Emit.UnmanagedMarshal" preserve="fields">
<method name="DefineCustom" />
<method name="DefineLPArrayInternal" />
</type>
- <type fullname="System.Reflection.Emit.TypeBuilderInstantiation" preserve="fields" feature="sre" >
- <method name="RuntimeResolve" />
- </type>
- <type fullname="System.Reflection.Emit.ArrayType" preserve="fields" feature="sre" >
- <method name="RuntimeResolve" />
- </type>
- <type fullname="System.Reflection.Emit.ByRefType" preserve="fields" feature="sre" >
- <method name="RuntimeResolve" />
- </type>
- <type fullname="System.Reflection.Emit.PointerType" preserve="fields" feature="sre" >
- <method name="RuntimeResolve" />
- </type>
- <type fullname="System.Reflection.Emit.FieldOnTypeBuilderInst" preserve="fields" feature="sre" >
- <method name="RuntimeResolve" />
- </type>
- <type fullname="System.Reflection.Emit.MethodOnTypeBuilderInst" preserve="fields" feature="sre" >
- <method name="RuntimeResolve" />
- </type>
- <type fullname="System.Reflection.Emit.ConstructorOnTypeBuilderInst" preserve="fields" feature="sre" >
- <method name="RuntimeResolve" />
- </type>
- <!-- domain.c: mono_defaults.internals_visible_class -->
<type fullname="System.Runtime.CompilerServices.InternalsVisibleToAttribute" />
<!-- exception.c: mono_get_exception_runtime_wrapped () -->
@@ -676,24 +697,47 @@
<method signature="System.Void .ctor(System.Object)" />
</type>
+ <type fullname="System.Runtime.CompilerServices.InternalsVisibleToAttribute" />
+ <type fullname="System.Runtime.InteropServices.GCHandle" />
+ <type fullname="System.Runtime.InteropServices.HandleRef" />
+
<!-- icall.c | object-internal.h: MonoReflectionDllImportAttribute structure -->
- <type fullname="System.Runtime.InteropServices.DllImportAttribute" preserve="fields"/>
+ <type fullname="System.Runtime.InteropServices.DllImportAttribute" preserve="fields"/>
+
+ <!-- domain.c: mono_defaults.handleref_class (no g_assert, only compared in marshal.c and metadata.c)
+ <type fullname="System.Runtime.InteropServices.HandleRef" />
+ -->
+
<!-- marshal.c: emit_marshal_custom (DISABLE_JIT is not defined for the AOT compiler, only the ARM runtimes) -->
<type fullname="System.Runtime.InteropServices.ICustomMarshaler" />
+ <!-- remoting.c: method_needs_context_sink -->
+ <type fullname="System.Runtime.Remoting.Contexts.Context" preserve="fields">
+ <method name="get_NeedsContextSink" />
+ </type>
+
<!-- domain.c: mono_defaults.marshal_class -->
<type fullname="System.Runtime.InteropServices.Marshal" preserve="fields" >
<!-- marshal.c (mono_marshal_get_struct_to_ptr) -->
<method name="StructureToPtr" />
</type>
-
+
<!-- domain.c: mono_defaults.safehandle_class -->
<type fullname="System.Runtime.InteropServices.SafeHandle" preserve="fields">
<!-- marshal.c (init_safe_handle) -->
<method name="DangerousAddRef" />
<method name="DangerousRelease" />
</type>
-
+
+ <type fullname="System.Runtime.Remoting.Channels.CrossAppDomainSink" />
+ <type fullname="System.Runtime.Remoting.IRemotingTypeInfo">
+ <method name="CanCastTo" />
+ </type>
+
+ <!-- pseudo attribute for the compiler
+ <type fullname="System.Runtime.InteropServices.StructLayoutAttribute" />
+ -->
+
<!-- object-internals.h: defines MonoReflectionUnmanagedFunctionPointerAttribute, marshal.c: use it -->
<type fullname="System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute" preserve="fields"/>
@@ -704,79 +748,67 @@
<!-- appdomain.c: mono_context_init -->
<!-- marshal.c: mono_remoting_marshal_init / removed with DISABLE_REMOTING -->
- <type fullname="System.Runtime.Remoting.Contexts.Context" preserve="fields" feature="remoting" >
- <method name="get_NeedsContextSink" />
- </type>
+ <type fullname="System.Runtime.Remoting.Contexts.Context" preserve="fields" />
- <!-- domain.c: mono_defaults.iremotingtypeinfo_class / removed with DISABLE_REMOTING -->
- <type fullname="System.Runtime.Remoting.IRemotingTypeInfo" feature="remoting">
- <method name="CanCastTo" />
- </type>
+ <!-- domain.c: mono_defaults.iremotingtypeinfo_class / removed with DISABLE_REMOTING
+ <type fullname="System.Runtime.Remoting.IRemotingTypeInfo">
+ -->
<!-- domain.c: mono_defaults.asyncresult_class (Stubify can't be applied on this type) -->
<!-- object.c MONO_OBJECT_SETREF in mono_async_result_new -->
<!-- threadpool.c: MONO_OBJECT_SETREF in create_simple_asyncresult -->
- <type fullname="System.Runtime.Remoting.Messaging.AsyncResult" preserve="fields" />
+ <type fullname="System.Runtime.Remoting.Messaging.AsyncResult" preserve="fields"/>
- <!-- marshal.c: mono_remoting_marshal_init / removed with DISABLE_REMOTING -->
- <type fullname="System.Runtime.Remoting.Messaging.CallContext" feature="remoting" >
+ <!-- remoting.c: mono_remoting_marshal_init -->
+ <type fullname="System.Runtime.Remoting.Messaging.CallContext">
<method name="SetCurrentCallContext" />
</type>
- <type fullname="System.Runtime.Remoting.Messaging.MonoMethodMessage" preserve="fields" feature="remoting" >
- <method name="InitMessage" />
- </type>
- <type fullname="System.Runtime.Remoting.Proxies.RealProxy" preserve="fields" feature="remoting" >
- <method name="PrivateInvoke" />
- <method name="GetAppDomainTarget" />
- </type>
- <type fullname="System.Runtime.Remoting.Proxies.TransparentProxy" preserve="fields" feature="remoting" >
- <method name="LoadRemoteFieldNew" />
- <method name="StoreRemoteField" />
- </type>
- <type fullname="System.Runtime.Remoting.RemotingServices" feature="remoting" >
- <method name="SerializeCallData" />
- <method name="DeserializeCallData" />
- <method name="SerializeExceptionData" />
- </type>
<!-- domain.c: mono_defaults.mono_method_message_class -->
<type fullname="System.Runtime.Remoting.Messaging.MonoMethodMessage" preserve="fields">
<!-- object.c: mono_message_init -->
<method name="InitMessage" />
- </type>
-
- <!-- domain.c: mono_defaults.real_proxy_class / removed with DISABLE_REMOTING -->
- <type fullname="System.Runtime.Remoting.Proxies.RealProxy" feature="remoting" />
+ </type>
- <!-- domain.c: mono_defaults.transparent_proxy_class / removed with DISABLE_REMOTING -->
- <type fullname="System.Runtime.Remoting.Proxies.TransparentProxy" feature="remoting" />
+ <!-- domain.c: mono_defaults.real_proxy_class -->
+ <type fullname="System.Runtime.Remoting.Proxies.RealProxy" >
+ <!-- remoting.c: method_rs_appdomain_target -->
+ <method name="GetAppDomainTarget" />
+ </type>
- <!-- object.c: mono_object_new_specific_checked -->
- <type fullname="System.Runtime.Remoting.Activation.ActivationServices" >
- <method name="CreateProxyForType"/>
+ <!-- domain.c: mono_defaults.transparent_proxy_class -->
+ <type fullname="System.Runtime.Remoting.Proxies.TransparentProxy">
+ <!-- remoting.c: mono_marshal_get_ldfld_wrapper -->
+ <method name="LoadRemoteFieldNew" />
+ <!-- remoting.c: mono_marshal_get_stfld_wrapper -->
+ <method name="StoreRemoteField" />
</type>
+
+ <type fullname="System.Runtime.Remoting.RemotingServices">
+ <method name="SerializeCallData" />
+ <method name="DeserializeCallData" />
+ <method name="SerializeExceptionData" />
+ </type>
<!-- exception.c (mono_get_exception_serialization) -->
<type fullname="System.Runtime.Serialization.SerializationException">
<!-- mono_exception_from_name_msg -->
<method signature="System.Void .ctor(System.String)" />
</type>
- <!-- domain.c: mono_defaults.runtimesecurityframe_class -->
+ <!-- domain.c: mono_defaults.runtimesecurityframe_class -->
<type fullname="System.Security.RuntimeSecurityFrame" preserve="fields" />
-
+
<!-- domain.c: mono_defaults.executioncontext_class -->
<type fullname="System.Threading.ExecutionContext">
<!-- security-manager.c: mono_get_context_capture_method (can likely be removed) -->
<method name="Capture" />
</type>
- <!-- aot-runtime.c: mono_aot_get_method -->
<type fullname="System.Threading.Interlocked">
<method name="CompareExchange" />
- <method name="Exchange" />
</type>
-
+
<!-- domain.c: mono_defaults.monitor_class -->
<!-- monitor.c / method-to-ir.c: Enter and Exit are only string comparison (safe to link) -->
<type fullname="System.Threading.Monitor">
@@ -785,6 +817,8 @@
<method name="Exit" />
</type>
+ <type fullname="System.Threading.SynchronisationLockException" />
+
<!-- domain.c: mono_defaults.manualresetevent_class -->
<type fullname="System.Threading.ManualResetEvent" >
<!-- runtime access fields and setter from inherited WaitHandle -->
@@ -801,29 +835,33 @@
<type fullname="System.Threading.Thread" preserve="fields">
<method name="get_CurrentContext" />
</type>
-
+
<!-- domain.c: mono_defaults.internal_thread_class -->
<type fullname="System.Threading.InternalThread" preserve="fields" />
-
+
<!-- domain.c: mono_defaults.threadabortexception_class -->
<!-- exception.c (mono_get_exception_thread_abort) -->
<type fullname="System.Threading.ThreadAbortException">
<!-- mono_exception_from_name -->
<method signature="System.Void .ctor()" />
</type>
-
+
<!-- exception.c (ThreadInterruptedException) -->
<type fullname="System.Threading.ThreadInterruptedException">
<!-- mono_exception_from_name -->
<method signature="System.Void .ctor()" />
</type>
+ <!-- runtime has it's own, not clear the managed part needs to exists
+ <type fullname="System.Threading.ThreadState" preserve="fields" />
+ -->
+
<!-- exception.c (mono_get_exception_thread_abort) -->
<type fullname="System.Threading.ThreadStateException">
<!-- mono_exception_from_name_msg -->
<method signature="System.Void .ctor(System.String)" />
</type>
-
+
<!-- object-internals.h: defines MonoWaitHandle, threadpool.c: gets the handle from the structure -->
<type fullname="System.Threading.WaitHandle" preserve="fields">
<!-- object.c: mono_wait_handle_new -->
@@ -834,28 +872,37 @@
<!-- threadpool-ms.c (worker_thread) -->
<type fullname="System.Threading._ThreadPoolWaitCallback">
- <method name="PerformWaitCallback"/>
+ <method name="PerformWaitCallback"/>
</type>
<!-- domain.c: mono_defaults.stringbuilder_class -->
<type fullname="System.Text.StringBuilder" preserve="fields" />
- <!-- cominterop.c -->
+ <type fullname="System.Security.AllowPartiallyTrustedCallersAttribute" />
+ <type fullname="System.Security.Policy.Evidence" />
+ <type fullname="System.Security.SecurityManager" />
+
+ <namespace fullname="System.Security.Cryptography" feature="crypto" />
+
<type fullname="Mono.Interop.ComInteropProxy" feature="com" />
<type fullname="Mono.Interop.IDispatch" feature="com" />
- <type fullname="Mono.Interop.IUnknown" feature="com"/>
+ <type fullname="Mono.Interop.IUnknown" feature="com" />
- <!--
- Many applications rely on Mono.Runtime to exist in order to detect
- whether they are running on Mono or .NET. Thus we always preserve it
- to allow such detection logic to work, even if the class is not used
- directly.
- -->
+ <!-- remoting.c: method_rs_serialize, method_rs_deserialize, method_rs_serialize_exc -->
+ <type fullname="System.Runtime.Remoting.RemotingServices">
+ <method name="SerializeCallData" />
+ <method name="DeserializeCallData" />
+ <method name="SerializeExceptionData" />
+ </type>
+
+ <!-- by convention (and see #34671) -->
<type fullname="Mono.Runtime" />
<!-- marshal.c (mono_marshal_get_native_wrapper) -->
<type fullname="Mono.RuntimeStructs/HandleStackMark" />
<!-- marshal.c (mono_marshal_get_native_wrapper) -->
<type fullname="Mono.RuntimeStructs/MonoError" />
+
</assembly>
</linker>
+
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment