So m5_enableDebugFlag is a function which contains your special instruction followed by a mov pc, lr (standard return). I can see two issues: * your special instruction change lr where the return address is stored so your function will not return where it should. This is likely the cause for your crash * You are instrumenting the compilation process not the generated code which was your goal if I understood correctly.
Rodolph. On 26 February 2015 at 21:24, Malek Musleh <malek.mus...@gmail.com> wrote: > The purpose of My m5_enableDebugFlag () is to enable tracing > (dissaembly, cache behavior, etc) within the simulator. > > A separate macro within the simulator is invoked for each one of these > magic instructions: > > SIMPLE_OP(m5_enableDebugFlag, enable_debugflag_func, 0) > #define enable_debugflag_func 0x5e > > In this case the enable_debugflag_func is 0x5e. It ends up moving the > pc to the lr register. > > > .macro simple_op name, func, subfunc > .align 2 > .globl \name > \name: > #ifdef __thumb__ > .short 0xEE00 | \func > .short 0x0110 | (\subfunc << 12) > #else > .long 0xEE000110 | (\func << 16) | (\subfunc << 12) > #endif > mov pc,lr > > > I notice in the v8 code comment at the beginning of the ::GenerateMiss > routines: > // The return address is in lr. > Isolate* isolate = masm->isolate(); > > Could it be that the magic instruction is messing up the return > address for that call? My goal is to analyze system behavior when > handling the IC misses, so thats why I placed the instrumentation > there. I could move the instrumentation calls up 1 level or somewhere > else you recommend so that I can enable/disable logging. > > Malek > > On Thu, Feb 26, 2015 at 4:10 PM, Rodolph Perfetta > <rodolph.perfe...@gmail.com> wrote: > > What does m5_enableDebugFlag(); do? Just emit a 32-bit instruction? Where > > to? > > > > For the builtin simulator, on an intel machine simply build the arm > target: > > make arm.release. When the build system detect the mismatch between the > host > > tool ISA and the target ISA it automatically build the simulator. > > > > On 26 February 2015 at 20:04, Malek Musleh <malek.mus...@gmail.com> > wrote: > >> > >> Hi Rudolph, > >> > >> Yes, I have been able to run a clean version of v8 on this other ARM > >> simulator (gem5). I added support to the gem5 simulator to handle this > >> unused opcode. > >> > >> I think it might be your second suggestion. In one of my > >> instrumentations, I inserted the function after a __Push(), where in > >> other places I placed it at the top of the function body. > >> > >> Inside KeyedStoreIC and StoreIC::Generate Miss() > >> > >> void KeyedStoreIC::GenerateMiss(MacroAssembler* masm) { > >> // Push receiver, key and value for runtime call. > >> __ Push(StoreDescriptor::ReceiverRegister(), > >> StoreDescriptor::NameRegister(), > >> StoreDescriptor::ValueRegister()); > >> > >> // start pipeline viewer tracing > >> m5_enableDebugFlag(); > >> > >> ExternalReference ref = > >> ExternalReference(IC_Utility(kKeyedStoreIC_Miss), > masm->isolate()); > >> __ TailCallExternalReference(ref, 3, 1); > >> > >> > >> Would placing it after the __Push() cause some corruption on the stack? > >> > >> Separately, I could not find documentation on how to use/run the > >> built-in arm simulator of v8. Can you provide an example? > >> > >> > >> On Thu, Feb 26, 2015 at 2:46 PM, Rodolph Perfetta > >> <rodolph.perfe...@gmail.com> wrote: > >> > If I understood correctly you are using a modified arm simulator (not > >> > the V8 > >> > built-in one) to run V8, and this simulator returns "illegal > >> > instruction". > >> > V8 does not trap illegal instructions so the options I can think of: > >> > * your ARM simulator does not support ARMv7 with VFP, which is a > >> > requirement for V8 > >> > * your modification to V8 are corrupting code generation and the pc > end > >> > up > >> > in some data. > >> > Did you try running the test on a clean version of V8? > >> > > >> > Rodolph. > >> > > >> > On 26 February 2015 at 16:17, Malek Musleh <malek.mus...@gmail.com> > >> > wrote: > >> >> > >> >> Hi, > >> >> > >> >> I've instrumented parts of the v8 source code to call a function from > >> >> an > >> >> external library, and have been able to get it compiled successfully, > >> >> but am > >> >> running into issues at runtime. Specifically, I am running v8 inside > an > >> >> arm > >> >> simulator, and the instrumentation calls I added are recognized by > the > >> >> arm > >> >> simulator (i extend ununsed opcode for functionality). However, at > >> >> runtime I > >> >> get the v8 error printed to my simulated terminal. > >> >> > >> >> /tmp/script: line 13: 3207 Illegal instruction > >> >> /system/v8/arm.release/shell run-deltablue.js > >> >> > >> >> > >> >> I suspect that because the instrumented call is getting compiled down > >> >> to > >> >> the unused opcode, v8 doesn't recognize it and traps. I've grepped > >> >> through > >> >> the source code, but couldn't find where it traps based on an illegal > >> >> instruction. When encountering this specific opcode of my > instrumented > >> >> calls, I want to simply return and not exit out of the run. > >> >> > >> >> > >> >> Thanks, > >> >> > >> >> Malek > >> >> > >> >> -- > >> >> -- > >> >> v8-users mailing list > >> >> v8-users@googlegroups.com > >> >> http://groups.google.com/group/v8-users > >> >> --- > >> >> You received this message because you are subscribed to the Google > >> >> Groups > >> >> "v8-users" group. > >> >> To unsubscribe from this group and stop receiving emails from it, > send > >> >> an > >> >> email to v8-users+unsubscr...@googlegroups.com. > >> >> For more options, visit https://groups.google.com/d/optout. > >> > > >> > > >> > -- > >> > -- > >> > v8-users mailing list > >> > v8-users@googlegroups.com > >> > http://groups.google.com/group/v8-users > >> > --- > >> > You received this message because you are subscribed to a topic in the > >> > Google Groups "v8-users" group. > >> > To unsubscribe from this topic, visit > >> > https://groups.google.com/d/topic/v8-users/yIwVNMf060A/unsubscribe. > >> > To unsubscribe from this group and all its topics, send an email to > >> > v8-users+unsubscr...@googlegroups.com. > >> > For more options, visit https://groups.google.com/d/optout. > >> > >> -- > >> -- > >> v8-users mailing list > >> v8-users@googlegroups.com > >> http://groups.google.com/group/v8-users > >> --- > >> You received this message because you are subscribed to the Google > Groups > >> "v8-users" group. > >> To unsubscribe from this group and stop receiving emails from it, send > an > >> email to v8-users+unsubscr...@googlegroups.com. > >> For more options, visit https://groups.google.com/d/optout. > > > > > > -- > > -- > > v8-users mailing list > > v8-users@googlegroups.com > > http://groups.google.com/group/v8-users > > --- > > You received this message because you are subscribed to a topic in the > > Google Groups "v8-users" group. > > To unsubscribe from this topic, visit > > https://groups.google.com/d/topic/v8-users/yIwVNMf060A/unsubscribe. > > To unsubscribe from this group and all its topics, send an email to > > v8-users+unsubscr...@googlegroups.com. > > For more options, visit https://groups.google.com/d/optout. > > -- > -- > v8-users mailing list > v8-users@googlegroups.com > http://groups.google.com/group/v8-users > --- > You received this message because you are subscribed to the Google Groups > "v8-users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to v8-users+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. > -- -- v8-users mailing list v8-users@googlegroups.com http://groups.google.com/group/v8-users --- You received this message because you are subscribed to the Google Groups "v8-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to v8-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.