inlining the profiling hook (__cyg_profile_func_enter)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,
i have used the -finstrument-functions option in gcc and found in
quite useful for getting the call trace at runtime.
while fiddling with it for a while, i found that the trace info can be
made more meaningful if (somehow) i can add the args passed to the
function.

iam working in the mips version of gcc (3.3.1) and in this
architecture the function params are passed in registers (the first
four args in first four registers). i tried to get the params from
within the profile function but since the profile function itself
takes 2 args, the first 2 register contents are pushed onto stack and
i am not to get it from the stack. i tried getting the stack pointer
address by writing inline assembly but it seems that the location of
the args (when pushed onto stack) varies according to the size of the
args.

then i thought i'll try to inline the profile function. is this possible?
i mean, can i enable inline expansion of the __cyg_profile_func_enter
function at every function entry? if this is possible, then i can
access the registers directly in the profile function, and get the
args.

i added the inline keyword and always_inline attribute but in vain;
the execution always jumps to __cyg_profile_func_enter  and i lose the
register contents (they get pushed to stack making it difficult to
access from the profile function)
i presume that the inlining phase happens after the jump hooks to
profile functions are added at function entry/exit. is this correct?
If inlining this function is not possible, then is there any way to
find out the params received by the function being profiled?

thanks in advance
thulasidhar


[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux