[corlib] Enable machine.config dependant version of CryptoConfig for net_4_x profile...
[mono-project.git] / mcs / class / corlib / LinkerDescriptor / mscorlib.xml
blob1b490e429b18f15cff9b0a50bb571202927943f2
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>
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                 -->
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>
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>
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" />
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" />
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"/>
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                         <method name="FixRemotingException" feature="remoting" />
175                 </type>
176                 
177                 <!-- exception.c (mono_get_exception_execution_engine) -->
178                 <type fullname="System.ExecutionEngineException">
179                         <!-- mono_exception_from_name_msg -->
180                         <method signature="System.Void .ctor(System.String)" />
181                 </type>
183                 <type fullname="System.FieldAccessException">
184                         <!-- exception.c: mono_get_exception_field_access / mono_exception_from_name -->
185                         <method signature="System.Void .ctor()" />
186                         <!-- exception.c: mono_get_exception_field_access_msg / mono_exception_from_name_msg -->
187                         <!-- mini.c (mono_jit_compiler_method_inner) mono_exception_from_name_msg -->
188                         <method signature="System.Void .ctor(System.String)" />
189                 </type>
191                 <type fullname="System.FormatException">
192                         <!-- icall.c (base64_to_byte_array) mono_exception_from_name_msg -->
193                         <method signature="System.Void .ctor(System.String)" />
194                 </type>
195                 
196                 <!-- exception.c: mono_get_exception_index_out_of_range - used by many in icall.c and in socket-io.c -->
197                 <type fullname="System.IndexOutOfRangeException">
198                         <!-- mono_exception_from_name_msg -->
199                         <method signature="System.Void .ctor(System.String)" />
200                 </type>
201                 
202                 <!-- domain.c: mono_defaults.int16_class -->
203                 <type fullname="System.Int16" preserve="fields" />
204                 
205                 <!-- domain.c: mono_defaults.int32_class -->
206                 <type fullname="System.Int32" preserve="fields" />
207                 
208                 <!-- domain.c: mono_defaults.int64_class -->
209                 <type fullname="System.Int64" preserve="fields" />
210                 
211                 <!-- domain.c: mono_defaults.int_class -->
212                 <type fullname="System.IntPtr" preserve="fields" />
213                 
214                 <!-- exception.c (mono_get_exception_invalid_cast) -->
215                 <type fullname="System.InvalidCastException">
216                         <!-- mono_exception_from_name -->
217                         <method signature="System.Void .ctor()" />
218                 </type>
219                 
220                 <!-- marshal.c: emit several times using mono_mb_emit_exception_full -->
221                 <!-- exception.c (mono_get_exception_invalid_operation) -->
222                 <type fullname="System.InvalidOperationException">
223                         <!-- mono_exception_from_name_msg -->
224                         <method signature="System.Void .ctor(System.String)" />
225                 </type>
226                 
227                 <!-- mini.c: mono_jit_compile_method_inner (looks like one case is JITted, AOT too) -->
228                 <type fullname="System.InvalidProgramException">
229                         <!-- mono_exception_from_name_msg -->
230                         <method signature="System.Void .ctor(System.String)" />
231                 </type>
233                 <!-- reflection.c mono_get_reflection_missing_object -->
234                 <type fullname="System.Missing" preserve="fields" />
236                 <type fullname="System.MarshalByRefObject" preserve="fields" feature="remoting" />
238                 <type fullname="System.MethodAccessException">
239                         <!-- exception.c: mono_get_exception_method_access / mono_exception_from_name -->
240                         <method signature="System.Void .ctor()" />
241                         <!-- exception.c: mono_get_exception_method_access_msg / mono_exception_from_name_msg -->
242                         <!-- mini.c (mono_jit_compiler_method_inner) mono_exception_from_name_msg -->
243                         <method signature="System.Void .ctor(System.String)" />
244                 </type>
245                 
246                 <!-- mini.c (mono_jit_compiler_method_inner) / mono-error.c -->
247                 <type fullname="System.MissingFieldException">
248                         <!-- mono_exception_from_name_msg -->
249                         <method signature="System.Void .ctor(System.String)" />
250                 </type>
251         
252                 <type fullname="System.MissingMethodException">
253                         <!-- mini.c (mono_jit_compiler_method_inner) mono_exception_from_name_msg -->
254                         <method signature="System.Void .ctor(System.String)" />
255                 </type>
256                 
257                 <!-- threadpool.c: mono_thread_pool_init (assert) -->
258                 <type fullname="System.MonoAsyncCall" preserve="fields" />
259                 <!-- mono-mlist.c (managed list): used in threadpool.c and gc.c -->
260                 <type fullname="System.MonoListItem" preserve="fields" />
261                 
262                 <!-- domain.c: mono_defaults.type_class -->
263                 <type fullname="System.MonoType" preserve="fields" />
264                 
265                 <!-- domain.c: mono_defaults.multicastdelegate_class -->
266                 <type fullname="System.MulticastDelegate" preserve="fields" />
267                 
268                 <!-- exception.c (mono_get_exception_not_implemented) -->
269                 <type fullname="System.NotImplementedException">
270                         <!-- mono_get_exception_not_implemented -->
271                         <method signature="System.Void .ctor(System.String)" />
272                 </type>
274                 <!-- exception.c (mono_get_exception_not_supported) -->
275                 <type fullname="System.NotSupportedException">
276                         <!-- mono_get_exception_not_implemented -->
277                         <method signature="System.Void .ctor(System.String)" />
278                 </type>
279         
280                 <!-- appdomain.c (create_domain_objects) domain->null_reference_ex -->
281                 <!-- exception.c (mono_get_exception_null_reference) -->
282                 <type fullname="System.NullReferenceException">
283                         <!-- exception.c: mono_exception_from_name -->
284                         <method signature="System.Void .ctor()" />
285                         <!-- appdomain.c: mono_exception_from_name_two_strings (only one string in the signature since NULL is used as the 2nd parameter) -->
286                         <method signature="System.Void .ctor(System.String)" />
287                 </type>
288                 
289                 <!-- domain.c: mono_defaults.nullable_class -->         
290                 <type fullname="System.Nullable`1" preserve="fields">
291                         <!-- method-to-ir.c (handle_box) -->
292                         <method name="Box" />
293                         <!-- method-to-ir.c (handle_unbox_nullable) -->
294                         <method name="Unbox" />
295                         <!-- method-to-ir.c (handle_unbox_nullable) -->
296                         <method name="UnboxExact" />
298                 </type>
299                 
300                 <!-- domain.c: mono_defaults.object_class -->
301                 <type fullname="System.Object">
302                         <!-- class.c: initialize_object_slots -->
303                         <method name="Finalize" />
304                         <method name="GetHashCode" />
305                         <!-- needed for debugging -->
306                         <method name="obj_address" />
307                         <!-- TransparentProxy.cs, RemotingServices.cs -->
308                         <method name="FieldGetter" feature="remoting" />
309                         <method name="FieldSetter" feature="remoting" />
310                 </type>
311                 
312                 <!-- appdomain.c (create_domain_objects) domain->out_of_memory_ex -->
313                 <type fullname="System.OutOfMemoryException">
314                         <!-- mono_exception_from_name_two_strings (only one string in the signature since NULL is used as the 2nd parameter) -->
315                         <method signature="System.Void .ctor(System.String)" />
316                         <!-- exception.c: mono_get_exception_out_of_memory / mono_exception_from_name -->
317                         <method signature="System.Void .ctor()" />
318                 </type>
319                 
320                 <!-- exception.c (mono_get_exception_overflow) -->
321                 <type fullname="System.OverflowException">
322                         <!-- mono_exception_from_name -->
323                         <method signature="System.Void .ctor()" />
324                 </type>
326                 <!-- reflection.c: mono_get_reflection_missing_object -->
327                 <type fullname="System.Reflection.Missing" preserve="field" />
329                 <!-- domain.c: mono_defaults.argumenthandle_class -->           
330                 <type fullname="System.RuntimeArgumentHandle" preserve="fields" />
331                 
332                 <!-- domain.c: mono_defaults.typefield_class -->
333                 <type fullname="System.RuntimeFieldHandle" preserve="fields" />
334                 
335                 <!-- domain.c: mono_defaults.methodhandle_class -->
336                 <type fullname="System.RuntimeMethodHandle" preserve="fields" />
337                 
338                 <!-- domain.c: mono_defaults.typehandle_class -->
339                 <type fullname="System.RuntimeTypeHandle" preserve="fields" />
340                 <!-- domain.c: mono_defaults.sbyte_class -->
341                 <type fullname="System.SByte" preserve="fields" />
342                 
343                 <!-- domain.c: mono_defaults.single_class -->
344                 <type fullname="System.Single" preserve="fields" />
345                 
346                 <!-- appdomain.c (create_domain_objects) domain->stack_overflow_ex -->
347                 <type fullname="System.StackOverflowException">
348                         <!-- mono_exception_from_name_two_strings (only one string in the signature since NULL is used as the 2nd parameter) -->
349                         <method signature="System.Void .ctor(System.String)" />
350                         <!-- exception.c: mono_get_exception_stack_overflow / mono_exception_from_name -->
351                         <method signature="System.Void .ctor()" />
352                 </type>
353                 
354                 <!-- object.c: mono_runtime_exec_main -->
355                 <type fullname="System.STAThreadAttribute" />
356                 
357                 <!-- domain.c: mono_defaults.string_class -->
358                 <type fullname="System.String" preserve="fields">
359                         <!-- marshal.c mono_marshal_get_native_wrapper -->
360                         <method name="CreateString" />
361                         <!-- method-to-ir.c: mini_redirect_call -->
362                         <method name="InternalAllocateStr" />
363                         <!-- method-to-it.c: mini_emit_initobj -->
364                         <method name="memset" />
365                         <!-- mini-generic-sharing.c: class_type_info 
366                                 All patterns bellow
367                         -->
368                         <method name="bzero" />
369                         <method name="bzero_aligned_1" />
370                         <method name="bzero_aligned_2" />
371                         <method name="bzero_aligned_4" />
372                         <method name="bzero_aligned_8" />
373                         <method name="memcpy" />
374                         <method name="memcpy_aligned_1" />
375                         <method name="memcpy_aligned_2" />
376                         <method name="memcpy_aligned_4" />
377                         <method name="memcpy_aligned_8" />
378                 </type>
380                 <!-- socket-io.c: created/raised several time -->
381                 <type fullname="System.SystemException">
382                         <!-- mono_exception_from_nameg -->
383                         <method signature="System.Void .ctor()" />
384                 </type>
385                 
386                 <!-- domain.c: mono_defaults.systemtype_class -->
387                 <type fullname="System.Type" preserve="fields">
388                         <!-- marshal.c (mono_marshal_get_synchronized_wrapper) -->
389                         <method name="GetTypeFromHandle" />
390                 </type>
391                 
392                 <!-- exception.c (mono_get_exception_type_initialization) -->
393                 <type fullname="System.TypeInitializationException">
394                         <!-- iterates to find the (only) 2 paramaters .ctor -->
395                         <method signature="System.Void .ctor(System.String,System.Exception)" />
396                 </type>
398                 <!-- exception.c (mono_get_exception_type_load) -->
399                 <type fullname="System.TypeLoadException">
400                         <!-- mini.c (mono_jit_compiler_method_inner) mono_exception_from_name_msg -->
401                         <method signature="System.Void .ctor(System.String)" />
402                         <!-- mono_exception_from_name_two_strings -->
403                         <method signature="System.Void .ctor(System.String,System.String)" />
404                 </type>
405                 
406                 <!-- domain.c: mono_defaults.typed_reference_class -->          
407                 <type fullname="System.TypedReference" preserve="fields" />
408                 
409                 <!-- domain.c: mono_defaults.uint16_class -->
410                 <type fullname="System.UInt16" preserve="fields" />
411                 
412                 <!-- domain.c: mono_defaults.uint32_class -->
413                 <type fullname="System.UInt32" preserve="fields" />
414                 
415                 <!-- domain.c: mono_defaults.uint64_class -->
416                 <type fullname="System.UInt64" preserve="fields" />
417                 
418                 <!-- domain.c: mono_defaults.uint_class -->
419                 <type fullname="System.UIntPtr" preserve="fields" />
420                 
421                 <!-- object.c: create_unhandled_exception_eventargs (assert) -->
422                 <type fullname="System.UnhandledExceptionEventArgs">
423                         <method signature="System.Void .ctor(System.Object,System.Boolean)" />
424                 </type>
425                 
426                 <!-- class.c: make_generic_param_class -->
427                 <type fullname="System.ValueType" preserve="fields" />
429                 <!-- comiterop.c -->
430                 <type fullname="System.Variant" preserve="fields" feature="com">
431                         <method name="Clear" />
432                 </type>
434                 <!-- icall.c: create_version is used by
435                         * ves_icall_System_Reflection_Assembly_GetReferencedAssemblies
436                         * fill_reflection_assembly_name
437                                 * ves_icall_System_Reflection_Assembly_FillName
438                                 * ves_icall_System_Reflection_Assembly_InternalGetAssemblyName
439                                 * ves_icall_System_Reflection_AssemblyName_ParseName
440                         -->
441                 <type fullname="System.Version">
442                         <method signature="System.Void .ctor(System.Int32,System.Int32,System.Int32,System.Int32)" />
443                 </type>
444                 
445                 <!-- domain.c: mono_defaults.void_class -->
446                 <type fullname="System.Void" preserve="fields" />
448                 <!-- comiterop.c -->
449                 <type fullname="System.__ComObject" feature="com" />
451                 <!-- class.c: generic_array_methods -->
452                 <type fullname="System.Collections.Generic.ICollection`1" />
453                 <type fullname="System.Collections.Generic.IEnumerable`1" />
454                 <type fullname="System.Collections.Generic.IReadOnlyList`1" />
455                 <type fullname="System.Collections.Generic.IReadOnlyCollection`1" />
456                 
457                 <!-- domain.c: mono_defaults.generic_ilist_class -->
458                 <type fullname="System.Collections.Generic.IList`1" />
459                 
460                 <!-- aot-compiler.c: add_generic_instances and add_generic_class_with_depth -->
461                 <type fullname="System.Collections.Generic.GenericEqualityComparer`1">
462                         <method name=".ctor" />
463                 </type>
464                 
465                 <!-- aot-compiler.c: add_generic_instances and add_generic_class_with_depth -->
466                 <type fullname="System.Collections.Generic.GenericComparer`1">
467                         <method name=".ctor" />
468                 </type>
470                 <!-- console-unix.c: do_console_cancel_event -->
471                 <type fullname="System.Console">
472                         <method name="DoConsoleCancelEventInBackground" />
473                 </type>
475                 <!-- icalls - but (at least parts of them) are used thru interfaces at runtime and cannot be linked out -->
476                 <type fullname="System.Globalization.DateTimeFormatInfo" preserve="fields" />
477                 <type fullname="System.Globalization.CompareInfo" preserve="fields" />
478                 <type fullname="System.Globalization.CultureInfo" preserve="fields">
479                         <!-- icall.c: fill_reflection_assembly_name (assert) and ves_icall_System_Reflection_Assembly_GetReferencedAssemblies (assert) -->
480                         <method name="CreateCulture" />
481                 </type>
482                 <type fullname="System.Globalization.NumberFormatInfo" preserve="fields" />
483                 <type fullname="System.Globalization.RegionInfo" preserve="fields" />
484                 <type fullname="System.Globalization.SortKey" preserve="fields" />
486                 <type fullname="System.IO.FileNotFoundException">
487                         <!-- mini.c (mono_jit_compiler_method_inner) mono_exception_from_name_msg -->
488                         <method signature="System.Void .ctor(System.String)" />
489                         <!-- exception.c (mono_get_exception_file_not_found and mono_get_exception_file_not_found) -->
490                         <!-- mono_exception_from_name_two_strings -->
491                         <method signature="System.Void .ctor(System.String,System.String)" />
492                 </type>
494                 <!-- exception.c (mono_get_exception_io) -->
495                 <type fullname="System.IO.IOException">
496                         <!-- mono_exception_from_name_msg -->
497                         <method signature="System.Void .ctor(System.String)" />
498                 </type>
500                 <!-- fileio.h: shared structure between the managed and unmanaged worlds -->
501                 <type fullname="System.IO.MonoIOStat" preserve="fields" />
502                 
503                 <!-- domain.c: mono_defaults.math_class
504                         method-to-ir.c: empty branch (wrt Min/Max optimization)
505                         mini-[x86|amd64].c needs the type but then only check for names
506                         note: there's no fields (static type) but that will mark the type itself -->
507                 <type fullname="System.Math" preserve="fields" />
509                 <type fullname="System.Reflection.MonoAssembly">
510                         <method name=".ctor" />
511                 </type>
512                 <type fullname="System.Reflection.MonoModule">
513                         <method name=".ctor" />
514                 </type>
516                 <!-- appdomain.c: ves_icall_System_AppDomain_GetAssemblies -->
517                 <type fullname="System.Reflection.Assembly" preserve="fields"/>
519                 <type fullname="System.Reflection.AssemblyName" preserve="fields" />
520                 <type fullname="System.Reflection.ConstructorInfo" preserve="fields" />
522                 <!-- domain.c: mono_defaults.customattribute_data_class -->
523                 <type fullname="System.Reflection.CustomAttributeData" preserve="fields">
524                         <!-- custom-attrs.c: create_custom_attr_data - create an instance with the ctor using 4 arguments -->
525                         <method signature="System.Void .ctor(System.Reflection.ConstructorInfo,System.Reflection.Assembly,System.IntPtr,System.UInt32)" />
526                 </type>
528                 <!-- reflection.c: create_cattr_named_arg - create an instance with the ctor using 2 parameters -->
529                 <type fullname="System.Reflection.CustomAttributeNamedArgument">
530                         <method signature="System.Void .ctor(System.Reflection.MemberInfo,System.Object)" />
531                 </type>
532                 
533                 <!-- reflection.c: create_cattr_typed_arg - create an instance with the ctor using 2 parameters -->
534                 <type fullname="System.Reflection.CustomAttributeTypedArgument">
535                         <method signature="System.Void .ctor(System.Type,System.Object)" />
536                 </type>
537                 <type fullname="System.Reflection.EventInfo" preserve="fields">
538                         <method name="AddEventFrame" />
539                         <method name="StaticAddEventAdapterFrame" />
540                 </type>
541                 
542                 <!-- reflection.c: mono_method_body_get_object -->
543                 <type fullname="System.Reflection.ExceptionHandlingClause" preserve="fields" />
544                 
545                 <!-- domain.c: mono_defaults.field_info_class -->
546                 <type fullname="System.Reflection.FieldInfo" preserve="fields" />
547                 
548                 <!-- reflection.c: mono_method_body_get_object -->
549                 <type fullname="System.Reflection.LocalVariableInfo" preserve="fields" />
551                 <!-- reflection.c: mono_method_body_get_object -->
552                 <type fullname="System.Reflection.MethodBody" preserve="fields" />
553                 <!-- domain.c: mono_defaults.method_info_class -->
554                 <type fullname="System.Reflection.MethodInfo" preserve="fields" />
556                 <type fullname="System.Reflection.Module" preserve="fields" />
557                 <type fullname="System.Reflection.MonoAssembly" preserve="fields" />
558                 <type fullname="System.Reflection.MonoModule" preserve="fields" />
559                 <type fullname="System.Reflection.MonoCMethod" preserve="fields" />
560                 <type fullname="System.Reflection.MonoEvent" preserve="fields" />
561                 <type fullname="System.Reflection.MonoEventInfo" preserve="fields" />
562                 <type fullname="System.Reflection.MonoField" preserve="fields" />
563                 
564                 <!-- reflection.c: mono_method_get_object uses both MonoGeneric[C]Method / will crash for ves_icall_Type_GetConstructors_internal -->
565                 <type fullname="System.Reflection.MonoGenericMethod" preserve="fields" />
566                 <type fullname="System.Reflection.MonoGenericCMethod" preserve="fields" />
567                 
568                 <type fullname="System.Reflection.MonoMethod" preserve="fields" />
569                 <type fullname="System.Reflection.MonoMethodInfo" preserve="fields" />
570                 <type fullname="System.Reflection.MonoPropertyInfo" preserve="fields" />
571                 
572                 <type fullname="System.Reflection.MonoProperty" preserve="fields">
573                         <method name="GetterAdapterFrame" />
574                         <method name="StaticGetterAdapterFrame" />
575                 </type>
576                 <type fullname="System.Reflection.ParameterInfo" preserve="fields" />
577                 <!-- reflection.c: ves_icall_get_parameter_info -->
578                 <type fullname="System.Reflection.MonoParameterInfo" preserve="fields" />
580                 <!-- object.c: mono_field_get_value_object and mono_runtime_invoke_array -->
581                 <type fullname="System.Reflection.Pointer" >
582                         <method name="Box" />
583                 </type>
585                 <type fullname="System.Reflection.PropertyInfo" preserve="fields" />
586                 
587                 <!-- exception.c (mono_get_exception_reflection_type_load) -->
588                 <type fullname="System.Reflection.ReflectionTypeLoadException">
589                         <method signature="System.Void .ctor(System.Type[],System.Exception[])" />
590                 </type>
592                 <!-- icall.c: ves_icall_InternalInvoke -->
593                 <type fullname="System.Reflection.TargetException">
594                         <!-- mono_exception_from_name_msg -->
595                         <method signature="System.Void .ctor(System.String)" />
596                 </type>
597         
598                 <!-- icall.c: ves_icall_InternalInvoke -->
599                 <type fullname="System.Reflection.TargetParameterCountException">
600                         <!-- mono_exception_from_name_msg -->
601                         <method signature="System.Void .ctor(System.String)" />
602                 </type>
604                 <type fullname="System.Reflection.Emit.AssemblyBuilder" preserve="fields" feature="sre">
605                         <method name="AddPermissionRequests" />
606                         <method name="AddModule" />
607                         <method name="DefineIconResource" />
608                         <method name="AddTypeForwarder" />
609                         <method name="EmbedResourceFile" />
610                 </type>
611                 <type fullname="System.Reflection.Emit.ConstructorBuilder" preserve="fields" feature="sre">
612                         <method name="RuntimeResolve" />
613                 </type>
614                 <type fullname="System.Reflection.Emit.CustomAttributeBuilder" preserve="fields" feature="sre" />
615                 <type fullname="System.Reflection.Emit.DynamicMethod" preserve="fields" />
616                 <type fullname="System.Reflection.Emit.EnumBuilder" preserve="fields" />
617                 <type fullname="System.Reflection.Emit.EventBuilder" preserve="fields" />
618                 <type fullname="System.Reflection.Emit.FieldBuilder" preserve="fields" >
619                         <method name="RuntimeResolve" />
620                 </type>
621                 <type fullname="System.Reflection.Emit.GenericTypeParameterBuilder" preserve="fields" feature="sre" >
622                         <method name="RuntimeResolve" />
623                 </type>
624                 <type fullname="System.Reflection.Emit.ILExceptionBlock" preserve="fields" feature="sre" />
625                 <type fullname="System.Reflection.Emit.ILExceptionInfo" preserve="fields" />
626                 <type fullname="System.Reflection.Emit.ILGenerator" preserve="fields">
627                         <method name="Mono_GetCurrentOffset" />
628                 </type>
629                 <type fullname="System.Reflection.Emit.LocalBuilder" preserve="fields" feature="sre" >
630                         <method name="Mono_GetLocalIndex" />
631                 </type>
632                 <type fullname="System.Reflection.Emit.MethodBuilder" preserve="fields" feature="sre" >
633                         <method name="RuntimeResolve" />
634                 </type>
635                 <type fullname="System.Reflection.Emit.ModuleBuilder" preserve="fields" feature="sre">
636                         <method name="Mono_GetGuid" />
637                         <method name="RuntimeResolve" />
638                 </type>
639                 <type fullname="System.Reflection.Emit.MonoResource" preserve="fields" feature="sre" />
640                 <type fullname="System.Reflection.Emit.MonoWin32Resource" preserve="fields" feature="sre" />
641                 <type fullname="System.Reflection.Emit.ParameterBuilder" preserve="fields" feature="sre" />
642                 <type fullname="System.Reflection.Emit.PropertyBuilder" preserve="fields" feature="sre" />
643                 <type fullname="System.Reflection.Emit.SignatureHelper" preserve="fields" feature="sre" />
644                 <type fullname="System.Reflection.Emit.TypeBuilder" preserve="fields" feature="sre">
645                         <method name="SetCharSet" />
646                         <!-- reflection.c mono_reflection_call_is_assignable_to () -->
647                         <method name="IsAssignableTo" />
648                 </type>
649                 <type fullname="System.Reflection.Emit.UnmanagedMarshal" preserve="fields" feature="sre" >
650                         <method name="DefineCustom" />
651                         <method name="DefineLPArrayInternal" />
652                 </type>
653                 <type fullname="System.Reflection.Emit.TypeBuilderInstantiation" preserve="fields" feature="sre" >
654                         <method name="RuntimeResolve" />
655                 </type>
656                 <type fullname="System.Reflection.Emit.ArrayType" preserve="fields" feature="sre" >
657                         <method name="RuntimeResolve" />
658                 </type>
659                 <type fullname="System.Reflection.Emit.ByRefType" preserve="fields" feature="sre" >
660                         <method name="RuntimeResolve" />
661                 </type>
662                 <type fullname="System.Reflection.Emit.PointerType" preserve="fields" feature="sre" >
663                         <method name="RuntimeResolve" />
664                 </type>
665                 <type fullname="System.Reflection.Emit.FieldOnTypeBuilderInst" preserve="fields" feature="sre" >
666                         <method name="RuntimeResolve" />
667                 </type>
668                 <type fullname="System.Reflection.Emit.MethodOnTypeBuilderInst" preserve="fields" feature="sre" >
669                         <method name="RuntimeResolve" />
670                 </type>
671                 <type fullname="System.Reflection.Emit.ConstructorOnTypeBuilderInst" preserve="fields" feature="sre" >
672                         <method name="RuntimeResolve" />
673                 </type>
675                 <!-- domain.c: mono_defaults.internals_visible_class -->
676                 <type fullname="System.Runtime.CompilerServices.InternalsVisibleToAttribute" />
678                 <!-- exception.c: mono_get_exception_runtime_wrapped () -->
679                 <type fullname="System.Runtime.CompilerServices.RuntimeWrappedException">
680                         <method signature="System.Void .ctor(System.Object)" />
681                 </type>
683                 <!-- icall.c | object-internal.h: MonoReflectionDllImportAttribute structure -->
684                 <type fullname="System.Runtime.InteropServices.DllImportAttribute" preserve="fields"/> 
685                 <!-- marshal.c: emit_marshal_custom (DISABLE_JIT is not defined for the AOT compiler, only the ARM runtimes) -->
686                 <type fullname="System.Runtime.InteropServices.ICustomMarshaler" />
688                 <!-- domain.c: mono_defaults.marshal_class -->
689                 <type fullname="System.Runtime.InteropServices.Marshal" preserve="fields" >
690                         <!-- marshal.c (mono_marshal_get_struct_to_ptr) -->
691                         <method name="StructureToPtr" />
692                 </type>
693                 
694                 <!-- domain.c: mono_defaults.safehandle_class -->
695                 <type fullname="System.Runtime.InteropServices.SafeHandle" preserve="fields">
696                         <!-- marshal.c (init_safe_handle) -->
697                         <method name="DangerousAddRef" />
698                         <method name="DangerousRelease" />
699                 </type>
700                 
701                 <!-- object-internals.h: defines MonoReflectionUnmanagedFunctionPointerAttribute, marshal.c: use it -->
702                 <type fullname="System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute" preserve="fields"/>
704                 <!-- marshal.c: mono_mb_emit_exception_marshal_directive -->
705                 <type fullname="System.Runtime.InteropServices.MarshalDirectiveException">
706                         <method signature="System.Void .ctor(System.String)" />
707                 </type>
709                 <!-- appdomain.c: mono_context_init -->
710                 <!-- marshal.c: mono_remoting_marshal_init / removed with DISABLE_REMOTING -->
711                 <type fullname="System.Runtime.Remoting.Contexts.Context" preserve="fields" feature="remoting" >
712                         <method name="get_NeedsContextSink" />
713                 </type>
715                 <!-- domain.c: mono_defaults.iremotingtypeinfo_class / removed with DISABLE_REMOTING -->
716                 <type fullname="System.Runtime.Remoting.IRemotingTypeInfo" feature="remoting">
717                         <method name="CanCastTo" />
718                 </type>
720                 <!-- domain.c: mono_defaults.asyncresult_class (Stubify can't be applied on this type) -->
721                 <!-- object.c MONO_OBJECT_SETREF in mono_async_result_new -->
722                 <!-- threadpool.c: MONO_OBJECT_SETREF in create_simple_asyncresult -->
723                 <type fullname="System.Runtime.Remoting.Messaging.AsyncResult" preserve="fields" />
725                 <!-- marshal.c: mono_remoting_marshal_init / removed with DISABLE_REMOTING -->
726                 <type fullname="System.Runtime.Remoting.Messaging.CallContext" feature="remoting" >
727                         <method name="SetCurrentCallContext" />
728                 </type>
729                 <type fullname="System.Runtime.Remoting.Messaging.MonoMethodMessage" preserve="fields" feature="remoting" >
730                         <method name="InitMessage" />
731                 </type>
732                 <type fullname="System.Runtime.Remoting.Proxies.RealProxy" preserve="fields" feature="remoting" >
733                         <method name="PrivateInvoke" />
734                         <method name="GetAppDomainTarget" />
735                 </type>
736                 <type fullname="System.Runtime.Remoting.Proxies.TransparentProxy" preserve="fields" feature="remoting" >
737                         <method name="LoadRemoteFieldNew" />
738                         <method name="StoreRemoteField" />
739                 </type>
740                 <type fullname="System.Runtime.Remoting.RemotingServices" feature="remoting" >
741                         <method name="SerializeCallData" />
742                         <method name="DeserializeCallData" />
743                         <method name="SerializeExceptionData" />
744                 </type>
746                 <!-- domain.c: mono_defaults.mono_method_message_class -->
747                 <type fullname="System.Runtime.Remoting.Messaging.MonoMethodMessage" preserve="fields">
748                         <!-- object.c: mono_message_init -->
749                         <method name="InitMessage" />
750                 </type>         
752                 <!-- domain.c: mono_defaults.real_proxy_class / removed with DISABLE_REMOTING -->
753                 <type fullname="System.Runtime.Remoting.Proxies.RealProxy" feature="remoting" />
755                 <!-- domain.c: mono_defaults.transparent_proxy_class / removed with DISABLE_REMOTING -->
756                 <type fullname="System.Runtime.Remoting.Proxies.TransparentProxy" feature="remoting" />
758                 <!-- object.c: mono_object_new_specific_checked -->
759                 <type fullname="System.Runtime.Remoting.Activation.ActivationServices" >
760                         <method name="CreateProxyForType"/>
761                 </type>
763                 <!-- exception.c (mono_get_exception_serialization) -->
764                 <type fullname="System.Runtime.Serialization.SerializationException">
765                         <!-- mono_exception_from_name_msg -->
766                         <method signature="System.Void .ctor(System.String)" />
767                 </type>
769                 <!-- domain.c: mono_defaults.runtimesecurityframe_class -->             
770                 <type fullname="System.Security.RuntimeSecurityFrame" preserve="fields" />
771                 
772                 <!-- domain.c: mono_defaults.executioncontext_class -->
773                 <type fullname="System.Threading.ExecutionContext">
774                         <!-- security-manager.c: mono_get_context_capture_method (can likely be removed) -->
775                         <method name="Capture" />
776                 </type>
778                 <!-- aot-runtime.c: mono_aot_get_method -->
779                 <type fullname="System.Threading.Interlocked">
780                         <method name="CompareExchange" />
781                         <method name="Exchange" />
782                 </type>
783                 
784                 <!-- domain.c: mono_defaults.monitor_class -->
785                 <!-- monitor.c / method-to-ir.c: Enter and Exit are only string comparison (safe to link) -->
786                 <type fullname="System.Threading.Monitor">
787                         <!-- marshal.c: mono_marshal_get_synchronized_wrapper-->
788                         <method name="Enter" />
789                         <method name="Exit" />
790                 </type>
792                 <!-- domain.c: mono_defaults.manualresetevent_class -->
793                 <type fullname="System.Threading.ManualResetEvent" >
794                         <!-- runtime access fields and setter from inherited WaitHandle -->
795                         <method signature="System.Void .ctor(System.Boolean)" />
796                 </type>
798                 <!-- exception.c (mono_get_exception_synchronization_lock) -->
799                 <type fullname="System.Threading.SynchronizationLockException">
800                         <!-- mono_exception_from_name_msg -->
801                         <method signature="System.Void .ctor(System.String)" />
802                 </type>
804                 <!-- domain.c: mono_defaults.thread_class -->
805                 <type fullname="System.Threading.Thread" preserve="fields">
806                         <method name="get_CurrentContext" />
807                 </type>
808                 
809                 <!-- domain.c: mono_defaults.internal_thread_class -->
810                 <type fullname="System.Threading.InternalThread" preserve="fields" />
811                 
812                 <!-- domain.c: mono_defaults.threadabortexception_class -->
813                 <!-- exception.c (mono_get_exception_thread_abort) -->
814                 <type fullname="System.Threading.ThreadAbortException">
815                         <!-- mono_exception_from_name -->
816                         <method signature="System.Void .ctor()" />
817                 </type>
818                 
819                 <!-- exception.c (ThreadInterruptedException) -->
820                 <type fullname="System.Threading.ThreadInterruptedException">
821                         <!-- mono_exception_from_name -->
822                         <method signature="System.Void .ctor()" />
823                 </type>
825                 <!-- exception.c (mono_get_exception_thread_abort) -->
826                 <type fullname="System.Threading.ThreadStateException">
827                         <!-- mono_exception_from_name_msg -->
828                         <method signature="System.Void .ctor(System.String)" />
829                 </type>
830                 
831                 <!-- object-internals.h: defines MonoWaitHandle, threadpool.c: gets the handle from the structure -->
832                 <type fullname="System.Threading.WaitHandle" preserve="fields">
833                         <!-- object.c: mono_wait_handle_new -->
834                         <method name="set_Handle" />
835                         <!-- object.c: mono_wait_handle_get_handle -->
836                         <field name="safe_wait_handle" />
837                 </type>
839                 <!-- threadpool-ms.c (worker_thread) -->
840                 <type fullname="System.Threading._ThreadPoolWaitCallback">
841                   <method name="PerformWaitCallback"/>
842                 </type>
844                 <!-- domain.c: mono_defaults.stringbuilder_class -->
845                 <type fullname="System.Text.StringBuilder" preserve="fields" />
847                 <!-- cominterop.c -->
848                 <type fullname="Mono.Interop.ComInteropProxy" feature="com" />
849                 <type fullname="Mono.Interop.IDispatch" feature="com" />
850                 <type fullname="Mono.Interop.IUnknown" feature="com"/>
852                 <!--
853                 Many applications rely on Mono.Runtime to exist in order to detect
854                 whether they are running on Mono or .NET. Thus we always preserve it
855                 to allow such detection logic to work, even if the class is not used
856                 directly.
857                 -->
858                 <type fullname="Mono.Runtime" />
860                 <!-- marshal.c (mono_marshal_get_native_wrapper) -->
861                 <type fullname="Mono.RuntimeStructs/HandleStackMark" />
862                 <!-- marshal.c (mono_marshal_get_native_wrapper) -->
863                 <type fullname="Mono.RuntimeStructs/MonoError" />
864         </assembly>
865 </linker>