emit_objc_selectors (MonoAotCompile *acfg)
{
int i;
+ char symbol [128];
if (!acfg->objc_selectors || acfg->objc_selectors->len == 0)
return;
fprintf (acfg->fp, ".section __DATA,__objc_selrefs,literal_pointers,no_dead_strip\n");
fprintf (acfg->fp, ".align 3\n");
for (i = 0; i < acfg->objc_selectors->len; ++i) {
- fprintf (acfg->fp, "L_OBJC_SELECTOR_REFERENCES_%d:\n", i);
- fprintf (acfg->fp, ".long L_OBJC_METH_VAR_NAME_%d\n", i);
+ sprintf (symbol, "L_OBJC_SELECTOR_REFERENCES_%d", i);
+ emit_label (acfg, symbol);
+ sprintf (symbol, "L_OBJC_METH_VAR_NAME_%d", i);
+ emit_pointer (acfg, symbol);
+
}
fprintf (acfg->fp, ".section __TEXT,__cstring,cstring_literals\n");
for (i = 0; i < acfg->objc_selectors->len; ++i) {
mini_emit_inst_for_method (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSignature *fsig, MonoInst **args)
{
MonoInst *ins = NULL;
-
+
static MonoClass *runtime_helpers_class = NULL;
if (! runtime_helpers_class)
runtime_helpers_class = mono_class_from_name (mono_defaults.corlib,
* all inputs:
* http://everything2.com/?node_id=1051618
*/
- } else if ((!strcmp (cmethod->klass->image->assembly->aname.name, "MonoMac") ||
+ } else if (((!strcmp (cmethod->klass->image->assembly->aname.name, "MonoMac") ||
!strcmp (cmethod->klass->image->assembly->aname.name, "monotouch")) &&
- !strcmp (cmethod->klass->name_space, "XamCore.ObjCRuntime") &&
- !strcmp (cmethod->klass->name, "Selector")) {
+ !strcmp (cmethod->klass->name_space, "XamCore.ObjCRuntime") &&
+ !strcmp (cmethod->klass->name, "Selector")) ||
+ (!strcmp (cmethod->klass->image->assembly->aname.name, "Xamarin.iOS") &&
+ !strcmp (cmethod->klass->name_space, "ObjCRuntime") &&
+ !strcmp (cmethod->klass->name, "Selector"))
+ ) {
#ifdef MONO_ARCH_HAVE_OBJC_GET_SELECTOR
- if (!strcmp (cmethod->klass->name, "GetHandle") && fsig->param_count == 1 &&
+ if (!strcmp (cmethod->name, "GetHandle") && fsig->param_count == 1 &&
(args [0]->opcode == OP_GOT_ENTRY || args [0]->opcode == OP_AOTCONST) &&
cfg->compile_aot) {
MonoInst *pi;