From: David Daney <ddaney@caviumnetworks.com>
To: Wu Zhangjin <wuzhangjin@gmail.com>
Cc: linux-mips@linux-mips.org, ralf@linux-mips.org, rostedt@goodmis.org
Subject: Re: [RFC 2/2] MIPS: tracing/ftrace: Fixes mcount_regex for modules
Date: Fri, 22 Oct 2010 14:10:09 -0700 [thread overview]
Message-ID: <4CC1FDB1.8050404@caviumnetworks.com> (raw)
In-Reply-To: <485f5af61fae72dc9c1f0e31b1b5f1f57a5e7ed8.1287779153.git.wuzhangjin@gmail.com>
On 10/22/2010 01:58 PM, Wu Zhangjin wrote:
> From: Wu Zhangjin<wuzhangjin@gmail.com>
>
> In some situations(with related kernel config and gcc options), the
> modules may have the same address space as the core kernel space, so
> mcount_regex for modules should also match R_MIPS_26.
>
I think Steve is rewriting this bit to be a pure C program. Is this
file even used anymore? If so for how long?
David Daney
> Signed-off-by: Wu Zhangjin<wuzhangjin@gmail.com>
> ---
> scripts/recordmcount.pl | 46 +++++++++++++++++++++++++++++-----------------
> 1 files changed, 29 insertions(+), 17 deletions(-)
>
> diff --git a/scripts/recordmcount.pl b/scripts/recordmcount.pl
> index e67f054..e9c1a0f 100755
> --- a/scripts/recordmcount.pl
> +++ b/scripts/recordmcount.pl
> @@ -299,14 +299,33 @@ if ($arch eq "x86_64") {
> $cc .= " -m64";
> $objcopy .= " -O elf64-sparc";
> } elsif ($arch eq "mips") {
> - # To enable module support, we need to enable the -mlong-calls option
> - # of gcc for module, after using this option, we can not get the real
> - # offset of the calling to _mcount, but the offset of the lui
> - # instruction or the addiu one. herein, we record the address of the
> - # first one, and then we can replace this instruction by a branch
> - # instruction to jump over the profiling function to filter the
> - # indicated functions, or swith back to the lui instruction to trace
> - # them, which means dynamic tracing.
> + #<For kernel>
> + # To disable tracing, just replace "jal _mcount" with nop;
> + # to enable tracing, replace back. so, the offset 14 is
> + # needed to be recorded.
> + #
> + # 10: 03e0082d move at,ra
> + # 14: 0c000000 jal 0
> + # 14: R_MIPS_26 _mcount
> + # 14: R_MIPS_NONE *ABS*
> + # 14: R_MIPS_NONE *ABS*
> + # 18: 00020021 nop
> + #
> + #<For module>
> + #
> + # If no long call(-mlong-calls), the same to kernel.
> + #
> + # If the module space differs from the kernel space, long
> + # call is needed, as a result, the address of _mcount is
> + # needed to be recorded in a register and then jump from
> + # module space to kernel space via "jalr<register>". To
> + # disable tracing, "jalr<register>" can be replaced by
> + # nop; to enable tracing, replace it back. Since the
> + # offset of "jalr<register>" is not easy to be matched,
> + # the offset of the 1st _mcount below is recorded and to
> + # disable tracing, "lui v1, 0x0" is substituted with "b
> + # label", which jumps over "jalr<register>"; to enable
> + # tracing, replace it back.
> #
> # c: 3c030000 lui v1,0x0
> # c: R_MIPS_HI16 _mcount
> @@ -318,19 +337,12 @@ if ($arch eq "x86_64") {
> # 10: R_MIPS_NONE *ABS*
> # 14: 03e0082d move at,ra
> # 18: 0060f809 jalr v1
> + # label:
> #
> - # for the kernel:
> - #
> - # 10: 03e0082d move at,ra
> - # 14: 0c000000 jal 0<loongson_halt>
> - # 14: R_MIPS_26 _mcount
> - # 14: R_MIPS_NONE *ABS*
> - # 14: R_MIPS_NONE *ABS*
> - # 18: 00020021 nop
> if ($is_module eq "0") {
> $mcount_regex = "^\\s*([0-9a-fA-F]+): R_MIPS_26\\s+_mcount\$";
> } else {
> - $mcount_regex = "^\\s*([0-9a-fA-F]+): R_MIPS_HI16\\s+_mcount\$";
> + $mcount_regex = "^\\s*([0-9a-fA-F]+): R_MIPS_(HI16|26)\\s+_mcount\$";
> }
> $objdump .= " -Melf-trad".$endian."mips ";
>
next prev parent reply other threads:[~2010-10-22 21:10 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-10-22 20:58 [RFC 0/2] Fixes the modules support of dynamic function tracer for MIPS Wu Zhangjin
2010-10-22 20:58 ` [RFC 1/2] MIPS: tracing/ftrace: Replace in_module() with a generic in_kernel_space() Wu Zhangjin
2010-10-22 21:31 ` David Daney
2010-10-23 5:51 ` wu zhangjin
2010-10-27 11:11 ` wu zhangjin
2010-10-22 20:58 ` [RFC 2/2] MIPS: tracing/ftrace: Fixes mcount_regex for modules Wu Zhangjin
2010-10-22 21:10 ` David Daney [this message]
2010-10-22 21:31 ` Steven Rostedt
2010-10-23 6:03 ` wu zhangjin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4CC1FDB1.8050404@caviumnetworks.com \
--to=ddaney@caviumnetworks.com \
--cc=linux-mips@linux-mips.org \
--cc=ralf@linux-mips.org \
--cc=rostedt@goodmis.org \
--cc=wuzhangjin@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.