<html><body><div style="color:#000; background-color:#fff; font-family:lucida console, sans-serif;font-size:10pt"><div>Hi,</div><div><br></div><div style="color: rgb(0, 0, 0); font-size: 13.3333px; font-family: lucida console,sans-serif; background-color: transparent; font-style: normal;">I'm new to Mono so I'm not sure if this is the right list. Please point me in the right direction if this isn't the place to ask these questions.</div><div style="color: rgb(0, 0, 0); font-size: 13.3333px; font-family: lucida console,sans-serif; background-color: transparent; font-style: normal;"><br></div><div style="color: rgb(0, 0, 0); font-size: 13.3333px; font-family: lucida console,sans-serif; background-color: transparent; font-style: normal;">I'm trying to get AOT compiled code to run on an embedded AMD 64 system. <br></div><div style="color: rgb(0, 0, 0); font-size: 13.3333px; font-family: lucida console,sans-serif; background-color: transparent; font-style:
 normal;"><br></div><div style="color: rgb(0, 0, 0); font-size: 13.3333px; font-family: lucida console,sans-serif; background-color: transparent; font-style: normal;">It is crashing the first time it hits a method call requiring an IMT because the pointer is incorrect</div><div style="color: rgb(0, 0, 0); font-size: 13.3333px; font-family: lucida console,sans-serif; background-color: transparent; font-style: normal;"><br></div><div style="color: rgb(0, 0, 0); font-size: 13.3333px; font-family: lucida console,sans-serif; background-color: transparent; font-style: normal;">To make things more interesting I'm working with a branch of mono 2.8 (I think) and I don't have any symbols for the AOT compiled code at run time,</div><div style="color: rgb(0, 0, 0); font-size: 13.3333px; font-family: lucida console,sans-serif; background-color: transparent; font-style: normal;"><br></div><div style="color: rgb(0, 0, 0); font-size: 13.3333px; font-family: lucida
 console,sans-serif; background-color: transparent; font-style: normal;">The problem shows up in<br></div><div style="color: rgb(0, 0, 0); font-size: 13.3333px; font-family: lucida console,sans-serif; background-color: transparent; font-style: normal;"><br></div><div style="color: rgb(0, 0, 0); font-size: 13.3333px; font-family: lucida console,sans-serif; background-color: transparent; font-style: normal;">common_call_trampoline(mgreg_t* regs, guint8* code, gpointer arg, guint8* tramp, MonoVTable* vt, gpointer* vtable_slot, gboolean need_rgctx_tramp) Line 320    C++<br></div><div style="color: rgb(0, 0, 0); font-size: 13.3333px; font-family: lucida console,sans-serif; background-color: transparent; font-style: normal;">    if (m == MONO_FAKE_IMT_METHOD) {<br>        MonoMethod *impl_method;<br>        MonoObject *this_arg;<br><br>   
     /* we get the interface method because mono_convert_imt_slot_to_vtable_slot ()<br>         * needs the signature to be able to find the this argument<br>         */<br>        m = mono_arch_find_imt_method (regs, code);</div><div style="color: rgb(0, 0, 0); font-size: 13.3333px; font-family: lucida console,sans-serif; background-color: transparent; font-style: normal;"><br></div><div style="color: rgb(0, 0, 0); font-size: 13.3333px; font-family: lucida console,sans-serif; background-color: transparent; font-style: normal;">...</div><div style="color: rgb(0, 0, 0); font-size: 13.3333px; font-family: lucida console,sans-serif; background-color: transparent; font-style: normal;"><br></div><div style="color: rgb(0, 0, 0); font-size: 13.3333px; font-family: lucida console,sans-serif; background-color: transparent; font-style:
 normal;"><br></div><div style="color: rgb(0, 0, 0); font-size: 13.3333px; font-family: lucida console,sans-serif; background-color: transparent; font-style: normal;">At this point m points to bad data. The address is the address returned by mono_get_lmf_addr() <br></div><div style="color: rgb(0, 0, 0); font-size: 13.3333px; font-family: lucida console,sans-serif; background-color: transparent; font-style: normal;"><br></div><div style="color: rgb(0, 0, 0); font-size: 13.3333px; font-family: lucida console,sans-serif; background-color: transparent; font-style: normal;">From the map file I think the function calling the trampoline is System_IO_StreamReader_Initialize_System_IO_Stream_System_Text_Encoding_bool_int</div><div style="color: rgb(0, 0, 0); font-size: 13.3333px; font-family: lucida console,sans-serif; background-color: transparent; font-style: normal;">from System_IO_StreamReader__cctor</div><div style="color: rgb(0, 0, 0); font-size: 13.3333px;
 font-family: lucida console,sans-serif; background-color: transparent; font-style: normal;"><br></div><div style="color: rgb(0, 0, 0); font-size: 13.3333px; font-family: lucida console,sans-serif; background-color: transparent; font-style: normal;">I'm not sure what function it is trying to call (the vt parameter is for System.IO.NullStream)</div><div style="color: rgb(0, 0, 0); font-size: 13.3333px; font-family: lucida console,sans-serif; background-color: transparent; font-style: normal;"><br></div><div style="color: rgb(0, 0, 0); font-size: 13.3333px; font-family: lucida console,sans-serif; background-color: transparent; font-style: normal;"><br></div><div style="color: rgb(0, 0, 0); font-size: 13.3333px; font-family: lucida console,sans-serif; background-color: transparent; font-style: normal;"><br></div><div style="color: rgb(0, 0, 0); font-size: 13.3333px; font-family: lucida console,sans-serif; background-color: transparent; font-style:
 normal;">My questions are:</div><div style="color: rgb(0, 0, 0); font-size: 13.3333px; font-family: lucida console,sans-serif; background-color: transparent; font-style: normal;"><br></div><div style="color: rgb(0, 0, 0); font-size: 13.3333px; font-family: lucida console,sans-serif; background-color: transparent; font-style: normal;">Is the lmf address the correct value for the return of mono_arch_find_imt_method? If not what should it be?</div><div style="color: rgb(0, 0, 0); font-size: 13.3333px; font-family: lucida console,sans-serif; background-color: transparent; font-style: normal;">What generates the IMT for AOT compiled code? <br></div><div style="color: rgb(0, 0, 0); font-size: 13.3333px; font-family: lucida console,sans-serif; background-color: transparent; font-style: normal;">What sets the IMT address table at run time and where is it stored? I haven't seen any breakpoints on IMT functions get hit at runtime.</div><div style="color: rgb(0,
 0, 0); font-size: 13.3333px; font-family: lucida console,sans-serif; background-color: transparent; font-style: normal;"><br></div><div style="color: rgb(0, 0, 0); font-size: 13.3333px; font-family: lucida console,sans-serif; background-color: transparent; font-style: normal;">Thanks</div><div style="color: rgb(0, 0, 0); font-size: 13.3333px; font-family: lucida console,sans-serif; background-color: transparent; font-style: normal;"><br></div><div style="color: rgb(0, 0, 0); font-size: 13.3333px; font-family: lucida console,sans-serif; background-color: transparent; font-style: normal;">Gavin<br></div><div style="color: rgb(0, 0, 0); font-size: 13.3333px; font-family: lucida console,sans-serif; background-color: transparent; font-style: normal;"><br></div><div style="color: rgb(0, 0, 0); font-size: 13.3333px; font-family: lucida console,sans-serif; background-color: transparent; font-style: normal;"><br></div><div style="color: rgb(0, 0, 0); font-size:
 13.3333px; font-family: lucida console,sans-serif; background-color: transparent; font-style: normal;"><br></div></div></body></html>