[lkml]   [2009]   [Oct]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    SubjectRe: [PATCH -v4 9/9] tracing: add function graph tracer support for MIPS
    On Sun, 2009-10-25 at 14:37 +0100, Patrik Kluba wrote:
    > On Sun, Oct 25, 2009 at 11:48 AM, Wu Zhangjin <> wrote:
    > >
    > > do you mean if enabling PROFILE_BEFORE_PROLOGUE, there will be some
    > > problems with module support using -mlong-calls?
    > >
    > No, there are no problems. I've tested it on friday, and function
    > graph tracing was working correctly.
    > I meant to say that 4.2.1 we use does not generate correct profile
    > calls from kernel modules. Maybe this issue was fixed in newer
    > releases, I did not check. I've applied a patch (don't remember where
    > have I found that, maybe it was created by you) to our toolchain
    > several months ago.

    I have never sent a patch to gcc before :-) but perhaps somebody have
    fixed it for us. so, the left job is hoping somebody enable
    PROFILE_BEFORE_PROLOGUE for MIPS in the next version of gcc if there is
    no side effect, and then we can hijack the return address of non-leaf &
    leaf function directly in the same way in _mcount.

    > I was thinking about dynamic tracing, and I think a toolchain patch
    > can be avoided completely. We only need to make difference between
    > "jal _mcount" and "jalr v1"-style mcount calls when replacing them
    > with "nop" instructions in the code-patching function called by
    > ftrace_convert_nops(). This can be done in 2 ways:
    > 1) keeping old instructions - takes extra memory, not an option
    > 2) using 2 separate instructions to replace with. One of them could be
    > the normal NOP instruction, which expands to "sll r0, r0, 0". For the
    > other we could use "sll r0, r0, 1" but as it has already special
    > meaning (SSNOP) a better candidate could be something like "sll r1,
    > r1, 0". This way we can decide which instruction to patch in when
    > tracing is enabled for a function, eg. when the code patcher
    > encounters a "sll r0, r0, 0" it emits a function call using JAL and
    > when it encounters "sll r1, r1, 0" it emits a function call using
    > "JALR v1".

    If only thinking about dynamic tracing, no patch for gcc needed,
    -mlong-calls is enough, I have done it via a "stupid" trick, will send
    the patchset out asap :-)

    Wu Zhangjin

     \ /
      Last update: 2009-10-25 15:25    [W:0.028 / U:7.092 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site