4 #include <mono/metadata/appdomain.h>
5 #include <mono/metadata/assembly.h>
6 #include <mono/metadata/debug-helpers.h>
7 #include <mono/metadata/object.h>
8 #include <mono/jit/jit.h>
10 extern void* mono_aot_module_mscorlib_info
;
11 extern void* mono_aot_module_System_Core_info
;
12 extern void* mono_aot_module_System_info
;
13 extern void* mono_aot_module_Mono_Posix_info
;
14 extern void* mono_aot_module_System_Configuration_info
;
15 extern void* mono_aot_module_System_Security_info
;
16 extern void* mono_aot_module_System_Xml_info
;
17 /* extern void* mono_aot_module_System_Threading_info; */
18 extern void* mono_aot_module_Mono_Security_info
;
19 extern void* mono_aot_module_Mono_Simd_info
;
20 extern void* mono_aot_module_TestDriver_info
;
22 extern void* mono_aot_module_basic_info
;
23 extern void* mono_aot_module_basic_float_info
;
24 extern void* mono_aot_module_basic_long_info
;
25 extern void* mono_aot_module_basic_calls_info
;
26 extern void* mono_aot_module_basic_simd_info
;
27 extern void* mono_aot_module_objects_info
;
28 extern void* mono_aot_module_arrays_info
;
29 extern void* mono_aot_module_basic_math_info
;
30 extern void* mono_aot_module_exceptions_info
;
31 extern void* mono_aot_module_devirtualization_info
;
32 extern void* mono_aot_module_generics_info
;
33 extern void* mono_aot_module_generics_variant_types_info
;
34 extern void* mono_aot_module_basic_simd_info
;
35 /* extern void* mono_aot_module_thread_stress_info; */
38 extern void mono_aot_register_module(void *aot_info
);
39 extern void mono_aot_init(void);
40 extern void mono_jit_set_aot_only(mono_bool aot_only
);
41 extern MonoDomain
* mini_init (const char *filename
, const char *runtime_version
);
44 void try_one(char *mname
) {
54 char *cstr_arg
= "20";
56 mono_jit_set_aot_only(1);
57 domain
= mono_jit_init(mname
);
58 printf("mono domain: %p\n", domain
);
60 ma
= mono_domain_assembly_open(domain
, mname
);
62 printf("ERROR: could not open mono assembly\n");
65 printf("opened mono assembly: %p\n", ma
);
67 mi
= mono_assembly_get_image(ma
);
68 printf("mono image: %p\n", mi
);
70 mo
= mono_string_new(domain
, cstr_arg
);
71 mc
= mono_class_from_name(mono_get_corlib(), "System", "String");
72 printf("string class: %p\n", mc
);
73 arg_array
= mono_array_new(domain
, mc
, 1);
74 mono_array_setref(arg_array
, 0, mo
);
77 mmd
= mono_method_desc_new("Tests:Main()", 1);
78 mm
= mono_method_desc_search_in_image(mmd
, mi
);
80 mmd
= mono_method_desc_new("Tests:Main(string[])", 1);
81 mm
= mono_method_desc_search_in_image(mmd
, mi
);
83 mmd
= mono_method_desc_new("SimdTests:Main(string[])", 1);
84 mm
= mono_method_desc_search_in_image(mmd
, mi
);
86 printf("Couldn't find Tests:Main(), Tests:Main(string[]) or SimdTests:Main(string[])\n");
91 printf("mono desc method: %p\n", mmd
);
92 printf("mono method: %p\n", mm
);
94 mo
= mono_runtime_invoke(mm
, NULL
, args
, NULL
);
95 printf("mono object: %p\n", mo
);
97 mono_jit_cleanup(domain
);
100 int main(int argc
, char *argv
[]) {
101 mono_aot_register_module(mono_aot_module_mscorlib_info
);
102 mono_aot_register_module(mono_aot_module_TestDriver_info
);
103 mono_aot_register_module(mono_aot_module_System_Core_info
);
104 mono_aot_register_module(mono_aot_module_System_info
);
105 mono_aot_register_module(mono_aot_module_Mono_Posix_info
);
106 mono_aot_register_module(mono_aot_module_System_Configuration_info
);
107 mono_aot_register_module(mono_aot_module_System_Security_info
);
108 mono_aot_register_module(mono_aot_module_System_Xml_info
);
109 mono_aot_register_module(mono_aot_module_Mono_Security_info
);
110 /* mono_aot_register_module(mono_aot_module_System_Threading_info); */
111 mono_aot_register_module(mono_aot_module_Mono_Simd_info
);
113 mono_aot_register_module(mono_aot_module_basic_info
);
114 mono_aot_register_module(mono_aot_module_basic_float_info
);
115 mono_aot_register_module(mono_aot_module_basic_long_info
);
116 mono_aot_register_module(mono_aot_module_basic_calls_info
);
117 mono_aot_register_module(mono_aot_module_basic_simd_info
);
118 mono_aot_register_module(mono_aot_module_objects_info
);
119 mono_aot_register_module(mono_aot_module_arrays_info
);
120 mono_aot_register_module(mono_aot_module_basic_math_info
);
121 mono_aot_register_module(mono_aot_module_exceptions_info
);
122 mono_aot_register_module(mono_aot_module_devirtualization_info
);
124 mono_aot_register_module(mono_aot_module_generics_info);
125 mono_aot_register_module(mono_aot_module_generics_variant_types_info);
128 /* mono_aot_register_module(mono_aot_module_thread_stress_info); */
130 printf("no test specified; running basic.exe\n");
131 printf("==========================\n");
132 try_one("basic.exe");
133 printf("==========================\n");
135 printf("\nProgram %s %s output:\n", argv
[0], argv
[1]);
136 printf("==========================\n\n");
145 #include <mono/metadata/appdomain.h>
146 #include <mono/metadata/assembly.h>
147 #include <mono/metadata/debug-helpers.h>
148 #include <mono/metadata/object.h>
149 #include <mono/jit/jit.h>
151 extern void* mono_aot_module_mscorlib_info
;
152 extern void* mono_aot_module_System_Core_info
;
153 extern void* mono_aot_module_System_info
;
154 extern void* mono_aot_module_Mono_Posix_info
;
155 extern void* mono_aot_module_System_Configuration_info
;
156 extern void* mono_aot_module_System_Security_info
;
157 extern void* mono_aot_module_System_Xml_info
;
158 /* extern void* mono_aot_module_System_Threading_info; */
159 extern void* mono_aot_module_Mono_Security_info
;
160 extern void* mono_aot_module_Mono_Simd_info
;
161 extern void* mono_aot_module_TestDriver_info
;
163 extern void* mono_aot_module_basic_info
;
164 extern void* mono_aot_module_basic_float_info
;
165 extern void* mono_aot_module_basic_long_info
;
166 extern void* mono_aot_module_basic_calls_info
;
167 extern void* mono_aot_module_basic_simd_info
;
168 extern void* mono_aot_module_objects_info
;
169 extern void* mono_aot_module_arrays_info
;
170 extern void* mono_aot_module_basic_math_info
;
171 extern void* mono_aot_module_exceptions_info
;
172 extern void* mono_aot_module_devirtualization_info
;
173 extern void* mono_aot_module_generics_info
;
174 extern void* mono_aot_module_generics_variant_types_info
;
175 extern void* mono_aot_module_basic_simd_info
;
176 /* extern void* mono_aot_module_thread_stress_info; */
179 extern void mono_aot_register_module(void *aot_info
);
180 extern void mono_aot_init(void);
181 extern void mono_jit_set_aot_only(mono_bool aot_only
);
182 extern MonoDomain
* mini_init (const char *filename
, const char *runtime_version
);
185 void try_one(char *mname
) {
193 MonoArray
*arg_array
;
195 char *cstr_arg
= "20";
197 mono_jit_set_aot_only(1);
198 domain
= mono_jit_init(mname
);
199 printf("mono domain: %p\n", domain
);
201 ma
= mono_domain_assembly_open(domain
, mname
);
203 printf("ERROR: could not open mono assembly\n");
206 printf("opened mono assembly: %p\n", ma
);
208 mi
= mono_assembly_get_image(ma
);
209 printf("mono image: %p\n", mi
);
211 mo
= mono_string_new(domain
, cstr_arg
);
212 mc
= mono_class_from_name(mono_get_corlib(), "System", "String");
213 printf("string class: %p\n", mc
);
214 arg_array
= mono_array_new(domain
, mc
, 1);
215 mono_array_setref(arg_array
, 0, mo
);
218 mmd
= mono_method_desc_new("Tests:Main()", 1);
219 mm
= mono_method_desc_search_in_image(mmd
, mi
);
221 mmd
= mono_method_desc_new("Tests:Main(string[])", 1);
222 mm
= mono_method_desc_search_in_image(mmd
, mi
);
224 mmd
= mono_method_desc_new("SimdTests:Main(string[])", 1);
225 mm
= mono_method_desc_search_in_image(mmd
, mi
);
227 printf("Couldn't find Tests:Main(), Tests:Main(string[]) or SimdTests:Main(string[])\n");
232 printf("mono desc method: %p\n", mmd
);
233 printf("mono method: %p\n", mm
);
235 mo
= mono_runtime_invoke(mm
, NULL
, args
, NULL
);
236 printf("mono object: %p\n", mo
);
238 mono_jit_cleanup(domain
);
241 int main(int argc
, char *argv
[]) {
242 mono_aot_register_module(mono_aot_module_mscorlib_info
);
243 mono_aot_register_module(mono_aot_module_TestDriver_info
);
244 mono_aot_register_module(mono_aot_module_System_Core_info
);
245 mono_aot_register_module(mono_aot_module_System_info
);
246 mono_aot_register_module(mono_aot_module_Mono_Posix_info
);
247 mono_aot_register_module(mono_aot_module_System_Configuration_info
);
248 mono_aot_register_module(mono_aot_module_System_Security_info
);
249 mono_aot_register_module(mono_aot_module_System_Xml_info
);
250 mono_aot_register_module(mono_aot_module_Mono_Security_info
);
251 /* mono_aot_register_module(mono_aot_module_System_Threading_info); */
252 mono_aot_register_module(mono_aot_module_Mono_Simd_info
);
254 mono_aot_register_module(mono_aot_module_basic_info
);
255 mono_aot_register_module(mono_aot_module_basic_float_info
);
256 mono_aot_register_module(mono_aot_module_basic_long_info
);
257 mono_aot_register_module(mono_aot_module_basic_calls_info
);
258 mono_aot_register_module(mono_aot_module_basic_simd_info
);
259 mono_aot_register_module(mono_aot_module_objects_info
);
260 mono_aot_register_module(mono_aot_module_arrays_info
);
261 mono_aot_register_module(mono_aot_module_basic_math_info
);
262 mono_aot_register_module(mono_aot_module_exceptions_info
);
263 mono_aot_register_module(mono_aot_module_devirtualization_info
);
265 mono_aot_register_module(mono_aot_module_generics_info);
266 mono_aot_register_module(mono_aot_module_generics_variant_types_info);
269 /* mono_aot_register_module(mono_aot_module_thread_stress_info); */
271 printf("no test specified; running basic.exe\n");
272 printf("==========================\n");
273 try_one("basic.exe");
274 printf("==========================\n");
276 printf("\nProgram %s %s output:\n", argv
[0], argv
[1]);
277 printf("==========================\n\n");