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.

Reply via email to