[corlib] Update Assembly class xml descriptor
[mono.git] / mcs / class / corlib / LinkerDescriptor / mscorlib.xml
1 <?xml version="1.0" encoding="utf-8" ?>
2 <linker>
3         <assembly fullname="mscorlib">
4         
5                 <!-- domain.c: mono_defaults.appdomain_class -->
6                 <type fullname="System.AppDomain" preserve="fields">
7                         <method name="DoDomainUnload" />
8                         <!-- appdomain.c: mono_domain_try_type_resolve -->
9                         <method name="DoTypeResolve" />
10                         <!-- appdomain.c: mono_try_assembly_resolve -->
11                         <method name="DoAssemblyResolve" />
12                         <!-- appdomain.c: mono_domain_fire_assembly_load -->
13                         <method name="DoAssemblyLoad" />
14                         <!-- appdomain.c: mono_domain_try_unload -->
15                         <method name="DoDomainUnload" />
16                         <!-- marshal.c: mono_remoting_marshal_init -->
17                         <method name="InternalSetContext" />
18                         <!-- System.Runtime.Remoting/RemotingServices.cs: GetDomainProxy(AppDomain domain) -->
19                         <method name="GetMarshalledDomainObjRef" feature="remoting" />
20                 </type>
21
22                 <!-- appdomain.c: mono_runtime_init -->
23                 <type fullname="System.AppDomainSetup" preserve="fields" />
24                 
25                 <!-- exception.c: mono_get_exception_appdomain_unloaded (used in several places), threadpool.c -->
26                 <type fullname="System.AppDomainUnloadedException">
27                         <!-- mono_exception_from_name -->
28                         <method signature="System.Void .ctor()" />
29                 </type>
30                 
31                 <!-- marshal.c: emit_marshal_custom (should not be used on devices)
32                 <type fullname="System.ApplicationException" />
33                 -->
34
35                 <!-- exception.c (mono_get_exception_argument) -->
36                 <type fullname="System.ArgumentException">
37                         <!-- mono_exception_from_name -->
38                         <method signature="System.Void .ctor()" />
39                         <!-- MONO_OBJECT_SETREF -->
40                         <field name="param_name" />
41                 </type>
42         
43                 <!-- exception.c (mono_get_exception_argument_null) -->
44                 <type fullname="System.ArgumentNullException">
45                         <!-- mono_exception_from_name_msg -->
46                         <method signature="System.Void .ctor(System.String)" />
47                 </type>
48
49                 <!-- exception.c (mono_get_exception_argument_out_of_range) -->
50                 <type fullname="System.ArgumentOutOfRangeException">
51                         <!-- mono_exception_from_name -->
52                         <method signature="System.Void .ctor()" />
53                 </type>
54
55                 <!-- exception.c (mono_get_exception_arithmetic) -->
56                 <type fullname="System.ArithmeticException">
57                         <!-- mono_exception_from_name -->
58                         <method signature="System.Void .ctor()" />
59                 </type>
60                 
61                 <!-- domain.c: mono_defaults.array_class -->
62                 <type fullname="System.Array">
63                         <!-- InternalArray__%s_%s is used in aot-compiler.c -->
64                         <method name="InternalArray__ICollection_get_Count" />
65                         <method name="InternalArray__ICollection_get_IsReadOnly" />
66                         <method name="InternalArray__IEnumerable_GetEnumerator" />
67                         <method name="InternalArray__ICollection_Clear" />
68                         <method name="InternalArray__ICollection_Add" />
69                         <method name="InternalArray__ICollection_Remove" />
70                         <method name="InternalArray__ICollection_Contains" />
71                         <method name="InternalArray__ICollection_CopyTo" />
72                         <method name="InternalArray__Insert" />
73                         <method name="InternalArray__RemoveAt" />
74                         <method name="InternalArray__IndexOf" />
75                         <method name="InternalArray__get_Item" />
76                         <method name="InternalArray__set_Item" />
77                         <method name="InternalArray__IReadOnlyList_get_Item" />
78                         <method name="InternalArray__IReadOnlyCollection_get_Count" />
79                 </type>
80                 
81                 <!-- mono/metadata/exception.c mono/metadata/marshal.c ... -->
82                 <!-- exception.c (mono_get_exception_array_type_mismatch) -->
83                 <type fullname="System.ArrayTypeMismatchException">
84                         <!-- mono_exception_from_name -->
85                         <method signature="System.Void .ctor()" />
86                 </type>
87                 
88                 <!-- domain.c: mono_defaults.attribute_class -->
89                 <!-- used in reflection.c to create array of attributes (no need to preserve everything beside the type itself) -->
90                 <type fullname="System.Attribute" preserve="fields" />
91                 
92                 <!-- exception.c / mono-error.c -->
93                 <type fullname="System.BadImageFormatException">
94                         <!-- mono_get_exception_bad_image_format / mono_exception_from_name_msg -->
95                         <method signature="System.Void .ctor(System.String)" />
96                         <!-- mono_get_exception_bad_image_format2 / mono_exception_from_name_two_strings -->
97                         <method signature="System.Void .ctor(System.String,System.String)" />
98                 </type>
99                 
100                 <!-- domain.c: mono_defaults.boolean_class -->
101                 <type fullname="System.Boolean" preserve="fields" />
102                 
103                 <!-- domain.c: mono_defaults.byte_class -->
104                 <type fullname="System.Byte" preserve="fields" />
105                 
106                 <!-- exception.c" mono_get_exception_cannot_unload_appdomain (called by appdomain.c) -->
107                 <type fullname="System.CannotUnloadAppDomainException">
108                         <!-- mono_exception_from_name_msg -->
109                         <method signature="System.Void .ctor(System.String)" />
110                 </type>
111                 
112                 <!-- domain.c: mono_defaults.char_class -->
113                 <type fullname="System.Char" preserve="fields" />
114
115                 <!-- marshal.c: emit_marshal_vtype -->
116                 <type fullname="System.DateTime" preserve="fields" />
117                 
118                 <!-- reflection.c: mono_get_dbnull_object / comment: Used as the value for ParameterInfo.DefaultValue -->
119                 <type fullname="System.DBNull" preserve="fields" />
120                 <type fullname="System.Decimal" preserve="fields" />
121                 <!-- domain.c: mono_defaults.delegate_class -->
122                 <type fullname="System.Delegate" preserve="fields" />
123                 
124                 <!-- domain.c: mono_defaults.stack_frame_class -->
125                 <!-- used in mini-exceptions.c to create array and MonoStackFrame instance, i.e. only fields are required to be preserved -->
126                 <type fullname="System.Diagnostics.StackFrame" preserve="fields" />
127                 
128                 <!-- domain.c: mono_defaults.stack_trace_class -->
129                 <!-- does not seems used outside the g_assert in domain.c (maybe it could be removed) -->
130                 <type fullname="System.Diagnostics.StackTrace" preserve="fields" />
131
132                 <!-- debugger-agent.c: create_event_list -->
133                 <type fullname="System.Diagnostics.DebuggerNonUserCodeAttribute"/>
134                 <type fullname="System.Diagnostics.DebuggerHiddenAttribute"/>
135                 <type fullname="System.Diagnostics.DebuggerStepThroughAttribute"/>
136
137                 <!-- exception.c (mono_get_exception_divide_by_zero) -->
138                 <type fullname="System.DivideByZeroException">
139                         <!-- mono_exception_from_name -->
140                         <method signature="System.Void .ctor()" />
141                 </type>
142                 
143                 <!-- loader.c: returned (as a string) from mono_lookup_pinvoke_call and used in
144                                 icall.c: prelink_method / mono_exception_from_name_msg
145                                 marshal.c: mono_delegate_to_ftnptr and mono_marshal_get_native_wrapper
146                 -->
147                 <type fullname="System.DllNotFoundException">
148                         <!-- mono_exception_from_name_msg -->
149                         <method signature="System.Void .ctor(System.String)" />
150                 </type>
151                 
152                 <!-- domain.c: mono_defaults.double_class -->
153                 <type fullname="System.Double" preserve="fields" />
154                 
155                 <!-- domain.c: mono_defaults.enum_class -->
156                 <type fullname="System.Enum" preserve="fields" />
157                 
158                 <!-- loader.c: returned (as a string) from mono_lookup_pinvoke_call and used in â€¦ -->
159                 <type fullname="System.EntryPointNotFoundException">
160                         <!-- mono_exception_from_name_msg -->
161                         <method signature="System.Void .ctor(System.String)" />
162                 </type>
163                 
164                 <type fullname="System.Environment">
165                         <!-- appdomain.c: mono_get_corlib_version -->
166                         <field name="mono_corlib_version" />
167                         <method name="get_StackTrace" />
168                 </type>
169                 
170                 <!-- domain.c: mono_defaults.exception_class and fields are defined in object-internals.h -->
171                 <type fullname="System.Exception" preserve="fields">
172                         <!-- used in mini-exceptions.c (if trace is enabled) -->
173                         <method name="get_Message" />
174                 </type>
175                 
176                 <!-- exception.c (mono_get_exception_execution_engine) -->
177                 <type fullname="System.ExecutionEngineException">
178                         <!-- mono_exception_from_name_msg -->
179                         <method signature="System.Void .ctor(System.String)" />
180                 </type>
181
182                 <type fullname="System.FieldAccessException">
183                         <!-- exception.c: mono_get_exception_field_access / mono_exception_from_name -->
184                         <method signature="System.Void .ctor()" />
185                         <!-- exception.c: mono_get_exception_field_access_msg / mono_exception_from_name_msg -->
186                         <!-- mini.c (mono_jit_compiler_method_inner) mono_exception_from_name_msg -->
187                         <method signature="System.Void .ctor(System.String)" />
188                 </type>
189
190                 <type fullname="System.FormatException">
191                         <!-- icall.c (base64_to_byte_array) mono_exception_from_name_msg -->
192                         <method signature="System.Void .ctor(System.String)" />
193                 </type>
194                 
195                 <!-- exception.c: mono_get_exception_index_out_of_range - used by many in icall.c and in socket-io.c -->
196                 <type fullname="System.IndexOutOfRangeException">
197                         <!-- mono_exception_from_name_msg -->
198                         <method signature="System.Void .ctor(System.String)" />
199                 </type>
200                 
201                 <!-- domain.c: mono_defaults.int16_class -->
202                 <type fullname="System.Int16" preserve="fields" />
203                 
204                 <!-- domain.c: mono_defaults.int32_class -->
205                 <type fullname="System.Int32" preserve="fields" />
206                 
207                 <!-- domain.c: mono_defaults.int64_class -->
208                 <type fullname="System.Int64" preserve="fields" />
209                 
210                 <!-- domain.c: mono_defaults.int_class -->
211                 <type fullname="System.IntPtr" preserve="fields" />
212                 
213                 <!-- exception.c (mono_get_exception_invalid_cast) -->
214                 <type fullname="System.InvalidCastException">
215                         <!-- mono_exception_from_name -->
216                         <method signature="System.Void .ctor()" />
217                 </type>
218                 
219                 <!-- marshal.c: emit several times using mono_mb_emit_exception_full -->
220                 <!-- exception.c (mono_get_exception_invalid_operation) -->
221                 <type fullname="System.InvalidOperationException">
222                         <!-- mono_exception_from_name_msg -->
223                         <method signature="System.Void .ctor(System.String)" />
224                 </type>
225                 
226                 <!-- mini.c: mono_jit_compile_method_inner (looks like one case is JITted, AOT too) -->
227                 <type fullname="System.InvalidProgramException">
228                         <!-- mono_exception_from_name_msg -->
229                         <method signature="System.Void .ctor(System.String)" />
230                 </type>
231
232                 <type fullname="System.MarshalByRefObject" preserve="fields" feature="remoting" />
233
234                 <type fullname="System.MethodAccessException">
235                         <!-- exception.c: mono_get_exception_method_access / mono_exception_from_name -->
236                         <method signature="System.Void .ctor()" />
237                         <!-- exception.c: mono_get_exception_method_access_msg / mono_exception_from_name_msg -->
238                         <!-- mini.c (mono_jit_compiler_method_inner) mono_exception_from_name_msg -->
239                         <method signature="System.Void .ctor(System.String)" />
240                 </type>
241                 
242                 <!-- mini.c (mono_jit_compiler_method_inner) / mono-error.c -->
243                 <type fullname="System.MissingFieldException">
244                         <!-- mono_exception_from_name_msg -->
245                         <method signature="System.Void .ctor(System.String)" />
246                 </type>
247         
248                 <type fullname="System.MissingMethodException">
249                         <!-- mini.c (mono_jit_compiler_method_inner) mono_exception_from_name_msg -->
250                         <method signature="System.Void .ctor(System.String)" />
251                         <!-- exception.c (mono_get_exception_type_load) mono_exception_from_name_two_strings -->
252                         <method signature="System.Void .ctor(System.String,System.String)" />
253                 </type>
254                 
255                 <!-- threadpool.c: mono_thread_pool_init (assert) -->
256                 <type fullname="System.MonoAsyncCall" preserve="fields" />
257                 <!-- mono-mlist.c (managed list): used in threadpool.c and gc.c -->
258                 <type fullname="System.MonoListItem" preserve="fields" />
259                 
260                 <!-- domain.c: mono_defaults.type_class -->
261                 <type fullname="System.MonoType" preserve="fields" />
262                 
263                 <!-- domain.c: mono_defaults.multicastdelegate_class -->
264                 <type fullname="System.MulticastDelegate" preserve="fields" />
265                 
266                 <!-- exception.c (mono_get_exception_not_implemented) -->
267                 <type fullname="System.NotImplementedException">
268                         <!-- mono_get_exception_not_implemented -->
269                         <method signature="System.Void .ctor(System.String)" />
270                 </type>
271
272                 <!-- exception.c (mono_get_exception_not_supported) -->
273                 <type fullname="System.NotSupportedException">
274                         <!-- mono_get_exception_not_implemented -->
275                         <method signature="System.Void .ctor(System.String)" />
276                 </type>
277         
278                 <!-- appdomain.c (create_domain_objects) domain->null_reference_ex -->
279                 <!-- exception.c (mono_get_exception_null_reference) -->
280                 <type fullname="System.NullReferenceException">
281                         <!-- exception.c: mono_exception_from_name -->
282                         <method signature="System.Void .ctor()" />
283                         <!-- appdomain.c: mono_exception_from_name_two_strings (only one string in the signature since NULL is used as the 2nd parameter) -->
284                         <method signature="System.Void .ctor(System.String)" />
285                 </type>
286                 
287                 <!-- domain.c: mono_defaults.nullable_class -->         
288                 <type fullname="System.Nullable`1" preserve="fields">
289                         <!-- method-to-ir.c (handle_box) -->
290                         <method name="Box" />
291                         <!-- method-to-ir.c (handle_unbox_nullable) -->
292                         <method name="Unbox" />
293                 </type>
294                 
295                 <!-- domain.c: mono_defaults.object_class -->
296                 <type fullname="System.Object">
297                         <!-- class.c: initialize_object_slots -->
298                         <method name="Finalize" />
299                         <method name="GetHashCode" />
300                         <!-- needed for debugging -->
301                         <method name="obj_address" />
302                         <!-- TransparentProxy.cs, RemotingServices.cs -->
303                         <method name="FieldGetter" feature="remoting" />
304                         <method name="FieldSetter" feature="remoting" />
305                 </type>
306                 
307                 <!-- appdomain.c (create_domain_objects) domain->out_of_memory_ex -->
308                 <type fullname="System.OutOfMemoryException">
309                         <!-- mono_exception_from_name_two_strings (only one string in the signature since NULL is used as the 2nd parameter) -->
310                         <method signature="System.Void .ctor(System.String)" />
311                         <!-- exception.c: mono_get_exception_out_of_memory / mono_exception_from_name -->
312                         <method signature="System.Void .ctor()" />
313                 </type>
314                 
315                 <!-- exception.c (mono_get_exception_overflow) -->
316                 <type fullname="System.OverflowException">
317                         <!-- mono_exception_from_name -->
318                         <method signature="System.Void .ctor()" />
319                 </type>
320
321                 <!-- reflection.c: mono_get_reflection_missing_object -->
322                 <type fullname="System.Reflection.Missing" preserve="field" />
323
324                 <!-- domain.c: mono_defaults.argumenthandle_class -->           
325                 <type fullname="System.RuntimeArgumentHandle" preserve="fields" />
326                 
327                 <!-- domain.c: mono_defaults.typefield_class -->
328                 <type fullname="System.RuntimeFieldHandle" preserve="fields" />
329                 
330                 <!-- domain.c: mono_defaults.methodhandle_class -->
331                 <type fullname="System.RuntimeMethodHandle" preserve="fields" />
332                 
333                 <!-- domain.c: mono_defaults.typehandle_class -->
334                 <type fullname="System.RuntimeTypeHandle" preserve="fields" />
335                 <!-- domain.c: mono_defaults.sbyte_class -->
336                 <type fullname="System.SByte" preserve="fields" />
337                 
338                 <!-- domain.c: mono_defaults.single_class -->
339                 <type fullname="System.Single" preserve="fields" />
340                 
341                 <!-- appdomain.c (create_domain_objects) domain->stack_overflow_ex -->
342                 <type fullname="System.StackOverflowException">
343                         <!-- mono_exception_from_name_two_strings (only one string in the signature since NULL is used as the 2nd parameter) -->
344                         <method signature="System.Void .ctor(System.String)" />
345                         <!-- exception.c: mono_get_exception_stack_overflow / mono_exception_from_name -->
346                         <method signature="System.Void .ctor()" />
347                 </type>
348                 
349                 <!-- object.c: mono_runtime_exec_main -->
350                 <type fullname="System.STAThreadAttribute" />
351                 
352                 <!-- domain.c: mono_defaults.string_class -->
353                 <type fullname="System.String" preserve="fields">
354                         <!-- marshal.c mono_marshal_get_native_wrapper -->
355                         <method name="CreateString" />
356                         <!-- method-to-ir.c: mini_redirect_call -->
357                         <method name="InternalAllocateStr" />
358                         <!-- method-to-it.c: mini_emit_initobj -->
359                         <method name="memset" />
360                         <!-- mini-generic-sharing.c: class_type_info 
361                                 All patterns bellow
362                         -->
363                         <method name="bzero" />
364                         <method name="bzero_aligned_1" />
365                         <method name="bzero_aligned_2" />
366                         <method name="bzero_aligned_4" />
367                         <method name="bzero_aligned_8" />
368                         <method name="memcpy" />
369                         <method name="memcpy_aligned_1" />
370                         <method name="memcpy_aligned_2" />
371                         <method name="memcpy_aligned_4" />
372                         <method name="memcpy_aligned_8" />
373                 </type>
374
375                 <!-- socket-io.c: created/raised several time -->
376                 <type fullname="System.SystemException">
377                         <!-- mono_exception_from_nameg -->
378                         <method signature="System.Void .ctor()" />
379                 </type>
380                 
381                 <!-- domain.c: mono_defaults.systemtype_class -->
382                 <type fullname="System.Type" preserve="fields">
383                         <!-- marshal.c (mono_marshal_get_synchronized_wrapper) -->
384                         <method name="GetTypeFromHandle" />
385                 </type>
386                 
387                 <!-- exception.c (mono_get_exception_type_initialization) -->
388                 <type fullname="System.TypeInitializationException">
389                         <!-- iterates to find the (only) 2 paramaters .ctor -->
390                         <method signature="System.Void .ctor(System.String,System.Exception)" />
391                 </type>
392
393                 <!-- exception.c (mono_get_exception_type_load) -->
394                 <type fullname="System.TypeLoadException">
395                         <!-- mini.c (mono_jit_compiler_method_inner) mono_exception_from_name_msg -->
396                         <method signature="System.Void .ctor(System.String)" />
397                         <!-- mono_exception_from_name_two_strings -->
398                         <method signature="System.Void .ctor(System.String,System.String)" />
399                 </type>
400                 
401                 <!-- domain.c: mono_defaults.typed_reference_class -->          
402                 <type fullname="System.TypedReference" preserve="fields" />
403                 
404                 <!-- domain.c: mono_defaults.uint16_class -->
405                 <type fullname="System.UInt16" preserve="fields" />
406                 
407                 <!-- domain.c: mono_defaults.uint32_class -->
408                 <type fullname="System.UInt32" preserve="fields" />
409                 
410                 <!-- domain.c: mono_defaults.uint64_class -->
411                 <type fullname="System.UInt64" preserve="fields" />
412                 
413                 <!-- domain.c: mono_defaults.uint_class -->
414                 <type fullname="System.UIntPtr" preserve="fields" />
415                 
416                 <!-- object.c: create_unhandled_exception_eventargs (assert) -->
417                 <type fullname="System.UnhandledExceptionEventArgs">
418                         <method signature="System.Void .ctor(System.Object,System.Boolean)" />
419                 </type>
420                 
421                 <!-- class.c: make_generic_param_class -->
422                 <type fullname="System.ValueType" preserve="fields" />
423
424                 <!-- comiterop.c -->
425                 <type fullname="System.Variant" preserve="fields" feature="com">
426                         <method name="Clear" />
427                 </type>
428
429                 <!-- icall.c: create_version is used by
430                         * ves_icall_System_Reflection_Assembly_GetReferencedAssemblies
431                         * fill_reflection_assembly_name
432                                 * ves_icall_System_Reflection_Assembly_FillName
433                                 * ves_icall_System_Reflection_Assembly_InternalGetAssemblyName
434                                 * ves_icall_System_Reflection_AssemblyName_ParseName
435                         -->
436                 <type fullname="System.Version">
437                         <method signature="System.Void .ctor(System.Int32,System.Int32,System.Int32,System.Int32)" />
438                 </type>
439                 
440                 <!-- domain.c: mono_defaults.void_class -->
441                 <type fullname="System.Void" preserve="fields" />
442
443                 <!-- comiterop.c -->
444                 <type fullname="System.__ComObject" feature="com" />
445
446                 <!-- class.c: generic_array_methods -->
447                 <type fullname="System.Collections.Generic.ICollection`1" />
448                 <type fullname="System.Collections.Generic.IEnumerable`1" />
449                 <type fullname="System.Collections.Generic.IReadOnlyList`1" />
450                 <type fullname="System.Collections.Generic.IReadOnlyCollection`1" />
451                 
452                 <!-- domain.c: mono_defaults.generic_ilist_class -->
453                 <type fullname="System.Collections.Generic.IList`1" />
454                 
455                 <!-- aot-compiler.c: add_generic_instances and add_generic_class_with_depth -->
456                 <type fullname="System.Collections.Generic.GenericEqualityComparer`1">
457                         <method name=".ctor" />
458                 </type>
459                 
460                 <!-- aot-compiler.c: add_generic_instances and add_generic_class_with_depth -->
461                 <type fullname="System.Collections.Generic.GenericComparer`1">
462                         <method name=".ctor" />
463                 </type>
464
465                 <!-- icalls - but (at least parts of them) are used thru interfaces at runtime and cannot be linked out -->
466                 <type fullname="System.Globalization.DateTimeFormatInfo" preserve="fields" />
467                 <type fullname="System.Globalization.CompareInfo" preserve="fields" />
468                 <type fullname="System.Globalization.CultureInfo" preserve="fields">
469                         <!-- icall.c: fill_reflection_assembly_name (assert) and ves_icall_System_Reflection_Assembly_GetReferencedAssemblies (assert) -->
470                         <method name="CreateCulture" />
471                 </type>
472                 <type fullname="System.Globalization.NumberFormatInfo" preserve="fields" />
473                 <type fullname="System.Globalization.RegionInfo" preserve="fields" />
474                 <type fullname="System.Globalization.SortKey" preserve="fields" />
475
476                 <type fullname="System.IO.FileNotFoundException">
477                         <!-- mini.c (mono_jit_compiler_method_inner) mono_exception_from_name_msg -->
478                         <method signature="System.Void .ctor(System.String)" />
479                         <!-- exception.c (mono_get_exception_file_not_found and mono_get_exception_file_not_found) -->
480                         <!-- mono_exception_from_name_two_strings -->
481                         <method signature="System.Void .ctor(System.String,System.String)" />
482                 </type>
483
484                 <!-- exception.c (mono_get_exception_io) -->
485                 <type fullname="System.IO.IOException">
486                         <!-- mono_exception_from_name_msg -->
487                         <method signature="System.Void .ctor(System.String)" />
488                 </type>
489
490                 <!-- fileio.h: shared structure between the managed and unmanaged worlds -->
491                 <type fullname="System.IO.MonoIOStat" preserve="fields" />
492                 
493                 <!-- domain.c: mono_defaults.math_class
494                         method-to-ir.c: empty branch (wrt Min/Max optimization)
495                         mini-[x86|amd64].c needs the type but then only check for names
496                         note: there's no fields (static type) but that will mark the type itself -->
497                 <type fullname="System.Math" preserve="fields" />
498
499                 <type fullname="System.Reflection.MonoAssembly">
500                         <method name=".ctor" />
501                 </type>
502                 <type fullname="System.Reflection.MonoModule">
503                         <method name=".ctor" />
504                 </type>
505
506                 <!-- appdomain.c: ves_icall_System_AppDomain_GetAssemblies -->
507                 <type fullname="System.Reflection.Assembly" preserve="fields"/>
508
509                 <type fullname="System.Reflection.AssemblyName" preserve="fields" />
510                 <type fullname="System.Reflection.ConstructorInfo" preserve="fields" />
511
512                 <!-- domain.c: mono_defaults.customattribute_data_class -->
513                 <type fullname="System.Reflection.CustomAttributeData" preserve="fields">
514                         <!-- custom-attrs.c: create_custom_attr_data - create an instance with the ctor using 4 arguments -->
515                         <method signature="System.Void .ctor(System.Reflection.ConstructorInfo,System.Reflection.Assembly,System.IntPtr,System.UInt32)" />
516                 </type>
517
518                 <!-- reflection.c: create_cattr_named_arg - create an instance with the ctor using 2 parameters -->
519                 <type fullname="System.Reflection.CustomAttributeNamedArgument">
520                         <method signature="System.Void .ctor(System.Reflection.MemberInfo,System.Object)" />
521                 </type>
522                 
523                 <!-- reflection.c: create_cattr_typed_arg - create an instance with the ctor using 2 parameters -->
524                 <type fullname="System.Reflection.CustomAttributeTypedArgument">
525                         <method signature="System.Void .ctor(System.Type,System.Object)" />
526                 </type>
527                 <type fullname="System.Reflection.EventInfo" preserve="fields">
528                         <method name="AddEventFrame" />
529                         <method name="StaticAddEventAdapterFrame" />
530                 </type>
531                 
532                 <!-- reflection.c: mono_method_body_get_object -->
533                 <type fullname="System.Reflection.ExceptionHandlingClause" preserve="fields" />
534                 
535                 <!-- domain.c: mono_defaults.field_info_class -->
536                 <type fullname="System.Reflection.FieldInfo" preserve="fields" />
537                 
538                 <!-- reflection.c: mono_method_body_get_object -->
539                 <type fullname="System.Reflection.LocalVariableInfo" preserve="fields" />
540
541                 <!-- reflection.c: mono_method_body_get_object -->
542                 <type fullname="System.Reflection.MethodBody" preserve="fields" />
543                 <!-- domain.c: mono_defaults.method_info_class -->
544                 <type fullname="System.Reflection.MethodInfo" preserve="fields" />
545
546                 <type fullname="System.Reflection.Module" preserve="fields" />
547                 <type fullname="System.Reflection.MonoAssembly" preserve="fields" />
548                 <type fullname="System.Reflection.MonoModule" preserve="fields" />
549                 <type fullname="System.Reflection.MonoCMethod" preserve="fields" />
550                 <type fullname="System.Reflection.MonoEvent" preserve="fields" />
551                 <type fullname="System.Reflection.MonoEventInfo" preserve="fields" />
552                 <type fullname="System.Reflection.MonoField" preserve="fields" />
553                 
554                 <!-- reflection.c: mono_method_get_object uses both MonoGeneric[C]Method / will crash for ves_icall_Type_GetConstructors_internal -->
555                 <type fullname="System.Reflection.MonoGenericMethod" preserve="fields" />
556                 <type fullname="System.Reflection.MonoGenericCMethod" preserve="fields" />
557                 
558                 <type fullname="System.Reflection.MonoMethod" preserve="fields" />
559                 <type fullname="System.Reflection.MonoMethodInfo" preserve="fields" />
560                 <type fullname="System.Reflection.MonoPropertyInfo" preserve="fields" />
561                 
562                 <type fullname="System.Reflection.MonoProperty" preserve="fields">
563                         <method name="GetterAdapterFrame" />
564                         <method name="StaticGetterAdapterFrame" />
565                 </type>
566                 <type fullname="System.Reflection.ParameterInfo" preserve="fields" />
567                 <!-- reflection.c: ves_icall_get_parameter_info -->
568                 <type fullname="System.Reflection.MonoParameterInfo" preserve="fields" />
569
570                 <!-- object.c: mono_field_get_value_object and mono_runtime_invoke_array -->
571                 <type fullname="System.Reflection.Pointer" >
572                         <method name="Box" />
573                 </type>
574
575                 <type fullname="System.Reflection.PropertyInfo" preserve="fields" />
576                 
577                 <!-- exception.c (mono_get_exception_reflection_type_load) -->
578                 <type fullname="System.Reflection.ReflectionTypeLoadException">
579                         <method signature="System.Void .ctor(System.Type[],System.Exception[])" />
580                 </type>
581
582                 <!-- icall.c: ves_icall_InternalInvoke -->
583                 <type fullname="System.Reflection.TargetException">
584                         <!-- mono_exception_from_name_msg -->
585                         <method signature="System.Void .ctor(System.String)" />
586                 </type>
587         
588                 <!-- icall.c: ves_icall_InternalInvoke -->
589                 <type fullname="System.Reflection.TargetParameterCountException">
590                         <!-- mono_exception_from_name_msg -->
591                         <method signature="System.Void .ctor(System.String)" />
592                 </type>
593
594                 <type fullname="System.Reflection.Emit.AssemblyBuilder" preserve="fields" feature="sre">
595                         <method name="AddPermissionRequests" />
596                         <method name="AddModule" />
597                         <method name="DefineIconResource" />
598                         <method name="AddTypeForwarder" />
599                         <method name="EmbedResourceFile" />
600                 </type>
601                 <type fullname="System.Reflection.Emit.ConstructorBuilder" preserve="fields" feature="sre">
602                         <method name="RuntimeResolve" />
603                 </type>
604                 <type fullname="System.Reflection.Emit.CustomAttributeBuilder" preserve="fields" feature="sre" />
605                 <type fullname="System.Reflection.Emit.DynamicMethod" preserve="fields" />
606                 <type fullname="System.Reflection.Emit.EnumBuilder" preserve="fields" />
607                 <type fullname="System.Reflection.Emit.EventBuilder" preserve="fields" />
608                 <type fullname="System.Reflection.Emit.FieldBuilder" preserve="fields" >
609                         <method name="RuntimeResolve" />
610                 </type>
611                 <type fullname="System.Reflection.Emit.GenericTypeParameterBuilder" preserve="fields" feature="sre" >
612                         <method name="RuntimeResolve" />
613                 </type>
614                 <type fullname="System.Reflection.Emit.ILExceptionBlock" preserve="fields" feature="sre" />
615                 <type fullname="System.Reflection.Emit.ILExceptionInfo" preserve="fields" />
616                 <type fullname="System.Reflection.Emit.ILGenerator" preserve="fields">
617                         <method name="Mono_GetCurrentOffset" />
618                 </type>
619                 <type fullname="System.Reflection.Emit.LocalBuilder" preserve="fields" feature="sre" >
620                         <method name="Mono_GetLocalIndex" />
621                 </type>
622                 <type fullname="System.Reflection.Emit.MethodBuilder" preserve="fields" feature="sre" >
623                         <method name="RuntimeResolve" />
624                 </type>
625                 <type fullname="System.Reflection.Emit.ModuleBuilder" preserve="fields" feature="sre">
626                         <method name="Mono_GetGuid" />
627                         <method name="RuntimeResolve" />
628                 </type>
629                 <type fullname="System.Reflection.Emit.MonoResource" preserve="fields" feature="sre" />
630                 <type fullname="System.Reflection.Emit.MonoWin32Resource" preserve="fields" feature="sre" />
631                 <type fullname="System.Reflection.Emit.ParameterBuilder" preserve="fields" feature="sre" />
632                 <type fullname="System.Reflection.Emit.PropertyBuilder" preserve="fields" feature="sre" />
633                 <type fullname="System.Reflection.Emit.SignatureHelper" preserve="fields" feature="sre" />
634                 <type fullname="System.Reflection.Emit.TypeBuilder" preserve="fields" feature="sre">
635                         <method name="SetCharSet" />
636                         <!-- reflection.c mono_reflection_call_is_assignable_to () -->
637                         <method name="IsAssignableTo" />
638                 </type>
639                 <type fullname="System.Reflection.Emit.UnmanagedMarshal" preserve="fields" feature="sre" >
640                         <method name="DefineCustom" />
641                         <method name="DefineLPArrayInternal" />
642                 </type>
643                 <type fullname="System.Reflection.Emit.TypeBuilderInstantiation" preserve="fields" feature="sre" >
644                         <method name="RuntimeResolve" />
645                 </type>
646                 <type fullname="System.Reflection.Emit.ArrayType" preserve="fields" feature="sre" >
647                         <method name="RuntimeResolve" />
648                 </type>
649                 <type fullname="System.Reflection.Emit.ByRefType" preserve="fields" feature="sre" >
650                         <method name="RuntimeResolve" />
651                 </type>
652                 <type fullname="System.Reflection.Emit.PointerType" preserve="fields" feature="sre" >
653                         <method name="RuntimeResolve" />
654                 </type>
655                 <type fullname="System.Reflection.Emit.FieldOnTypeBuilderInst" preserve="fields" feature="sre" >
656                         <method name="RuntimeResolve" />
657                 </type>
658                 <type fullname="System.Reflection.Emit.MethodOnTypeBuilderInst" preserve="fields" feature="sre" >
659                         <method name="RuntimeResolve" />
660                 </type>
661                 <type fullname="System.Reflection.Emit.ConstructorOnTypeBuilderInst" preserve="fields" feature="sre" >
662                         <method name="RuntimeResolve" />
663                 </type>
664
665                 <!-- domain.c: mono_defaults.internals_visible_class -->
666                 <type fullname="System.Runtime.CompilerServices.InternalsVisibleToAttribute" />
667
668                 <!-- exception.c: mono_get_exception_runtime_wrapped () -->
669                 <type fullname="System.Runtime.CompilerServices.RuntimeWrappedException">
670                         <method signature="System.Void .ctor(System.Object)" />
671                 </type>
672
673                 <!-- icall.c | object-internal.h: MonoReflectionDllImportAttribute structure -->
674                 <type fullname="System.Runtime.InteropServices.DllImportAttribute" preserve="fields"/> 
675                 <!-- marshal.c: emit_marshal_custom (DISABLE_JIT is not defined for the AOT compiler, only the ARM runtimes) -->
676                 <type fullname="System.Runtime.InteropServices.ICustomMarshaler" />
677
678                 <!-- domain.c: mono_defaults.marshal_class -->
679                 <type fullname="System.Runtime.InteropServices.Marshal" preserve="fields" >
680                         <!-- marshal.c (mono_marshal_get_struct_to_ptr) -->
681                         <method name="StructureToPtr" />
682                 </type>
683                 
684                 <!-- domain.c: mono_defaults.safehandle_class -->
685                 <type fullname="System.Runtime.InteropServices.SafeHandle" preserve="fields">
686                         <!-- marshal.c (init_safe_handle) -->
687                         <method name="DangerousAddRef" />
688                         <method name="DangerousRelease" />
689                 </type>
690                 
691                 <!-- object-internals.h: defines MonoReflectionUnmanagedFunctionPointerAttribute, marshal.c: use it -->
692                 <type fullname="System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute" preserve="fields"/>
693
694                 <!-- marshal.c: mono_mb_emit_exception_marshal_directive -->
695                 <type fullname="System.Runtime.InteropServices.MarshalDirectiveException">
696                         <method signature="System.Void .ctor(System.String)" />
697                 </type>
698
699                 <!-- appdomain.c: mono_context_init -->
700                 <!-- marshal.c: mono_remoting_marshal_init / removed with DISABLE_REMOTING -->
701                 <type fullname="System.Runtime.Remoting.Contexts.Context" preserve="fields" feature="remoting" >
702                         <method name="get_NeedsContextSink" />
703                 </type>
704
705                 <!-- domain.c: mono_defaults.iremotingtypeinfo_class / removed with DISABLE_REMOTING -->
706                 <type fullname="System.Runtime.Remoting.IRemotingTypeInfo" feature="remoting">
707                         <method name="CanCastTo" />
708                 </type>
709
710                 <!-- domain.c: mono_defaults.asyncresult_class (Stubify can't be applied on this type) -->
711                 <!-- object.c MONO_OBJECT_SETREF in mono_async_result_new -->
712                 <!-- threadpool.c: MONO_OBJECT_SETREF in create_simple_asyncresult -->
713                 <type fullname="System.Runtime.Remoting.Messaging.AsyncResult" preserve="fields" />
714
715                 <!-- marshal.c: mono_remoting_marshal_init / removed with DISABLE_REMOTING -->
716                 <type fullname="System.Runtime.Remoting.Messaging.CallContext" feature="remoting" >
717                         <method name="SetCurrentCallContext" />
718                 </type>
719                 <type fullname="System.Runtime.Remoting.Messaging.MonoMethodMessage" preserve="fields" feature="remoting" >
720                         <method name="InitMessage" />
721                 </type>
722                 <type fullname="System.Runtime.Remoting.Proxies.RealProxy" preserve="fields" feature="remoting" >
723                         <method name="PrivateInvoke" />
724                         <method name="GetAppDomainTarget" />
725                 </type>
726                 <type fullname="System.Runtime.Remoting.Proxies.TransparentProxy" preserve="fields" feature="remoting" >
727                         <method name="LoadRemoteFieldNew" />
728                         <method name="StoreRemoteField" />
729                 </type>
730                 <type fullname="System.Runtime.Remoting.RemotingServices" feature="remoting" >
731                         <method name="SerializeCallData" />
732                         <method name="DeserializeCallData" />
733                         <method name="SerializeExceptionData" />
734                 </type>
735
736                 <!-- domain.c: mono_defaults.mono_method_message_class -->
737                 <type fullname="System.Runtime.Remoting.Messaging.MonoMethodMessage" preserve="fields">
738                         <!-- object.c: mono_message_init -->
739                         <method name="InitMessage" />
740                 </type>         
741
742                 <!-- domain.c: mono_defaults.real_proxy_class / removed with DISABLE_REMOTING -->
743                 <type fullname="System.Runtime.Remoting.Proxies.RealProxy" feature="remoting" />
744
745                 <!-- domain.c: mono_defaults.transparent_proxy_class / removed with DISABLE_REMOTING -->
746                 <type fullname="System.Runtime.Remoting.Proxies.TransparentProxy" feature="remoting" />
747
748                 <!-- exception.c (mono_get_exception_serialization) -->
749                 <type fullname="System.Runtime.Serialization.SerializationException">
750                         <!-- mono_exception_from_name_msg -->
751                         <method signature="System.Void .ctor(System.String)" />
752                 </type>
753
754                 <!-- domain.c: mono_defaults.runtimesecurityframe_class -->             
755                 <type fullname="System.Security.RuntimeSecurityFrame" preserve="fields" />
756                 
757                 <!-- domain.c: mono_defaults.executioncontext_class -->
758                 <type fullname="System.Threading.ExecutionContext">
759                         <!-- security-manager.c: mono_get_context_capture_method (can likely be removed) -->
760                         <method name="Capture" />
761                 </type>
762
763                 <!-- aot-runtime.c: mono_aot_get_method -->
764                 <type fullname="System.Threading.Interlocked">
765                         <method name="CompareExchange" />
766                         <method name="Exchange" />
767                 </type>
768                 
769                 <!-- domain.c: mono_defaults.monitor_class -->
770                 <!-- monitor.c / method-to-ir.c: Enter and Exit are only string comparison (safe to link) -->
771                 <type fullname="System.Threading.Monitor">
772                         <!-- marshal.c: mono_marshal_get_synchronized_wrapper-->
773                         <method name="Enter" />
774                         <method name="Exit" />
775                 </type>
776
777                 <!-- domain.c: mono_defaults.manualresetevent_class -->
778                 <type fullname="System.Threading.ManualResetEvent" >
779                         <!-- runtime access fields and setter from inherited WaitHandle -->
780                         <method signature="System.Void .ctor(System.Boolean)" />
781                 </type>
782
783                 <!-- exception.c (mono_get_exception_synchronization_lock) -->
784                 <type fullname="System.Threading.SynchronizationLockException">
785                         <!-- mono_exception_from_name_msg -->
786                         <method signature="System.Void .ctor(System.String)" />
787                 </type>
788
789                 <!-- domain.c: mono_defaults.thread_class -->
790                 <type fullname="System.Threading.Thread" preserve="fields">
791                         <method name="get_CurrentContext" />
792                 </type>
793                 
794                 <!-- domain.c: mono_defaults.internal_thread_class -->
795                 <type fullname="System.Threading.InternalThread" preserve="fields" />
796                 
797                 <!-- domain.c: mono_defaults.threadabortexception_class -->
798                 <!-- exception.c (mono_get_exception_thread_abort) -->
799                 <type fullname="System.Threading.ThreadAbortException">
800                         <!-- mono_exception_from_name -->
801                         <method signature="System.Void .ctor()" />
802                 </type>
803                 
804                 <!-- exception.c (ThreadInterruptedException) -->
805                 <type fullname="System.Threading.ThreadInterruptedException">
806                         <!-- mono_exception_from_name -->
807                         <method signature="System.Void .ctor()" />
808                 </type>
809
810                 <!-- exception.c (mono_get_exception_thread_abort) -->
811                 <type fullname="System.Threading.ThreadStateException">
812                         <!-- mono_exception_from_name_msg -->
813                         <method signature="System.Void .ctor(System.String)" />
814                 </type>
815                 
816                 <!-- object-internals.h: defines MonoWaitHandle, threadpool.c: gets the handle from the structure -->
817                 <type fullname="System.Threading.WaitHandle" preserve="fields">
818                         <!-- object.c: mono_wait_handle_new -->
819                         <method name="set_Handle" />
820                         <!-- object.c: mono_wait_handle_get_handle -->
821                         <field name="safe_wait_handle" />
822                 </type>
823
824                 <!-- threadpool-ms.c (worker_thread) -->
825                 <type fullname="System.Threading._ThreadPoolWaitCallback">
826                   <method name="PerformWaitCallback"/>
827                 </type>
828
829                 <!-- domain.c: mono_defaults.stringbuilder_class -->
830                 <type fullname="System.Text.StringBuilder" preserve="fields" />
831
832                 <!-- cominterop.c -->
833                 <type fullname="Mono.Interop.ComInteropProxy" feature="com" />
834                 <type fullname="Mono.Interop.IDispatch" feature="com" />
835                 <type fullname="Mono.Interop.IUnknown" feature="com"/>
836
837                 <!--
838                 Many applications rely on Mono.Runtime to exist in order to detect
839                 whether they are running on Mono or .NET. Thus we always preserve it
840                 to allow such detection logic to work, even if the class is not used
841                 directly.
842                 -->
843                 <type fullname="Mono.Runtime" />
844
845                 <!-- marshal.c (mono_marshal_get_native_wrapper) -->
846                 <type fullname="Mono.RuntimeStructs/HandleStackMark" />
847                 <!-- marshal.c (mono_marshal_get_native_wrapper) -->
848                 <type fullname="Mono.RuntimeStructs/MonoError" />
849         </assembly>
850 </linker>