[2020-02] Avoid following invalid pointers in mono_w32process_get_modules on Darwin...
[mono-project.git] / mono / tests / load-missing.il
blob1ae933d277bc598f764b08c4a6f4cf3796d09daf
1 //\r
2 // load-missing.il: Helper class used by load-exceptions.cs\r
3 //\r
4 \r
5 .assembly extern mscorlib\r
6 {\r
7   .publickeytoken = (B7 7A 5C 56 19 34 E0 89 )\r
8   .ver 2:0:0:0\r
9 }\r
10 .assembly extern t\r
11 {\r
12   .ver 0:0:0:0\r
13 }\r
14 .assembly extern notFoundAssembly\r
15 {\r
16   .ver 0:0:0:0\r
17 }\r
19 .assembly 'load-missing'\r
20 {\r
21   .hash algorithm 0x00008004\r
22   .ver 0:0:0:0\r
23 }\r
24 .custom instance void [mscorlib]System.Security.UnverifiableCodeAttribute::.ctor() = ( 01 00 00 00 ) \r
25 .imagebase 0x00400000\r
26 .file alignment 0x00000200\r
27 .subsystem 0x0003       // WINDOWS_CUI\r
28 .corflags 0x00000001    //  ILONLY\r
29 // Image base: 0x03310000\r
31   .class auto ansi sealed public EmptyDelegate\r
32          extends [mscorlib]System.MulticastDelegate\r
33   {\r
34     .method public hidebysig specialname rtspecialname \r
35             instance void  .ctor(object 'object',\r
36                                  native int 'method') runtime managed\r
37     {\r
38     }\r
40     .method public hidebysig newslot virtual \r
41             instance void  Invoke() runtime managed\r
42     {\r
43     }\r
45     .method public hidebysig newslot virtual \r
46             instance class [mscorlib]System.IAsyncResult \r
47             BeginInvoke(class [mscorlib]System.AsyncCallback callback,\r
48                         object 'object') runtime managed\r
49     {\r
50     }\r
52     .method public hidebysig newslot virtual \r
53             instance void  EndInvoke(class [mscorlib]System.IAsyncResult result) runtime managed\r
54     {\r
55     }\r
57   }\r
59   .class auto ansi sealed public DelegateWithMissingArgument\r
60          extends [mscorlib]System.MulticastDelegate\r
61   {\r
62     .method public hidebysig specialname rtspecialname \r
63             instance void  .ctor(object 'object',\r
64                                  native int 'method') runtime managed\r
65     {\r
66     }\r
68     .method public hidebysig newslot virtual \r
69             instance void  Invoke(class [t]Missing t) runtime managed\r
70     {\r
71     }\r
73     .method public hidebysig newslot virtual \r
74             instance class [mscorlib]System.IAsyncResult \r
75             BeginInvoke(class [mscorlib]System.AsyncCallback callback,\r
76                         object 'object') runtime managed\r
77     {\r
78     }\r
80     .method public hidebysig newslot virtual \r
81             instance void  EndInvoke(class [mscorlib]System.IAsyncResult result) runtime managed\r
82     {\r
83     }\r
85   }\r
87 .class public auto ansi beforefieldinit LoadMissing\r
88        extends [mscorlib]System.Object\r
89 {\r
91   .method public hidebysig static void  missing_class() cil managed\r
92   {\r
93    \r
94     .maxstack  1\r
95     .locals init (class [t]Missing.Foo1 V_0)\r
96     IL_0000:  nop\r
97     IL_0001:  newobj     instance void [t]Missing.Foo1::.ctor()\r
98     IL_0006:  stloc.0\r
99     IL_0007:  ret\r
100   }\r
102   .method public hidebysig static void  missing_method() cil managed\r
103   {\r
104    \r
105     .maxstack  1\r
106     .locals init (class [t]Missing.Foo2 V_0)\r
107     IL_0000:  nop\r
108     IL_0001:  newobj     instance void [t]Missing.Foo2::.ctor()\r
109     IL_0006:  stloc.0\r
110     IL_0007:  ldloc.0\r
111     IL_0008:  callvirt   instance void [t]Missing.Foo2::missing()\r
112     IL_000d:  nop\r
113     IL_000e:  ret\r
114   }\r
116   .method public hidebysig static void  missing_ctor() cil managed\r
117   {\r
118    \r
119     .maxstack  2\r
120     .locals init (class [t]Missing.Foo2 V_0)\r
121     IL_0000:  nop\r
122     IL_0001:  ldc.i4.5\r
123     IL_0002:  newobj     instance void [t]Missing.Foo2::.ctor(int32)\r
124     IL_0007:  stloc.0\r
125     IL_0008:  ret\r
126   }\r
128   .method public hidebysig static void  missing_call() cil managed\r
129   {\r
130    \r
131     .maxstack  1\r
132     .locals init (class [t]Missing.Foo2 V_0)\r
133     IL_0000:  nop\r
134     IL_0001:  newobj     instance void [t]Missing.Foo2::.ctor()\r
135     IL_0006:  stloc.0\r
136     IL_0007:  ldloc.0\r
137     IL_0008:  callvirt   instance void [t]Missing.Foo2::missing()\r
138     IL_000d:  nop\r
139     IL_000e:  ret\r
140   }\r
142   .method public hidebysig static void  missing_jmp() cil managed\r
143   {\r
144    \r
145     .maxstack  1\r
146     .locals init (class [t]Missing.Foo2 V_0)\r
148         jmp void [t]Missing.Foo2::static_missing ()\r
149   }\r
151   .method public hidebysig static void  missing_ldftn() cil managed\r
152   {\r
153    \r
154     .maxstack  3\r
155     .locals init (class [t]Missing.Foo2 V_0,\r
156              class EmptyDelegate V_1)\r
157     IL_0000:  nop\r
158     IL_0001:  newobj     instance void [t]Missing.Foo2::.ctor()\r
159     IL_0006:  stloc.0\r
160     IL_0007:  ldloc.0\r
161     IL_0008:  ldftn      instance void [t]Missing.Foo2::missing()\r
162     IL_000e:  newobj     instance void EmptyDelegate::.ctor(object,\r
163                                                             native int)\r
164     IL_0013:  stloc.1\r
165     IL_0014:  ret\r
166   }\r
168   .method public hidebysig static void  missing_callvirt() cil managed\r
169   {\r
170    \r
171     .maxstack  1\r
172     .locals init (class [t]Missing.Foo5 V_0)\r
173     IL_0000:  nop\r
174     IL_0001:  newobj     instance void [t]Missing.Foo5::.ctor()\r
175     IL_0006:  stloc.0\r
176     IL_0007:  ldloc.0\r
177     IL_0008:  callvirt   instance void [t]Missing.Foo5::missing_virtual()\r
178     IL_000d:  nop\r
179     IL_000e:  ret\r
180   }\r
182   .method public hidebysig static object \r
183           missing_castclass_helper(object o) cil managed\r
184   {\r
185    \r
186     .maxstack  1\r
187     .locals init (object V_0)\r
188     IL_0000:  nop\r
189     IL_0001:  ldarg.0\r
190     IL_0002:  castclass  [t]Missing.Foo1\r
191     IL_0007:  stloc.0\r
192     IL_0008:  br.s       IL_000a\r
194     IL_000a:  ldloc.0\r
195     IL_000b:  ret\r
196   }\r
198   .method public hidebysig static void\r
199           missing_castclass() cil managed\r
200   {\r
201    \r
202     .maxstack  1\r
203     .locals init (object V_0)\r
205                 ldnull\r
206         call       object LoadMissing::missing_castclass_helper(object)\r
207                 pop\r
208                 ret\r
209   }\r
211         .method public hidebysig static void\r
212                                         missing_cpobj () cil managed\r
213         {\r
214                 .maxstack 8\r
215                 .locals init (object v_0, object v_1)\r
217                 ldloca v_0\r
218                 ldloca v_1\r
219                 cpobj [t]Missing.Foo1\r
220                 ret\r
221         }\r
223         .method public hidebysig static void\r
224                                         missing_initobj () cil managed\r
225         {\r
226                 .maxstack 8\r
227                 .locals init (object v_0)\r
229                 ldloca v_0\r
230                 initobj [t]Missing.Foo1\r
231                 ret\r
232         }\r
234   .method public hidebysig static bool  missing_isinst_helper(object o) cil managed\r
235   {\r
236    \r
237     .maxstack  2\r
238     .locals init (bool V_0)\r
239     IL_0000:  nop\r
240     IL_0001:  ldarg.0\r
241     IL_0002:  isinst     [t]Missing.Foo1\r
242     IL_0007:  ldnull\r
243     IL_0008:  cgt.un\r
244     IL_000a:  stloc.0\r
245     IL_000b:  br.s       IL_000d\r
247     IL_000d:  ldloc.0\r
248     IL_000e:  ret\r
249   }\r
251   .method public hidebysig static void\r
252           missing_isinst() cil managed\r
253   {\r
254    \r
255     .maxstack  1\r
256     .locals init (object V_0)\r
258                 ldnull\r
259         call       bool LoadMissing::missing_isinst_helper(object)\r
260                 pop\r
261                 ret\r
262   }\r
264   .method public hidebysig static void  missing_ldfld() cil managed\r
265   {\r
266    \r
267     .maxstack  1\r
268     .locals init (class [t]Missing.Foo4 V_0,\r
269              int32 V_1)\r
270     IL_0000:  nop\r
271     IL_0001:  newobj     instance void [t]Missing.Foo4::.ctor()\r
272     IL_0006:  stloc.0\r
273     IL_0007:  ldloc.0\r
274     IL_0008:  ldfld     int32 [t]Missing.Foo4::i\r
275     IL_000d:  stloc.1\r
276     IL_000e:  nop\r
277     IL_000f:  nop\r
278     IL_0013:  ret\r
279   }\r
281   .method public hidebysig static void  missing_ldflda() cil managed\r
282   {\r
283    \r
284     .maxstack  1\r
285     .locals init (class [t]Missing.Foo4 V_0,\r
286              int32& pinned V_1)\r
287     IL_0000:  nop\r
288     IL_0001:  newobj     instance void [t]Missing.Foo4::.ctor()\r
289     IL_0006:  stloc.0\r
290     IL_0007:  ldloc.0\r
291     IL_0008:  ldflda     int32 [t]Missing.Foo4::i\r
292     IL_000d:  stloc.1\r
293     IL_000e:  nop\r
294     IL_000f:  nop\r
295     IL_0010:  ldc.i4.0\r
296     IL_0011:  conv.u\r
297     IL_0012:  stloc.1\r
298     IL_0013:  ret\r
299   }\r
301   .method public hidebysig static void  missing_ldsfld() cil managed\r
302   {\r
303    \r
304     .maxstack  1\r
305     .locals init (int32 V_0)\r
306     IL_0000:  nop\r
307     IL_0001:  ldsfld    int32 [t]Missing.Foo3::i\r
308     IL_0006:  stloc.0\r
309     IL_0007:  nop\r
310     IL_0008:  nop\r
311     IL_0009:  ldc.i4.0\r
312     IL_000a:  conv.u\r
313     IL_000b:  stloc.0\r
314     IL_000c:  ret\r
315   }\r
317   .method public hidebysig static void  missing_ldsflda() cil managed\r
318   {\r
319    \r
320     .maxstack  1\r
321     .locals init (int32& pinned V_0)\r
322     IL_0000:  nop\r
323     IL_0001:  ldsflda    int32 [t]Missing.Foo3::i\r
324     IL_0006:  stloc.0\r
325     IL_0007:  nop\r
326     IL_0008:  nop\r
327     IL_0009:  ldc.i4.0\r
328     IL_000a:  conv.u\r
329     IL_000b:  stloc.0\r
330     IL_000c:  ret\r
331   }\r
333   .method public hidebysig static void  missing_ldtoken_type() cil managed\r
334   {\r
335    \r
336     .maxstack  8\r
337     IL_0000:  nop\r
338     IL_0001:  ldtoken    [t]Missing.Foo1\r
339     IL_0006:  call       class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)\r
340     IL_000b:  call       void [mscorlib]System.Console::WriteLine(object)\r
341     IL_0010:  nop\r
342     IL_0011:  ret\r
343   }\r
345   .method public hidebysig static void  missing_ldtoken_method() cil managed\r
346   {\r
347    \r
348     .maxstack  8\r
349     IL_0000:  nop\r
350     IL_0008:  ldtoken method instance void [t]Missing.Foo2::missing()\r
351     IL_0010:  pop\r
352     IL_0011:  ret\r
353   }\r
355   .method public hidebysig static void missing_assembly_in_fieldref () cil managed\r
356   {\r
357         .maxstack 8\r
358         ldc.i4.0\r
359         stsfld  int32 [t]X::a\r
360         ret\r
361   }\r
363   .method public hidebysig static void missing_assembly_in_call () cil managed\r
364   {\r
365         .maxstack 8\r
366         call void class [t]Gtk.Application::Init()\r
367         ret\r
368   }\r
370   .method public hidebysig static void missing_assembly_in_newobj () cil managed\r
371   {\r
372         .maxstack 8\r
373         newobj instance void class [mscorlib]System.Dingus::.ctor()\r
374         pop\r
375         ret\r
376   }\r
378   .method public hidebysig static void missing_external_type_reference_on_parameter() cil managed\r
379   {\r
380     .maxstack 8\r
381     ldstr "Hello"\r
382     call void class [mscorlib]System.String::Trim(class [mscorlib]MissingType)\r
383     ret\r
384   }\r
386   .method public hidebysig static void  missing_ldtoken_field() cil managed\r
387   {\r
388    \r
389     .maxstack  8\r
390     IL_0000:  nop\r
391     IL_0008:  ldtoken field int32 [t]Missing.Foo4::i\r
392     IL_0010:  pop\r
393     IL_0011:  ret\r
394   }\r
396   .method public hidebysig static void  missing_ldvirtftn() cil managed\r
397   {\r
398    \r
399     .maxstack  3\r
400     .locals init (class [t]Missing.Foo5 V_0,\r
401              class EmptyDelegate V_1)\r
402     IL_0000:  nop\r
403     IL_0001:  newobj     instance void [t]Missing.Foo5::.ctor()\r
404     IL_0006:  stloc.0\r
405     IL_0007:  ldloc.0\r
406     IL_0008:  dup\r
407     IL_0009:  ldvirtftn  instance void [t]Missing.Foo5::missing_virtual()\r
408     IL_000f:  newobj     instance void EmptyDelegate::.ctor(object,\r
409                                                             native int)\r
410     IL_0014:  stloc.1\r
411     IL_0015:  ret\r
412   }\r
414   .method public hidebysig static object missing_newarr_helper() cil managed\r
415   {\r
416    \r
417     .maxstack  1\r
418     .locals init (object V_0)\r
419     IL_0000:  nop\r
420     IL_0001:  ldc.i4.s   10\r
421     IL_0003:  newarr     [t]Missing.Foo1\r
422     IL_0008:  stloc.0\r
423     IL_0009:  br.s       IL_000b\r
425     IL_000b:  ldloc.0\r
426     IL_000c:  ret\r
427   }\r
429   .method public hidebysig static void  missing_newarr() cil managed\r
430   {\r
431    \r
432     .maxstack  8\r
433     IL_0000:  nop\r
434     IL_0001:  call       object LoadMissing::missing_newarr_helper()\r
435     IL_0006:  pop\r
436     IL_0007:  ret\r
437   }\r
439   .method public hidebysig static void  missing_newobj() cil managed\r
440   {\r
441    \r
442     .maxstack  2\r
443     .locals init (class [t]Missing.Foo2 V_0)\r
444     IL_0000:  nop\r
445     IL_0001:  ldc.i4.5\r
446     IL_0002:  newobj     instance void [t]Missing.Foo2::.ctor(int32)\r
447     IL_0007:  stloc.0\r
448     IL_0008:  ret\r
449   }\r
451   .method public hidebysig static void  missing_refanyval() cil managed\r
452   {\r
453    \r
454     .maxstack  2\r
455     .locals init (int32 v_0)\r
457                 ldloca v_0\r
458                 mkrefany int32\r
459                 refanyval [t]Missing.Foo1\r
460                 pop\r
461                 ret\r
462         }\r
464   .method public hidebysig static void  missing_sizeof() cil managed\r
465   {\r
466    \r
467     .maxstack  8\r
468     IL_0000:  nop\r
469     IL_0001:  sizeof    [t]Missing.Foo1\r
470     IL_0010:  pop\r
471     IL_0011:  ret\r
472   }\r
474   .method public hidebysig static void  missing_stfld() cil managed\r
475   {\r
476    \r
477     .maxstack  2\r
478     .locals init (class [t]Missing.Foo4 V_0)\r
479     IL_0000:  nop\r
480     IL_0001:  newobj     instance void [t]Missing.Foo4::.ctor()\r
481     IL_0006:  stloc.0\r
482     IL_0007:  ldloc.0\r
483     IL_0008:  ldc.i4.5\r
484     IL_0009:  stfld      int32 [t]Missing.Foo4::i\r
485     IL_000e:  ret\r
486   }\r
488   .method public hidebysig static void  missing_stsfld() cil managed\r
489   {\r
490    \r
491     .maxstack  8\r
492     IL_0000:  nop\r
493     IL_0001:  ldc.i4.5\r
494     IL_0002:  stsfld     int32 [t]Missing.Foo3::i\r
495     IL_0007:  ret\r
496   }\r
498   .method public hidebysig static void missing_unbox () cil managed\r
499   {\r
500           .maxstack 8\r
501         \r
502           ldnull\r
503       unbox [t]Missing.Foo6\r
504       pop\r
505       ret\r
506   }     \r
508   .method public hidebysig static void missing_unbox_any () cil managed\r
509   {\r
510           .maxstack 8\r
511         \r
512                 ldnull\r
513       unbox.any [t]Missing.Foo6\r
514       pop\r
515       ret\r
516   }     \r
518         .method public hidebysig static void missing_local () cil managed\r
519         {\r
520                 .maxstack 8\r
521                 .locals init (class [t]Missing.Foo1 v_0)\r
523                 ret\r
524         }       \r
526         .method public static void delegate_target () cil managed\r
527         {\r
528                 ret\r
529         }\r
531         .method public hidebysig static void missing_delegate_ctor_argument () cil managed         \r
532         {\r
533             .maxstack  3\r
534                 .locals init (class [t]Missing.Foo2 V_0,\r
535                                   class EmptyDelegate V_1)\r
536     IL_0000:  nop\r
537     IL_0001:  newobj     instance void LoadMissing::.ctor()\r
538     IL_0006:  stloc.0\r
539     IL_0007:  ldloc.0\r
540     IL_0008:  ldftn      void LoadMissing::delegate_target()\r
541     IL_000e:  newobj     instance void DelegateWithMissingArgument::.ctor(object,\r
542                                                                           native int)\r
543     IL_0013:  stloc.1\r
544     IL_0014:  ret\r
545         }\r
547   .method public hidebysig specialname rtspecialname \r
548           instance void  .ctor() cil managed\r
549   {\r
550    \r
551     .maxstack  8\r
552     IL_0000:  ldarg.0\r
553     IL_0001:  call       instance void [mscorlib]System.Object::.ctor()\r
554     IL_0006:  ret\r
555   }\r
559 .class public auto ansi beforefieldinit BrokenClass\r
560        extends [t]Missing.Foo1\r
564 .class public auto ansi CCtorClass\r
565         extends [mscorlib]System.Object     \r
566   {                                         \r
568     // method line 48\r
569     .method public hidebysig  specialname  rtspecialname \r
570            instance default void '.ctor' ()  cil managed \r
571     {                                                    \r
572         .maxstack 8                                      \r
573         IL_0000:  ldarg.0                                \r
574         IL_0001:  call instance void object::'.ctor'()   \r
575         IL_0006:  ret                                    \r
576     } // end of method CCtorClass::.ctor                 \r
578     // method line 49\r
579     .method private static  specialname  rtspecialname \r
580            default void '.cctor' ()  cil managed       \r
581     {                                                  \r
582     IL_0000:  nop\r
583     IL_0001:  newobj     instance void [t]Missing.Foo2::.ctor()\r
584     IL_0006:  stloc.0\r
585     IL_0007:  ldloc.0\r
586     IL_0008:  callvirt   instance void [t]Missing.Foo2::missing()\r
587     IL_000d:  nop\r
588     IL_000e:  ret\r
589     } // end of method CCtorClass::.cctor                                    \r
591     // method line 50\r
592     .method public static  hidebysig \r
593            default void foo ()  cil managed \r
594     {                                       \r
595         .maxstack 8                         \r
596         IL_0000:  ret                       \r
597     } // end of method CCtorClass::foo      \r
599   } // end of class CCtorClass\r
601 .class interface public auto ansi abstract TestIface\r
603         .method public virtual  hidebysig  newslot abstract instance default int32 foo ()  cil managed  {}\r
606 .class public auto ansi beforefieldinit BadMethodOverride1\r
608         .method public virtual newslot default int32 foo ()\r
609         {\r
610                 .override class TestIface::foo\r
611                 ldc.i4.0\r
612                 ret\r
613         }\r
615         .method public hidebysig  specialname  rtspecialname  instance default void '.ctor' ()  cil managed \r
616     {\r
617                 ldarg.0                                \r
618                 call instance void object::'.ctor'()   \r
619                 ret                                    \r
620         }\r
623 .class public auto ansi beforefieldinit RandomBaseClass\r
625         .method public virtual newslot default int32 foo ()\r
626         {\r
627                 ldc.i4.0\r
628                 ret\r
629         }\r
631         .method public static int32 foo2 ()\r
632         {\r
633                 ldc.i4.0\r
634                 ret\r
635         }\r
637         .method public hidebysig  specialname  rtspecialname  instance default void '.ctor' ()  cil managed \r
638     {\r
639                 ldarg.0                                \r
640                 call instance void object::'.ctor'()   \r
641                 ret                                    \r
642         }\r
645 .class public auto ansi beforefieldinit BadMethodOverride2\r
647         .method public virtual newslot default int32 foo ()\r
648         {\r
649                 .override class RandomBaseClass::foo\r
650                 ldc.i4.0\r
651                 ret\r
652         }\r
654         .method public hidebysig  specialname  rtspecialname  instance default void '.ctor' ()  cil managed \r
655     {\r
656                 ldarg.0                                \r
657                 call instance void object::'.ctor'()   \r
658                 ret                                    \r
659         }\r
662 .class public auto ansi beforefieldinit BadMethodOverride3 implements TestIface\r
664         .method public default int32 foo ()\r
665         {\r
666                 .override class TestIface::foo\r
667                 ldc.i4.0\r
668                 ret\r
669         }\r
671         .method public hidebysig  specialname  rtspecialname  instance default void '.ctor' ()  cil managed \r
672     {\r
673                 ldarg.0                                \r
674                 call instance void object::'.ctor'()   \r
675                 ret                                    \r
676         }\r
679 .class public auto ansi beforefieldinit BadMethodOverride4 extends RandomBaseClass\r
681         .method public virtual default int32 foo2 ()\r
682         {\r
683                 .override class RandomBaseClass::foo2\r
684                 ldc.i4.0\r
685                 ret\r
686         }\r
688         .method public hidebysig  specialname  rtspecialname  instance default void '.ctor' ()  cil managed \r
689     {\r
690                 ldarg.0                                \r
691                 call instance void RandomBaseClass::'.ctor'()   \r
692                 ret                                    \r
693         }\r
696 .class public auto ansi beforefieldinit BadOverridesDriver\r
698         .method public static void bad_override1 ()\r
699         {\r
700                 newobj instance void BadMethodOverride1::.ctor()\r
701                 pop\r
702                 ret\r
703         }\r
705         .method public static void bad_override2 ()\r
706         {\r
707                 newobj instance void BadMethodOverride2::.ctor()\r
708                 pop\r
709                 ret\r
710         }\r
712         .method public static void bad_override3 ()\r
713         {\r
714                 newobj instance void BadMethodOverride3::.ctor()\r
715                 pop\r
716                 ret\r
717         }\r
719         .method public static void bad_override4 ()\r
720         {\r
721                 newobj instance void BadMethodOverride4::.ctor()\r
722                 pop\r
723                 ret\r
724         }\r
727 .class public auto ansi beforefieldinit FieldWithMissingType\r
729         .field  public class [t]Missing BrokenField\r
730     .field  public static int32 WorkingField\r
733 .class public auto ansi beforefieldinit FieldWithMissingCustomAttribute\r
735     .field      public object f\r
736     .custom     instance void class [notFoundAssembly]SomeAttribute::'.ctor'() = (01 00 00 00 ) // ....\r