Skip to content

Commit 0f181a9

Browse files
lewurmvargaz
authored andcommitted
[arm64_32] fix pointer size in CallInfo (mono#16970)
Note that in the output below `a`, `b`, etc. are NSObjects, so they are really passed as pointer. Before: ``` * thread #1, name = 'tid_303', queue = 'com.apple.main-thread', stop reason = breakpoint 1.1 frame #0: 0x04f301d4 aWatchOSExtension`::xamarin_localized_string_format_9(format="hello%@%@%@%@%@%@%@%@%@", a=0, b=1, c=2, d=3, e=4, f=5, g=6, h=7, i=0x00000000) at nsstring-localization.m:81:9 78 void * 79 xamarin_localized_string_format_9 (NSString *format, id a, id b, id c, id d, id e, id f, id g, id h, id i) 80 { -> 81 return [NSString localizedStringWithFormat: format, a, b, c, d, e, f, g, h, i]; 82 } 83 84 } (lldb) mbt 4 * thread #1 * frame #0: 0x04f301d4 aWatchOSExtension`::xamarin_localized_string_format_9(format="hello%@%@%@%@%@%@%@%@%@", a=0, b=1, c=2, d=3, e=4, f=5, g=6, h=7, i=0x00000000) at nsstring-localization.m:81:9 frame #1: 0x04d9984c aWatchOSExtension`interp_to_native_trampoline + 156 frame #2: 0x04f41d5c aWatchOSExtension`ves_pinvoke_method(frame=0x05167af8, sig=0x1518afd0, addr=(aWatchOSExtension`::xamarin_localized_string_format_9(NSString *, id, id, id, id, id, id, id, id, id) at nsstring-localization.m:80), string_ctor=0, context=0x14550960, save_last_error=0) at interp.c:1411:2 [opt] NSString::xamarin_localized_string_format_9 @ 68 "calli.nat" || frame #3: 0x04f3bfa4 aWatchOSExtension`interp_exec_method_full(frame=0x05167d38, context=<unavailable>, clause_args=0x00000000, error=0x05168540) at interp.c:3290:5 [opt] ``` After: ``` * thread #1, name = 'tid_303', queue = 'com.apple.main-thread', stop reason = breakpoint 1.1 frame #0: 0x04c2c1e0 aWatchOSExtension`::xamarin_localized_string_format_9(format="hello%@%@%@%@%@%@%@%@%@", a=0, b=1, c=2, d=3, e=4, f=5, g=6, h=7, i=8) at nsstring-localization.m:81:9 78 void * 79 xamarin_localized_string_format_9 (NSString *format, id a, id b, id c, id d, id e, id f, id g, id h, id i) 80 { -> 81 return [NSString localizedStringWithFormat: format, a, b, c, d, e, f, g, h, i]; 82 } 83 84 } ```
1 parent 12d3dce commit 0f181a9

File tree

1 file changed

+12
-1
lines changed

1 file changed

+12
-1
lines changed

mono/mini/mini-arm64.c

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -241,7 +241,7 @@ mono_arch_init (void)
241241

242242
mono_arm_gsharedvt_init ();
243243

244-
#if defined(TARGET_IOS)
244+
#if defined(TARGET_IOS) || defined(TARGET_WATCHOS)
245245
ios_abi = TRUE;
246246
#endif
247247
}
@@ -1241,17 +1241,28 @@ add_param (CallInfo *cinfo, ArgInfo *ainfo, MonoType *t)
12411241
case MONO_TYPE_U2:
12421242
add_general (cinfo, ainfo, 2, FALSE);
12431243
break;
1244+
#ifdef MONO_ARCH_ILP32
1245+
case MONO_TYPE_I:
1246+
#endif
12441247
case MONO_TYPE_I4:
12451248
add_general (cinfo, ainfo, 4, TRUE);
12461249
break;
1250+
#ifdef MONO_ARCH_ILP32
1251+
case MONO_TYPE_U:
1252+
case MONO_TYPE_PTR:
1253+
case MONO_TYPE_FNPTR:
1254+
case MONO_TYPE_OBJECT:
1255+
#endif
12471256
case MONO_TYPE_U4:
12481257
add_general (cinfo, ainfo, 4, FALSE);
12491258
break;
1259+
#ifndef MONO_ARCH_ILP32
12501260
case MONO_TYPE_I:
12511261
case MONO_TYPE_U:
12521262
case MONO_TYPE_PTR:
12531263
case MONO_TYPE_FNPTR:
12541264
case MONO_TYPE_OBJECT:
1265+
#endif
12551266
case MONO_TYPE_U8:
12561267
case MONO_TYPE_I8:
12571268
add_general (cinfo, ainfo, 8, FALSE);

0 commit comments

Comments
 (0)