Skip to content

Instantly share code, notes, and snippets.

@dalexsoto
Created March 16, 2018 17:33
Show Gist options
  • Save dalexsoto/f0b1c9c66bf50edf8198063ec039a17b to your computer and use it in GitHub Desktop.
Save dalexsoto/f0b1c9c66bf50edf8198063ec039a17b to your computer and use it in GitHub Desktop.
git diff --no-index mono\ mscorlib.xml XI\ mscorlib.xml
diff --git a/Users/alex/Desktop/mono mscorlib.xml b/Users/alex/Desktop/XI mscorlib.xml
index e879311e..8c4416ae 100644
--- a/Users/alex/Desktop/mono mscorlib.xml
+++ b/Users/alex/Desktop/XI mscorlib.xml
@@ -15,8 +15,6 @@
<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 -->
@@ -32,6 +30,10 @@
<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 -->
@@ -60,7 +62,7 @@
<!-- 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" />
@@ -111,13 +113,33 @@
<!-- 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" />
@@ -153,7 +175,9 @@
<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">
@@ -192,6 +216,10 @@
<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 -->
@@ -228,9 +256,11 @@
<!-- 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.MethodAccessException">
<!-- exception.c: mono_get_exception_method_access / mono_exception_from_name -->
<method signature="System.Void .ctor()" />
@@ -248,10 +278,25 @@
<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" />
@@ -288,9 +333,6 @@
<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 -->
@@ -300,9 +342,7 @@
<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 -->
@@ -319,9 +359,6 @@
<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 -->
<type fullname="System.RuntimeArgumentHandle" preserve="fields" />
@@ -333,6 +370,13 @@
<!-- 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" />
@@ -352,21 +396,15 @@
<!-- 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="FastAllocateString" />
+ <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" />
@@ -422,11 +460,6 @@
<!-- 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>
-
<!-- icall.c: create_version is used by
* ves_icall_System_Reflection_Assembly_GetReferencedAssemblies
* fill_reflection_assembly_name
@@ -441,16 +474,14 @@
<!-- 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.IEnumerator`1" />
<type fullname="System.Collections.Generic.IReadOnlyList`1" />
<type fullname="System.Collections.Generic.IReadOnlyCollection`1" />
- <!-- domain.c: mono_defaults.generic_ilist_class -->
+ <!-- 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 -->
@@ -463,11 +494,6 @@
<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" />
@@ -502,23 +528,19 @@
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 -->
+ <!-- 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 -->
@@ -530,6 +552,7 @@
<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" />
@@ -544,14 +567,28 @@
<!-- reflection.c: mono_method_body_get_object -->
<type fullname="System.Reflection.LocalVariableInfo" preserve="fields" />
+ <!-- icall.c: ves_icall_System_Reflection_Assembly_GetManifestResourceInfoInternal does not look used by the runtime
+ <type fullname="System.Reflection.ManifestResourceInfo" 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" />
+
+ <!-- reflection.c: check the type name - not sure the type needs to exists
+ <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" />
@@ -597,87 +634,30 @@
<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.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.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" >
- <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">
- <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">
- <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" >
- <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 -->
+ <!-- domain.c: mono_defaults.internals_visible_class / no g_assert, safe to link
<type fullname="System.Runtime.CompilerServices.InternalsVisibleToAttribute" />
+ -->
<!-- exception.c: mono_get_exception_runtime_wrapped () -->
<type fullname="System.Runtime.CompilerServices.RuntimeWrappedException">
<method signature="System.Void .ctor(System.Object)" />
</type>
+ <!-- domain.c: mono_defaults.critical_finalizer_object / no g_assert, safe to link
+ <type fullname="System.Runtime.ConstrainedExecution.CriticalFinalizerObject" />
+ -->
+
<!-- icall.c | object-internal.h: MonoReflectionDllImportAttribute structure -->
<type fullname="System.Runtime.InteropServices.DllImportAttribute" preserve="fields"/>
+
+ <!-- runtime does not need the managed code, so it's safe to link
+ <type fullname="System.Runtime.InteropServices.GCHandle" />
+ -->
+
+ <!-- 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" />
@@ -694,6 +674,10 @@
<method name="DangerousRelease" />
</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,58 +688,37 @@
<!-- 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>
-
- <!-- domain.c: mono_defaults.iremotingtypeinfo_class / removed with DISABLE_REMOTING -->
- <type fullname="System.Runtime.Remoting.IRemotingTypeInfo" feature="remoting">
- <method name="CanCastTo" />
- </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">
+ -->
+
<!-- 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" />
-
- <!-- marshal.c: mono_remoting_marshal_init / removed with DISABLE_REMOTING -->
- <type fullname="System.Runtime.Remoting.Messaging.CallContext" feature="remoting" >
+ <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">
<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" />
-
- <!-- domain.c: mono_defaults.transparent_proxy_class / removed with DISABLE_REMOTING -->
- <type fullname="System.Runtime.Remoting.Proxies.TransparentProxy" feature="remoting" />
-
- <!-- object.c: mono_object_new_specific_checked -->
- <type fullname="System.Runtime.Remoting.Activation.ActivationServices" >
- <method name="CreateProxyForType"/>
</type>
+
+ <!-- domain.c: mono_defaults.real_proxy_class / removed with DISABLE_REMOTING
+ <type fullname="System.Runtime.Remoting.Proxies.RealProxy">
+ -->
+ <!-- domain.c: mono_defaults.transparent_proxy_class / removed with DISABLE_REMOTING
+ <type fullname="System.Runtime.Remoting.Proxies.TransparentProxy" />
+ -->
+
<!-- exception.c (mono_get_exception_serialization) -->
<type fullname="System.Runtime.Serialization.SerializationException">
<!-- mono_exception_from_name_msg -->
@@ -777,12 +740,13 @@
<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) -->
+ <!-- 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">
<!-- marshal.c: mono_marshal_get_synchronized_wrapper-->
<method name="Enter" />
<method name="Exit" />
+ <method name="enter_with_atomic_var" />
</type>
<!-- domain.c: mono_defaults.manualresetevent_class -->
@@ -818,6 +782,10 @@
<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 -->
@@ -840,22 +808,17 @@
<!-- domain.c: mono_defaults.stringbuilder_class -->
<type fullname="System.Text.StringBuilder" preserve="fields" />
- <!-- cominterop.c -->
- <type fullname="Mono.Interop.ComInteropProxy" feature="com" />
- <type fullname="Mono.Interop.IDispatch" 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.
- -->
+ <!-- by convention (and see #34671) -->
<type fullname="Mono.Runtime" />
+ <!-- this is a temporary workaround for bug #43658 -->
+ <type fullname="Mono.RuntimeStructs" preserve="fields" />
+
<!-- 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